Я часто использую этот CSS-селектор parent> child. Мой дизайн хорошо смотрится в Mozilla и Opera.

Но в IE это отстой. Я знаю, что > не распознается в IE, но какая альтернатива этому в IE?

3
mars-o 11 Мар 2009 в 04:05

2 ответа

Лучший ответ

Альтернативы прямому дочернему селектору в IE6 нет (хотя он должен работать в IE7).

Вместо этого вам нужно использовать селектор потомков (пробел) и спроектировать свои классы для компенсации.

6
Joel 11 Мар 2009 в 04:08

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

div p {color: red;}     // Takes effect if there's a <p> child at some level
div * p {color: black;} // .. but this'll be true if it's not a direct child

Однако вам нужно остерегаться конфликтов специфики. div * p будет более конкретным, чем другое правило, которое работает, например, с абзацами в целом.

11
John Feminella 11 Мар 2009 в 04:10
+1: Я никогда этого раньше не видел (и я много писал css). Отличная идея.
 – 
Joel
11 Мар 2009 в 04:17
Спасибо за голос. Но я бы определенно был осторожен при использовании этого - это может привести к серьезной боли, если будет сделано слишком много. Конфликты специфичности - зло!
 – 
John Feminella
11 Мар 2009 в 04:18
Постарайтесь не делать этого, так как это работает очень плохо.
 – 
cletus
11 Мар 2009 в 04:33
Да, я понимаю, что это может быть проблематично, но в особых случаях это может быть полезно.
 – 
Joel
11 Мар 2009 в 04:52
1
Я думаю, он имеет в виду, что использование универсального селектора приведет к тому, что это правило CSS будет применяться ко многим узлам, что неэффективно.
 – 
John Feminella
11 Мар 2009 в 18:09