Специфичный для браузера Drupal 7 css

#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 на случай чрезвычайной ситуации.