Как сделать Internet Explorer 8 для поддержки n-го дочернего элемента () CSS?

Я хочу дать эффект полосы зебры для моих строк таблицы. Во всех других браузерах это можно сделать с помощью CSS nth дочернего элемента. Но я хочу сделать это IE 8 также. Так как же мне это сделать?

4 ответов


вы можете использовать http://selectivizr.com/ JS, которые поддерживают селектор css3 для IE.


С polyfill:Selectivizr - достаточно хорошо.

без polyfill: поскольку IE8 поддерживает первого ребенка, вы можете обмануть это, чтобы поддержать nth-child в iE8 i.e

/*li:nth-child(2)*/
li:first-child + li {}/*Works for IE8*/

хотя мы не можем эмулировать сложные селекторы i.e nth-child(2n+1) или nth-child (нечетный) для IE8.


в качестве альтернативы Selectivizr вы можете использовать немного jQuery:

$('.your-list li:nth-child(3n+1)').addClass('nth-child-3np1');

затем просто добавьте второй селектор в свой CSS:

:nth-child(3n+1)
{
    clear: both;
}

.nth-child-3np1
{
    clear: both;
}

селекторы "первенец" и " + "доступны в IE7, а" + " является аддитивным.

поэтому "nth-child" может быть смоделирован путем последовательного добавления селекторов"+", поэтому:

tr:nth-child(4)

будет:

tr:first-child + tr + tr + tr

если все родственные элементы одинаковы, то подстановочный знак " * " будет достаточно, как в:

tr:first-child + * + * + *

что уменьшит размер файла css, если указать много строк.

обратите внимание, что пробелы между селекторами не требуется, поэтому размер файла можно уменьшить еще больше, оставив их, чтобы выбрать 1-ю, 3-ю и 5-ю строки:

tr:first-child,tr:first-child+*+*,tr:first-child+*+*+*+*

конечно, никто не хотел обслуживать очень большие столы!

при использовании * в качестве наполнителя, убедитесь, что :first-child элементу и последнему элементу дается явное tagname, потому что правило будет проверено против каждого элемента в DOM, и указание обоих этих элементов явно приводит к сбою в любом конце определенного браузер применяет правила сначала, а не после того, как ему пришлось переступить через несколько элементов в каждой последовательности, чтобы в итоге не правило для каждого из них. Не заставляйте ваш браузер работать без уважительной причины!