2011-12-28 13 views
7

Drupal'ı kullanarak, temanın <HTML> öğesine atanmış bir arka plan rengi vardır. Belirli bir sayfa için ayrı bir print CSS oluşturuyorum ve kullanıcı sayfayı yazdırdığında bu sayfa için SADECE arka plan rengini kaldırmak istiyorum. <HTML> öğesinde sınıf veya kimlik yok, ancak <BODY> öğesi yok.HTML öğesini, bir BODY öğesinin belirli bir sınıfından hedefleme

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

Ben <BODY> ana unsurunu istediğinizi belirtmek için bir yolu var mı? Veya <BODY> sınıfına göre <HTML> hedeflemenin bir yolu?

DÜZENLEME: aşağıdakileri yapabilirsiniz jQuery yılında

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

cevap

4

:

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

Bu, başka bir unsur body veya olmasın içerip içermediğini çalışacaktır.

İşte bir working jsFiddle.

Ayrıca, html öğeleriniz için HTML yerine html küçük harf kullanmalısınız.

+0

..! Önemli değiştirici ile HTML etiketinden background-color stili geçersiz kılma ') (css' için harita sözdizimi kullanmaya gerek yok deneyebilirsin özelliği. – Purag

+0

Bu sözdizimini kullanmayı tercih ediyorum çünkü daha sonra daha fazla özellik ekleyebilirim ve bu yüzden kod tabanımı daha fazla bakım yapmaya zorluyor. Sadece kişisel tercih. –

+0

Bu muhtemelen çalışmak zorunda olduğu yoldur. – Mechaflash

3
$("body.specialPage") 
    .closest("html") 
    .css("background-color",""); 

İlk satır, gövde öğesini özel sınıfla hedefler. Sonra üst HTML etiketini seçer ve arka plan rengini 'kaldırır'. Güzelliği, sınıfın özellikle aradığınız gibi ayarlanmamış olması durumunda üst HTML'yi seçmemesidir.

Bu da çalışmaya devam eder:

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

jQuery'nin hasClass() döner bir boolean (true o sınıf ve false varsa bunları yapmazsa), bu yüzden vücut etiketi aradığınız sınıfı vardır kodu, HTML etiketinden arka plan rengini tekrar 'kaldırır' if işleviyle çalıştırır.

3

yalnızca birini değiştirirken sinice Sen

<HTML style="background-color:#666"> 
    <BODY class=specialPage style="background-color:#123 !important"> 
    </body> 
</html> 
+0

Striptizde gerçekten bulunmaması gerektiğinden, bu muhtemelen tercih edilen yöntemdir. +1 –

+0

Soruma bir düzenleme ekledim. Bu, varsayılan stilin geri kalan kısmı dışında çalışır. – Mechaflash

İlgili konular