Является ли {{позиция: относительная} плохая идея?
Неужели это вызовет у меня невыразимое горе, если я буду придерживаться его в верхней части моей таблицы стилей?
* {position:relative}
Ответы
Ответ 1
Подстановочные знаки могут вызывать проблемы с производительностью, если их не использовать. Вероятно, это не так в вашем примере, но это плохая привычка развиваться.
Но что более важно, редко можно сказать, что вы хотите, чтобы любое поведение применялось ко всем элементам.
С относительным позиционированием вы в лучшем случае ничего не достигнете и в худшем случае создадите много головных болей для себя, пытаясь устранить проблемы, которые обычно "просто работают".
Относительное позиционирование определенно имеет свое применение. Примените его, когда вам это нужно.
Ответ 2
Неужели это вызовет у меня невыразимое горе, если я буду придерживаться его в верхней части моей таблицы стилей?
Да. Например, вы больше не сможете работать с абсолютно позиционируемыми элементами - абсолютное позиционирование всегда будет относиться к родительскому элементу, что почти никогда не является желаемым результатом.
Я мог представить, что есть еще больше полей побочных эффектов настроек z-index
.
Не очень хорошая идея ИМО.
И нет, position: static
не устарел, ведь это значение по умолчанию:)
Ответ 3
Это плохая идея imho, поскольку она изменяет поведение элементов по умолчанию без четкой индикации, и это будет иметь непредвиденные последствия.
Если вы действительно хотите, чтобы большинство элементов располагалось относительно друг друга, вам может потребоваться подумать только о том, чтобы сделать div и аналогичный родственник.
Ответ 4
Ответ на вопрос заголовка:
Это текущая спецификация CSS 2.1:
http://www.w3.org/TR/CSS2/visuren.html#propdef-position
Принятые значения включают static
, relative
, absolute
, fixed
и inherit
.
Я не уверен в CSS 3 (он все еще работает), но они, похоже, не упоминают static
:
http://www.w3.org/Style/CSS/current-work#positioning
Что бы ни было, мне все равно не было бы:)
Вопрос автоответчика:
По умолчанию используется static
, поэтому вы должны изменить свойство для каждого отдельного элемента на странице. Лучшее, чего вы можете достичь, - ничто. Хуже то, что вы, вероятно, создадите странные побочные эффекты, которые вы даже не заметите с первого взгляда.
Также (это чисто спекуляция на моей стороне), это не может быть хорошо для производительности. Я уверен, что механизмы рендеринга оптимизированы для большинства статических элементов.
Ответ 5
Чтобы дать другую сторону монеты, я использовал эту настройку довольно много и нашел ее полезной. Главным преимуществом является простота использования свойств позиционирования (сверху, влево, вправо, снизу) без необходимости постоянно определять относительное позиционирование для родителя.
Верно, что этот параметр сделает невозможным использование абсолютного позиционирования по отношению к чему-либо другому, кроме родителя прямо выше, но я считаю, что это хорошо. Поскольку первый родитель с "position: relative" является визуально де-факто родителем любого дочернего элемента с "position: absolute", тогда только логично сделать их прямыми дочерними элементами также в иерархии HTML.
Короче * {position:relative}
заставляет соглашение, которое упрощает рассуждение о том, как работает позиционирование.
Caveat 1: событие, если новое соглашение упрощает работу с новыми посетителями, оно отличается от того, что используются опытные разработчики CSS. Подготовьтесь к противостоянию, если вы начнете использовать это в большом проекте со многими разработчиками frontend.
Caveat 2: проблема производительности должна быть проверена правильно. Я попытался включить и отключить этот параметр на некоторых крупных сайтах, не заметив никаких различий, но реальных тестов с реальными числами не существует (насколько мне известно).
Заключительное примечание. Первая строка во втором абзаце не совсем верна. Вы всегда можете перезаписать определения подстановочных знаков, установив position: static
на средний уровень node, если вам действительно нужно.