Могу ли я вставить тестовый браузер или условные комментарии в файл CSS? - PullRequest
1 голос
/ 26 декабря 2010

Привет
У меня есть CSS, который применяет различные стили в зависимости от браузера, и я хочу проверить браузер (если браузер не IE) в самом файле CSS (не в файле HTML или PHP).

Как я могу это сделать?Должен ли я использовать это:

<!--[if !IE]>
<style>
//code
</style>
<![end if]-->

в файле CSS ???

Ответы [ 4 ]

1 голос
/ 26 декабря 2010

Эти условные комментарии предназначены только для IE.Поэтому проверка на !IE ничего не даст другим браузерам;)

Вы можете добавить CSS с помощью Javascript.Я просто импровизирую, что-то вроде этого может сделать (jQuery):

if( !$.browser.msie ) {
  $("#someLinkElement").attr( "href", "webkit.css" );
}

Редактировать: условие выполняется для браузеров не-IE теперь

1 голос
/ 26 декабря 2010

К сожалению, нет условного синтаксиса для условных комментариев, которые вы можете использовать в CSS. Условные комментарии являются расширением Microsoft для HTML, а не CSS.

Однако вы можете написать свой CSS-файл на PHP и заставить PHP использовать его в качестве CSS-файла.

Обратите внимание, что синтаксис вашего условного комментария для определения браузеров, не являющихся Internet Explorer, неверен. Вы хотите следующее:

<!--[if !IE]>-->
<style>
//code
</style>
<!--<![endif]-->

Это будет скрывать код между комментариями от IE.

1 голос
/ 26 декабря 2010

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

0 голосов
/ 19 июня 2012

Лучшим подходом является применение определенных классов к элементу <html> вашей страницы в зависимости от типа / версии браузера.Затем вы можете настроить таргетинг на определенные браузеры из вашего CSS-файла.

Это именно то, что делает шаблонный проект *1005*:

<!doctype html>
<!--[if lt IE 7]> 
<html class="no-js ie6 oldie" lang="en">
<![endif]-->
<!--[if IE 7]>
<html class="no-js ie7 oldie" lang="en"> 
<![endif]-->
<!--[if IE 8]>
<html class="no-js ie8 oldie" lang="en">
<![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js" lang="en">
<!--<![endif]-->

Теперь, чтобы написать CSS специально для IE6Вы можете просто добавить в свою таблицу стилей следующее:

.ie6 .some-div {
    margin: 0;
}

и т. д. и т. п.

...