Как настроить таргетинг на элемент HTML из определенного класса элемента BODY - PullRequest
7 голосов
/ 29 декабря 2011

Используя Drupal, тема имеет цвет фона, назначенный элементу <HTML>.Я создаю отдельный print CSS для ОДНОЙ конкретной страницы и хочу удалить цвет фона ТОЛЬКО для этой страницы, когда пользователь печатает страницу.Элемент <HTML> не имеет класса или идентификатора, но элемент <BODY> имеет.

<HTML style="background-color:#666">
  <BODY class=specialPage>
  </body>
</html>

Есть ли способ указать, что я хочу родительский элемент <BODY>?Или какой-то способ нацеливания <HTML> на основе класса <BODY>?

РЕДАКТИРОВАТЬ:

|------------------------|
|         <HTML>         |
|      |----------|      |
|      |          |      |
|      |  <BODY>  |      |
|      |          |      |
|      |----------|      |
|                        |
|------------------------|       

Ответы [ 3 ]

4 голосов
/ 29 декабря 2011

В jQuery вы можете делать следующее:

$('body.specialPage').parent('html').css({'background-color': 'white'});

Это будет работать независимо от того, содержит ли body другой элемент.

Вот рабочий jsFiddle .

Кроме того, вы должны использовать строчные буквы для элементов HTML, html вместо HTML.

3 голосов
/ 29 декабря 2011

Вы можете попробовать переопределить стиль цвета фона из тега HTML с помощью модификатора! Important ..

<HTML style="background-color:#666">
  <BODY class=specialPage style="background-color:#123 !important">
  </body>
</html>
3 голосов
/ 29 декабря 2011
$("body.specialPage")
    .closest("html")
    .css("background-color","");

В первой строке указывается элемент body со специальным классом.Затем мы выбираем его родительский тег HTML и «удаляем» его цвет фона.Прелесть в том, что он не будет выбирать родительский HTML, если класс специально не установлен на тот, который вы ищете.

Это также будет работать:

if( $("body").hasClass("specialPage") ){
    $("html").css("background-color","");
}

jQuery'shasClass() возвращает логическое значение (true, если у него есть класс, и false, если у него нет), поэтому, если тег body имеет искомый класс, он будет запускать код в функции if,который снова «удаляет» цвет фона из тега HTML.

...