2012-05-03 4 views
0

это законное использование * селектора, и если да, то есть ссылки на то, как браузеры поддерживают это? это, кажется, работает во всех браузеры у меня есть тест, но я не использовал более старые или IEcss asterisk селектор поддержки

body * { 
    float: left; 
} 

ответ

1

Да это! Звездочка является подстановочным знаком, она выберет все элементы внутри этого элемента DOM, который вы установили.

Например, если я вы хотите применить атрибут всего сайта:

* { 
    attribute: value; 
} 

Или как вы сделали это с помощью специального DOM элемента!

element * { 
    attribute: value; 
    } 

Вы также могли бы использовать что-то вроде:

* { 
    attribute: value; 
    } 

* * { ... } 

* * * { ... } 

* div * { ... } 

который немного сложно ... как рекурсии.

+0

, но обратите внимание, что '* *' не дает никакой пользы от '*', поскольку последний уже выбирает все элементы dom, а не только верхний уровень. –

+0

Зависит от стиля! * {border: 1px solid red} для всех элементов верхнего уровня * * {border: 2px dotted green} для всех подэлементов каждого элемента верхнего уровня ... так что МОЖЕТ быть полезным! ;) – creativeby

+0

, за исключением того, что '* *' также выбирает элементы верхнего уровня. http://jsfiddle.net/9mUKV/1/ –

1

Да, ваш пример является законным, если не деспотичным использованием селектора *. Это приведет к тому, что каждый дочерний элемент элемента body будет размещен слева.

+0

пытаясь очистить мой css, поэтому я его использую. может быть, это неправильный способ обойти это? У меня есть все элементы нижнего колонтитула с поплавком, оставшиеся на них, поэтому он казался излишним иметь его в каждом. – Lukasz

+0

Тогда вы можете попробовать что-то вроде '#footer * {...}' - (смена #footer на соответствующий селектор) для таргетинга только тех элементов в нижнем колонтитуле. Это было бы/могло бы быть превосходным использованием селектора '*'. 'body *' обычно резервируется для сброса css (http://www.cssreset.com/) и т. д., но на самом деле они часто применяются только на уровне '*' без селектора 'body'. –

2

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

Все браузеры поддерживают это, источник: http://www.quirksmode.org/css/contents.html#t10

+0

*: focus { контур: нет; } - это только одно его использование. Я ненавижу этот хром, очерчивает вещи, поэтому я добавил это к моим стилям сброса css. – Lukasz