如果关闭Javascript,如何定义CSS样式?

时间:2012-12-19 21:49:19

标签: javascript html css

  

可能重复:
  Embedding extra styles with noscript
  Define css if javascript is not enabled

我正在尝试仅在关闭Javascript时定义特定的CSS样式。我正在使用:

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

在尝试验证页面源时,我收到错误“元素样式不允许作为此上下文中元素noscript的子元素”。

那么,在保持标记有效的情况下,我该如何做呢?

5 个答案:

答案 0 :(得分:3)

<noscript>标记是“body”标记,<style>标记是“head”标记。因此,您会收到错误。

你应该使非javascript样式默认,然后使用js来改变你的风格。有关详细信息,请参见此处 https://stackoverflow.com/a/218917/1068167

答案 1 :(得分:1)

似乎与此question非常相似

  

“要清除验证问题:noscript只允许在   身体元素,只允许在头部的风格。因此,后者是   不允许在前者内。“

<noscript>标记的位置可能很重要。

答案 2 :(得分:0)

尝试这样的事情:

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

这会在加载页面时删除一个类。如果未激活javascript,则不会删除该类。

答案 3 :(得分:0)

你可以通过在默认样式表中使用这些类来解决这个问题,并在页面加载时让JavaScript删除它们。这仅在启用JavaScript时才有效,否则会加载所需的样式。

答案 4 :(得分:0)

例如,您可以通过javascript执行此操作并通过javascript禁用某些css文件,如果它未激活则不会发生。