#drupal #drupal-6 #drupal-modules #drupal-7 #browser-detection
#drupal #drupal-6 #drupal-модули #drupal-7 #обнаружение браузером
Вопрос:
Как я могу настроить css для конкретного браузера в Drupal 7. Я хотел бы загрузить chrome.css, если браузер chrome. Пожалуйста, помогите
Комментарии:
1. Кроме IE<9, для чего вам нужны таблицы стилей для конкретного браузера?
2. @Spudley: Мне нужен css для конкретного браузера только для chrome
3. серьезно? какая конкретная функция?
4. @Spudley: я установил значение left: 100px для элемента css. Выравнивание идеально в IE 8 и firefox 4, но в chrome я должен установить left: 350px
5. Это звучит очень странно. Chrome отлично соответствует стандартам, поэтому я очень удивлен, услышав, что что-то столь фундаментальное, как базовое позиционирование, так плохо работает. Я подозреваю, что в этом есть что-то большее; какая-то другая ошибка в вашей таблице стилей, которую необходимо исправить. Я бы посоветовал вам искать причину проблемы, а не пытаться исправить симптомы с помощью взлома. Если вы действительно не можете его найти, покажите нам код здесь (вероятно, лучше всего в новом вопросе), и я уверен, что кто-нибудь очень быстро укажет на это.
Ответ №1:
Вы можете сделать это в своем template.php файл с привязкой к теме preprocess_html и функцией drupal_add_css.
Вы найдете пример в теме drupal 7, например, в bartik :
// Add conditional stylesheets for IE
drupal_add_css(path_to_theme() . '/css/ie.css', array('group' => CSS_THEME, 'browsers' => array('IE' => 'lte IE 7', '!IE' => FALSE), 'preprocess' => FALSE));
drupal_add_css(path_to_theme() . '/css/ie6.css', array('group' => CSS_THEME, 'browsers' => array('IE' => 'IE 6', '!IE' => FALSE), 'preprocess' => FALSE));
Редактировать: поскольку для Chrome нет условных комментариев, вы можете проверить $_SERVER[‘HTTP_USER_AGENT’] :
if (isset($_SERVER['HTTP_USER_AGENT'])
amp;amp; stripos($_SERVER['HTTP_USER_AGENT'], 'chrome')!==false) {
drupal_add_css( ... );
}
Но прежде чем делать это, попробуйте исправить свои правила css!
Комментарии:
1. Но, как сказал Спадли, прежде чем делать это, вы должны попытаться исправить свои правила css .
2. он добавляет условный css для IE, как мне это сделать для chrome?
3. Что ж, поскольку в chrome нет условных комментариев, вам просто нужно проверить $ _SERVER[‘HTTP_USER_AGENT’]
Ответ №2:
Я рекомендую использовать модуль условных таблиц стилей
Internet Explorer реализует запатентованную технологию, называемую условными комментариями. В то время как веб-разработчики неодобрительно относятся к технологиям, которые не поддерживаются в разных браузерах, многие разработчики CSS сочли условные комментарии очень полезными. Они могут использовать более чистый CSS в своих обычных таблицах стилей и могут исправить нарушенный рендеринг в IE, поместив CSS только для IE внутри условных комментариев; этот метод даже рекомендован Microsoft. Без этого модуля единственным способом получить условные таблицы стилей IE было добавить 37 строк кода (больше, если вы хотите добавить более одной таблицы стилей) в четырех ужасно трудных для запоминания вызовах функций в вашей теме template.php . Ошибка. Кто этого хочет?
Ответ №3:
Я согласен с предыдущими ораторами, вам обязательно следует попробовать изменить свой css, чтобы для этого не требовался специфичный для браузера код, но если вам действительно нужно настроить таргетинг на браузеры Webkit (Chrome и Safari), вы можете взглянуть на это решение:
http://www.evotech.net/blog/2010/04/hack-for-webkit-filter-for-chrome-and-safari/
Это не специфично для Drupal, но так себе общепринятый способ таргетинга на webkit на случай чрезвычайной ситуации.