Программное включение условных (специфичных для браузера) таблиц стилей - PullRequest
0 голосов
/ 09 апреля 2011

Как программно включить специфичные для браузера таблицы стилей с Drupal 6?

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

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

Ответы [ 4 ]

0 голосов
/ 04 мая 2011

Просто чтобы продолжить, Drupal 7 (я только что обнаружил) действительно поддерживает программно, включая условные CSS , как указано в их документации здесь:

Вот вызов:

drupal_add_css($directory . 'ie7.css', array('group' => CSS_THEME, 'browsers' => array('IE' => 'lte IE 7', '!IE' => FALSE), 'every_page' => TRUE));

, поскольку он включен в тему Zen для Drupal 7.

Для чего бы это ни стоило, это совсем не помогло мне в проекте, над которым я работал(это был Drupal 6 ...), и вопрос о том, является ли это хорошей идеей даже программной инъекцией условного CSS, остается открытым.

0 голосов
/ 09 апреля 2011

О какой версии IE вы говорите?

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

color:#ffffff; /* default value */
_color:#ffff00; /* overwrite for IE6 */
#color:#ff0000; /* overwrite for IE7 */

Таблицы стилей должны кэшироваться браузером. Добавляя их в код, вы отключаете эту функцию.

0 голосов
/ 09 апреля 2011

Если вы не хотите добавлять условную таблицу стилей на каждую страницу, вам нужно использовать функцию предварительной обработки.

Функции предварительной обработки - это хуки, которые позволяют вам добавлять / вычитать контент, который будет отображаться на странице. В вашем случае вы хотите использовать соответствующую функцию *_preprocess_page, чтобы подключиться к точке, в которой отображается вся страница (и которая, следовательно, дает вам доступ к page.tpl.php).

В этой функции предварительной обработки вы должны добавить новую переменную, подобную этой:

<theme_name>_preprocess_page(&$vars) {
  if (condition is met) {
    $vars['my_custom_stylesheet'] = "<markup for adding a conditional stylehseet>";
  }
}

Затем в вашем page.tpl.php добавьте эту новую переменную my_custom_stylesheet, где у вас есть объявления таблицы стилей CSS в <head> вашего page.tpl.php, что-то вроде этого:

<?php print $my_custom_stylesheet; ?>

Вот и все. Вы можете использовать функции препроцессора либо в своей теме, либо в модуле, так что используйте тот, который наиболее разумен и проще всего написать часть кода if (condition is met), приведенную выше.

0 голосов
/ 09 апреля 2011

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

Вот статья об этом:

http://www.quirksmode.org/css/condcom.html

Вот фрагмент:

<!--[if IE 6]>
Special instructions for IE 6 here
<![endif]-->

См. Документацию по предоставленной ссылке.

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