У меня есть некоторый стиль CSS, который не работает в IE и работает на ff и chrome. Я хочу, чтобы иметь возможность использовать, если еще. Но может ли PHP ifelse быть включенным в .css-файл для меня?
[редактировать]
Мне не нужны два .css-файла для этой цели
Спасибо, Жан
Вы можете использовать условные комментарии, чтобы скрыть файл CSS из других браузеров.
Если вы действительно хотите решить, какой CSS для обслуживания, на стороне сервера, то вы можете посмотреть на разбор строки пользовательского агента, чтобы определить, какой браузер используется; но будьте осторожны, что может легко подделать – некоторые браузеры даже позволяют вам выбрать то, что они будут идентифицировать как из коробки, так что вы можете оказаться в ложных срабатываниях.
Вы можете интерпретировать 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.
Вообще говоря, вы не хотите настраивать свой сайт для разных браузеров. Вы хотите сделать все максимально однородным. Конечно, есть случаи, когда вам приходится делать что-то конкретным образом, но, по моему опыту, с использованием надлежащих методов, эти ситуации нередки.
Некоторые общие правила:
Всегда объявляйте DOCTYPE
на всех ваших HTML-страницах. Это заставляет браузеры (особенно IE) работать в так называемых стандартах, а не режиме quirks. Режим Quirks делает вещи в IE похожими на неправильную модель коробки. По этой причине я подозреваю, что вы делаете что-то неправильно (причудливо), и FF / Chrome на самом деле интерпретируют его правильно. Это для меня самый вероятный сценарий; а также
Используйте сброс CSS. Различные браузеры (и разные версии одного и того же браузера) имеют разные значения по умолчанию для отступов, полей, границ и т. Д. Лучше всего сбросить все до одной и той же начальной точки и перейти оттуда.
Помимо этого вы можете использовать условные комментарии .
Css не поддерживает условное управление потоком. Вы должны решить различные методы: