IE8 объединяет стили CSS вместе

#css #internet-explorer-8

#css #internet-explorer-8

Вопрос:

Я отлаживаю свое приложение в режиме разработчика IE8 и сталкиваюсь с очень странным поведением. Режим разработки IE8 обычно отображает каждый стиль CSS с новой строки, но не в этих случаях … возьмем три примера:

 #1
.messages .read    
  background-color: rgb(234,234,234); HEIGHT: 1.5em
  padding-top: 0.3em

#2
a:link
  color : rgb(80,80,82); TEXT-DECORATION: none

#3
#messaging .body
  border-bottom: rgb(...) 1px solid
  filter : progid:DXImageTransform.Microsoft.gradient(startColorstr='#FDFDFD', endColorstr='#C2C2C2'); BORDER-LEFT: rgb(...) 1px solid; PADDING-BOTTOM: 1.5em; MARGIN: 15px 0 25px; etc.
  

Как вы можете видеть, это три случая, когда IE, кажется, ведет себя странно, и особенно для #3 я получаю некоторые действительно странные артефакты, такие как уродливая темно-серая рамка вокруг моей рамки градиента.

Есть ли известный способ обойти это поведение?

Обновление — исправлены артефакты градиента

#3 было исправлено на удивление легко, путем добавления position:relative; к этому стилю. Очевидно, IE нуждается в этом для правильного отображения своих градиентов.

Мне все еще интересно узнать, почему IE объединяет некоторые стили в одной строке и имеет ли эта особенность какой-либо реальный эффект.

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

1. Я видел, как подобное происходило в инструментах разработки IE в случаях, когда в таблице стилей была какая-то синтаксическая ошибка.

2. Со мной тоже случается, но это, вероятно, сбой; Я думаю, что он по-прежнему правильно отображает правила … правильно в соответствии со своими собственными стандартами.

3. В CSS все еще может быть синтаксическая ошибка, IE, возможно, просто случайно делает это правильно. Запустите его с помощью теста lint.

Ответ №1:

В приведенных вами примерах отсутствуют по крайней мере некоторые точки с запятой. Это вполне может быть проблемой здесь.

Как предложено в комментариях: попробуйте проверить свой CSS. Вот один из W3:

http://jigsaw.w3.org/css-validator/