2013-03-25 5 views
2

Почему мы не можем группировки CSS как ..Группировка CSS селекторы & :: Выбор

p::selection , p::-moz-selection 
{background:transparent;} 

Демо:http://jsfiddle.net/l2aelba/MRyVC/1/

Почему мы должны выбрать один за другим, как

p::selection  {background:transparent;} 
p::-moz-selection {background:transparent;} 

Демонстрация:http://jsfiddle.net/l2aelba/MRyVC/

Кто-то может расширить эту проблему?

+0

Некоторые браузеры просто странные реализации. То же самое для полноэкранного селектора. – alex

+1

Я думаю, потому что IE не распознает 'moz' и то же самое для других браузеров. –

+0

и Chrome и Firefox не работают http://jsfiddle.net/l2aelba/MRyVC/1/ – l2aelba

ответ

6

Браузеры expected уронить все правила, если какая-либо часть селектора недействительно:

Селектор (см также раздел селекторы) состоит из всего до (но не включая) первый слева изогнутая скобка ({). Селектор всегда идет вместе с блоком декларации. Когда пользовательский агент не может разобрать селектор (т. Е. Он недействителен CSS 2.1), он должен игнорировать селектор и следующий блок объявлений (если есть).

В CSS 2.1 особое значение имеет запятая (,) в селекторах. Однако, поскольку неизвестно, может ли запятая получить другие значения в будущих обновлениях CSS, весь оператор следует игнорировать, если в селекторе есть ошибка, хотя остальная часть селектора может выглядеть разумно в CSS 2.1.

(Обратите внимание, что, насколько браузер обеспокоен, «действует CSS 2.1» на самом деле означает «селектор, который понятен и поддерживается браузером».)

Поскольку без Mozilla браузеров не понимаете, ::-moz-selection, они должны отказаться от правила. Поскольку браузеры Mozilla не понимают ::selection, они также должны отказаться от правила. Это потерянная ситуация (и другая причина, почему префиксы громоздки, особенно в селекторах).

Для справки, я удивлен, что это больше не работает в Chrome (по крайней мере, в версии 25 на Windows, как я только что протестировал). Раньше упорно разобрать селектор p::selection, p::-moz-selection как просто p::selection и применить правило, вместо того, чтобы следовать спецификации, и разработчики были причины сделать это так. Интересно, что изменилось ...

+0

+1 для правильного ответа. – Spudley

+0

Хорошо, спасибо за это: D – l2aelba

Смежные вопросы