Первый ребенок и последний ребенок с IE8
У меня есть css для настройки вещей в моей таблице.
Вот он:
.editor td:first-child
{
width: 150px;
}
.editor td:last-child input,
.editor td:last-child textarea
{
width: 500px;
padding: 3px 5px 5px 5px;
border: 1px solid #CCC;
}
Он работает с Firefox, Safari и Chrome, но не (в это время) с IE8.
Я знаю, что проблема исходит от первого ребенка и последнего ребенка, но я не эксперт.
Любая идея, как я могу это сделать?
PS: я добавил <!doctype html>
поверх моего html-документа, но ничего не изменилось.
Ответы
Ответ 1
Если ваша таблица имеет всего 2 столбца, вы можете легко добраться до второго td
с помощью смежного селектора, который поддерживает IE8 вместе с :first-child
:
.editor td:first-child
{
width: 150px;
}
.editor td:first-child + td input,
.editor td:first-child + td textarea
{
width: 500px;
padding: 3px 5px 5px 5px;
border: 1px solid #CCC;
}
В противном случае вам придется использовать библиотеку селектора JS, такую как jQuery, или вручную добавить класс к последнему td
, как было предложено Джеймсом Аллардисом.
Ответ 2
Так как :last-child
является псевдоклассом CSS3, он не поддерживается в IE8. Я полагаю, что поддерживается :first-child
, как определено в спецификации CSS2.1.
Одним из возможных решений является просто дать последнему ребенку имя класса и стиль этого класса.
Другим вариантом будет использование JavaScript. jQuery делает это особенно просто, поскольку он предоставляет псевдо-класс :last-child
, который должен работать в IE8. К сожалению, это может привести к появлению неровного содержимого во время загрузки DOM.
Ответ 3
Если вы хотите использовать селектор CSS3, но должны поддерживать старые браузеры, я бы предложил использовать polyfill, например Selectivizr.js