Отображать один стиль CSS, если IE, и другой, если ff или chrome в .css, используя PHP - PullRequest
1 голос
/ 15 апреля 2010

У меня есть какой-то стиль CSS, который не работает в IE и работает на ff и chrome. Я хочу быть в состоянии использовать, если еще. Но можно ли включить PHP ifelse в файл .css для меня?

[править]

Я не хочу два файла .css для этой цели

Спасибо Jean

Ответы [ 4 ]

4 голосов
/ 15 апреля 2010

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

Если вы действительно хотите решить, какой CSS обслуживать на стороне сервера, то вы можете посмотреть на синтаксический анализ строки пользовательского агента , чтобы определить, какой браузер используется; но будьте осторожны, это может быть легко поддельным - некоторые браузеры даже позволяют вам выбрать то, что они будут идентифицировать как «из коробки», так что вы можете получить ложные срабатывания.

3 голосов
/ 15 апреля 2010

Вы можете интерпретировать CSS-файлы с помощью PHP (если вас не слишком беспокоит нагрузка на сервер), если вы добавите эту строку в конфигурацию Apache:

addhandler application/x-httpd-php .css

Тогда вы можете попытаться положиться на $_SERVER['HTTP_USER_AGENT'], но остерегайтесь того, что он не заслуживает доверия.

Однако есть (ИМО) более эффективные способы достижения этой цели, которые включают использование условных комментариев IE:

<!--[if IE 8]>
<style type="text/css" ... />
<![endif]-->

Конечно, наиболее предпочтительным способом было бы переписать ваши стили, чтобы избежать различий в реализации браузера, что обычно возможно, но требует некоторого уровня CSS-гуру, если вы вынуждены поддерживать старый браузер, например IE 6.

2 голосов
/ 15 апреля 2010

Css не поддерживает условное управление потоком. Вы должны решить по различным методам:

  • Имейте PHP, чтобы распечатать правила CSS, основанные на некотором перехвате браузера. Я не рекомендую это
  • включает различные css с тегом link в раздел заголовка, используя условные комментарии (см. http://www.quirksmode.org/css/condcom.html)
2 голосов
/ 15 апреля 2010

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

Некоторые общие правила:

  1. Всегда объявляйте DOCTYPE на всех ваших HTML-страницах. Это заставляет браузеры (особенно IE) в так называемом стандарте, а не в режиме причуд. Режим Quirks делает вещи в IE похожими на некорректную блочную модель. По этой причине я подозреваю , что вы делаете вещи неправильно (причудливо), а FF / Chrome интерпретируют это правильно. Для меня это наиболее вероятный сценарий; и

  2. Использовать CSS для сброса. Разные браузеры (и разные версии одного и того же браузера) имеют разные значения по умолчанию для отступов, полей, границ и т. Д. Лучше всего сбросить все в одну и ту же начальную точку и перейти оттуда.

Помимо этого вы можете использовать условные комментарии .

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