2012-12-19 42 views
5

可能重複:
Embedding extra styles with noscript
Define css if javascript is not enabled如何在Javascript關閉的情況下定義CSS樣式?

我試圖定義只有在關閉了JavaScript特定CSS樣式。我使用:

<noscript> 
    <style type="text/css"> 
    .needjs {display:none !important;} 
    .mwnojs { margin-top: 40px !important; } 
    </style> 
</noscript> 

當試圖驗證頁面的源代碼,我得到的錯誤「元素風格不允許作爲元素的子無腳本在這方面」。

那麼,我會如何去做這件事,同時保持我的標記有效?

+2

Yuck。不要使用'!important'。 – gilly3

+1

modernizer - http://modernizr.com/ – jsweazy

+0

'!important'有什麼問題? – JROB

回答

0

嘗試這樣:

<html class="nojs"> 
<head> 
<script type="text/javascript"> 
document.getElementByTagName("html")[0].className=""; 
</script> 
<style> 
html#nojs { 
    /* do something */ 
} 
</style> 

這在加載頁面刪除一個類。如果JavaScript未激活,則該類不會被刪除。

0

您可以通過將這些類放在默認樣式表中並在頁面加載時讓JavaScript擺脫它們來解決此問題。這隻會在JavaScript啓用時才起作用,否則會加載所需的樣式。

3

<noscript>標籤是「body」標籤,<style>標籤是「head」標籤。因此你會得到一個錯誤。

您應該使非JavaScript樣式默認,然後使用js來改變你的風格。在這裏看到更多的細節: https://stackoverflow.com/a/218917/1068167

1

似乎非常相似,這question

「要清理的驗證問題:無腳本只允許在 主體元素,風格只允許在頭上。因此,後者是前者不允許的 。「

這可能與您的<noscript>標籤所在的位置有關。

0

你可以通過其他方式做到這一點,並通過JavaScript禁用一些CSS文件,如果沒有激活它不會發生。

相關問題