Есть ли веская причина, почему в CSS нет родительских селекторов? - PullRequest
1 голос
/ 17 мая 2011

Хотя существуют селекторы для выбора элементов, предшествующих (#hlinks+#hsearch) или принадлежащих (#topbar>#hlinks) другим элементам, невозможно сделать обратное.

Например, нет ничего похожего на

li:has(ul){ }

Для обнаружения элементов списка, в которых есть другие списки. Разве это не удобно?

AFAIK, эта функция даже не входит в планы CSS, поэтому мой вопрос: почему это так ?

Ответы [ 4 ]

4 голосов
/ 17 мая 2011

Это обычно называется «родительским селектором»;как вы говорите, их нет в CSS, хотя они могут быть полезны.

Здесь есть интересное обсуждение ;Суть в том, что они окажут большое негативное влияние на производительность и позволят людям совершать ошибки с большими последствиями.Люди, которые понимают эти вещи, кажется, думают, что эти проблемы можно преодолеть, но пока еще не было достаточного спроса на кого-то, чтобы это сделать.

3 голосов
/ 17 мая 2011

Вы имеете в виду концепцию «родительского» селектора - выбора родительского элемента при определенном условии. Вы правы в том, что эта функция отсутствует в CSS (не в событии CSS3) - насколько мне известно, в настоящий момент невозможно проанализировать, как DOM анализируется CSS. Однако эта функция доступна с использованием jQuery и селектора :parent или селектора :has, с которым вы, возможно, уже знакомы.

РЕДАКТИРОВАТЬ: Для огромной детализации идеи родительского селектора, см. http://shauninman.com/archive/2008/05/05/css_qualified_selectors.

0 голосов
/ 17 мая 2011

Если вы хотите сделать это, просто сделайте:

ul li ul li {

}

Итак, теперь вы ищете любой элемент списка, в котором есть неупорядоченный список с элементом списка.

0 голосов
/ 17 мая 2011

Это стандартно в CSS, так как ... э-э ... начало CSS.

Это просто пробел:

li ul означает any ul that is inside li

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