Как я могу изменить стиль CSS для IE6? - PullRequest
0 голосов
/ 12 июня 2009

Я хочу иметь особый стиль CSS, отличный от IE6. В основном я использую спрайты CSS с файлом PNG. Но для IE6 я хочу использовать версию .gif.

Я не хочу использовать оператор <!-- if lte IE6. Я хочу включить его в сам мой файл CSS.

Как мне это сделать?


Edit:

Мне это нужно, потому что я хочу, чтобы мои пользователи включали один файл CSS, а не 4 строки кода. Мои пользователи абсолютные новички. Я не хочу их путать. Кроме того, единственное изменение, которое я хочу - это использовать .gif вместо текущего .png.


Edit:

Как звучит _background-image:? Что-то не так с этим?
Или я могу использовать условный оператор внутри CSS-файла?

Ответы [ 6 ]

8 голосов
/ 12 июня 2009

Если вы не хотите использовать условные комментарии, тогда вы можете использовать * html hack:

h1 {
    color: green;
}

* html h1 {
    color: red; /* this will only be applied by IE 6, 5.5, 5, and 4 */
}
4 голосов
/ 12 июня 2009

По-видимому, вы можете поместить определенные выражения IE6 в CSS, поставив перед ними префикс подчеркивания.

См. http://vexxhost.com/blog/2007/03/01/only-css-hack-you%E2%80%99ll-ever-need-seriously/

2 голосов
/ 12 июня 2009

Как вы, очевидно, заметили по полученным ответам, использование условных комментариев для этого настолько стандартно, что люди советуют вам делать это, даже если вы специально сказали, что не хотите.

Но если вам абсолютно необходимо, чтобы определение пользовательского агента было выполнено на уровне файлов CSS, я бы написал сценарий PHP, который выводит CSS (а не HTML), и анализирует пользовательский агент в PHP. Если файл должен называться stylesheet.css или чем-то еще, Apache переписывает или MultiViews можно использовать для того, чтобы сделать PHP-скрипт доступным под этим именем.

1 голос
/ 12 июня 2009

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

Я бы очень рекомендовал, чтобы вы не выполняли анализ пользовательского агента, это вызывает множество проблем, например, многие браузеры сообщают о себе как IE, даже если они не являются (по умолчанию в Opera 7, я думаю). Строка User-Agent не заслуживает доверия и должна использоваться только в качестве крайней меры.

1 голос
/ 12 июня 2009

Вот довольно полный список не рекомендуемых хаков : http://www.javascriptkit.com/dhtmltutors/csshacks3.shtml

0 голосов
/ 12 июня 2009

Используйте условный комментарий .

<!--[if IE 6]>
<link rel="stylesheet" href="/ie6.css">
<![endif]-->

edit: Теперь, когда Wellbog исправил ваш вопрос, нет, нет способа сделать это с помощью чистого корректного CSS.

Можно предположительно использовать PHP или другой серверный язык, чтобы обнаружить IE6 из строки пользовательского агента и использовать другой файл CSS, но гораздо лучше просто использовать технику условного комментирования.

В чем причина отказа от использования существующего работающего нехакерского решения, предоставляемого Microsoft?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...