Является ли * {position: относительный} плохой идеей? - PullRequest
17 голосов
/ 23 февраля 2010

Это может вызвать у меня невыразимое горе, если я наклею это наверху моей таблицы стилей?

* {position:relative}

Ответы [ 5 ]

11 голосов
/ 23 февраля 2010

Это вызовет у меня невыразимое горе, если я наклею это наверху моей таблицы стилей?

Да. Например, вы больше не сможете работать с абсолютно позиционированными элементами - абсолютное позиционирование всегда будет относительно родительского элемента, что почти никогда не является желаемым результатом.

Я могу представить, что в настройках z-index есть еще больше побочных эффектов.

Не очень хорошая идея, ИМО.

И нет, position: static - это , а не устарело, в конце концов, это значение по умолчанию:)

3 голосов
/ 18 сентября 2015

Просто чтобы дать другую сторону медали, я довольно часто использовал эту настройку и нашел ее полезной. Основным преимуществом является простота использования свойств позиционирования (сверху, слева, справа, снизу) без необходимости все время определять относительное позиционирование для родителя.

Это правда, что этот параметр сделает невозможным использование абсолютного позиционирования по отношению к чему-либо другому, кроме родительского права выше, но я считаю, что это хорошая вещь. Так как первый родительский элемент с позицией «относительный» является визуально де-факто родителем любого дочернего элемента с «позицией: абсолютный», логично сделать так, чтобы они были прямыми дочерними элементами и в иерархии HTML.

Короче говоря * {position:relative} заключает соглашение, упрощающее рассуждение о том, как работает позиционирование.

Предостережение 1 : Событие, если новое соглашение упрощает работу для новичков, отличается от того, что используют опытные CSS-разработчики. Приготовьтесь к противостоянию, если вы начнете использовать это в большом проекте со многими разработчиками внешнего интерфейса.

Предупреждение 2 : проблема производительности должна быть проверена должным образом. Я пытался включать и выключать этот параметр на некоторых крупных сайтах, не замечая никакой разницы, но реальных тестов с действительными числами не существует (насколько мне известно).

Последнее замечание: первая строка во втором абзаце не совсем верна. Вы всегда можете перезаписать определения подстановочными знаками, установив position: static некоторый узел среднего уровня, если вам действительно нужно.

3 голосов
/ 23 сентября 2010

Подстановочные знаки могут вызывать проблемы с производительностью, если их не использовать осторожно. Вероятно, это не относится к вашему примеру, но это плохая привычка.

Но, что более важно, редко можно убедительно сказать, что вы хотите, чтобы какое-либо поведение применялось к всем элементам.

При относительном позиционировании вы в лучшем случае ничего не достигнете, а в худшем случае создадите для себя множество головных болей, пытаясь устранить неполадки, которые обычно "просто работают".

Относительное позиционирование определенно имеет свои применения. Примените это, когда вам это нужно.

3 голосов
/ 23 февраля 2010

Это плохая идея, imho, поскольку она меняет поведение элементов по умолчанию без четкой индикации, и это будет иметь непредвиденные последствия.

Если вы действительно хотите, чтобы большинство элементов располагались относительно, вы можете подумать о том, чтобы просто сделать div и аналогичный родственник.

2 голосов
/ 23 февраля 2010

Ответ на заглавный вопрос:

Это текущая спецификация 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, поэтому вы будете изменять свойство для каждого элемента на странице. Лучшее, чего вы можете достичь - это ничто. Хуже всего то, что вы, вероятно, будете создавать странные побочные эффекты, которые вы даже не заметите с первого взгляда.

Кроме того (это чистое предположение на моей стороне), это не может быть хорошим для производительности. Я уверен, что движки рендеринга оптимизированы для большинства статических элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...