Есть ли способ сделать "если IE" внутри файла CSS? - PullRequest
8 голосов
/ 12 декабря 2010

Я знаю, что вы можете поместить условные операторы для загрузки различных файлов CSS, если вы находитесь в Internet Explorer, но можете ли вы сделать это внутри файла CSS?

У меня есть ситуация, когда я хочу, чтобы правильное поле составляло 20, если это Internet Explorer, и 10, если это любой другой браузер.

Ответы [ 4 ]

14 голосов
/ 12 декабря 2010

Самый простой способ справиться с этим - с помощью условий в вашем HTML, которые помещают div с определенным идентификатором вокруг остальной части страницы.

<!--[If IE 8]>
<div id="IE8">
<![endif]-->
  .
  .
  .
<!--[If IE 8]>
</div>
<![endif]-->

Затем ваш CSS может сделать это:

#IE8 div.whatever { ... }

Этот тип делает ненужными все эти хаки CSS.

2 голосов
/ 12 декабря 2010

Есть такие хаки, как , этот , где использование правил, которые IE не может интерпретировать, означает, что IE прекращает обработку правила, оставляя его безопасным для использования другими браузерами.

Как это:

div.iehack { 
  margin-right:20px; 
  voice-family: "\"}\""; 
  voice-family:inherit;
  margin-right:10px; 
} 
2 голосов
/ 12 декабря 2010

Официального синтаксиса условных комментариев для CSS не существует. Есть только условные комментарии HTML и JavaScript, так что проявите изобретательность ( Джон Фишер показывает в одну сторону).

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

0 голосов
/ 12 декабря 2010

Вы будете путать ваши CSS-файлы, делая подобные хаки. Лучше сделать отдельный файл для IE. Установите поле 10 в вашем общем файле CSS и установите его в 20 в вашем файле IE, который должен (условно) загружаться после вашего общего файла CSS. Вы знаете, как это сделать, и вряд ли есть причина делать это как-то иначе.

...