CSS3: не пример

#css #css-selectors

#css #css-селекторы

Вопрос:

Я должен выбрать все элементы html (из * ), за исключением дочерних элементов одного конкретного div. как я могу использовать это из: не из css3?

 (*) - children of (#myDiv)
  

Ответ №1:

Вы не можете этого сделать, поскольку селектор для поиска любого дочернего элемента #myDiv был бы

 #myDiv > *
  

Но это не простой селектор, который мог бы поместиться :not() .

Лучше всего применять стили к * и переопределять (или «возвращать») их в #myDiv > * :

 * {
    color: red;
}

#myDiv > * {
    color: black;
}
  

Предварительный просмотр jsFiddle

Комментарии:

1. У меня есть *{ padding: 0; margin: 0; border: 0 none; } И я не хочу сбрасывать настройки для одного из моих дочерних элементов #myDiv. пожалуйста, помогите мне в этом…

2. Если вы хотите применить отступы, поля и границы по умолчанию для браузера к элементам в #myDiv , это небольшая проблема. Но другого способа обойти это нет.

3. Понравился тот факт, что вы объяснили, почему это не работает с :not (), это единственное, что делает этот ответ потрясающим.

4. @kuroir: И спасибо, что получили мой css-selectors ответ на этот вопрос! cl.ly/6UDY

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

Ответ №2:

Это должно сработать:

 :root, :not(#myDiv) > *
  

Первая часть там будет соответствовать корневому элементу. Вторая часть будет сопоставлять что угодно с родительским элементом, если этот родительский элемент не является #myDiv .

Комментарии:

1. Безусловно, имеет значение 1. Но, похоже, без явного переопределения для #myDiv > * оба наших правила могут не работать для свойств стиля, которые дочерние элементы наследуют от родителей по умолчанию, например color . Взгляните на jsfiddle.net/BoltClock/bCkBp/7 (это работает, это просто наследуемость color , которая «ломает» его)

2. Если вы установите color on #myDiv , то #myDiv > * цвет текста будет наследоваться по умолчанию, если вы не зададите #myDiv > * его собственный color . Может быть или не быть тем, чего хочет OP, это просто что-то интересное, на что я подумал указать…

3. L33t. Я не мог бы сказать лучше 🙂