0

我有一个严重依赖 JavaScript 的网站。虽然大多数东西都可以很好地降级,但功能上确实是二等的。所以,我想提醒用户,如果他们禁用了 JS,他们应该打开它。为此,我使用 NOSCRIPT 在页面顶部显示一个带有警报的 div,类似于 Stack Overflow 的做法。

这个 div 覆盖了页面内容的顶部,所以我必须将文档正文向下移动。由于 JS 不可用,因此必须使用 CSS,我使用类似:margin-top: 8px. 完整的 HTML 如下所示:

<noscript>
<style type="text/css">body { margin-top:8em; }</style>
<div class="warn">WARNING<br>Turn on JavaScript for best experience</div>
</noscript>

问题是:我在哪里放置这段代码?

我尝试在 HEAD 部分,在 BODY 部分,在 BODY 之后,但是无论它放在哪里,W3C HTML 标记验证器都会抱怨这里的文档类型不允许元素“STYLE”文档类型不允许元素“BODY”在这里

我什至尝试将 CSS 和 DIV 分成两部分,并为每个部分找到合适的位置,但得到了相同的错误。

4

2 回答 2

2

您可能只需要接受它并接受您的页面将无法验证。

...或改变它的工作方式。你能把它放在第一位,position: static让它自然地把你的页面内容往下推吗?

...或者,要棘手,让你body总是有margin-top: 8em。然后在 JavaScript 中准备好 DOM(或加载窗口)时,将其设为 0。

CSS

body {
   margin-top: 8em;
}

body.javascript {
   margin-top: 0;
}

JavaScript

window.onload = function() {
   document.getElementsByTagName('body')[0].className += ' javascript';
};
于 2010-11-11T12:45:25.493 回答
-1

您需要在 noscript 元素内有一个块元素(例如 div)并将样式元素移动到 head 元素内以获得正确的验证。

于 2010-11-11T15:19:50.993 回答