是否真的最好不使用<div>制作网站,只使用语义标签?</div>

时间:2010-03-08 11:11:48

标签: html css xhtml

我在谷歌搜索网上找到了这个

并在此处查看文章:http://www.thatcssguy.com/limit-your-divs/

在这里查看他的最终布局:http://www.nodivs.com/

文章

中的一些引用

1

  

当我限制使用我的所有div   主要浏览器包括IE6   和IE7将几乎渲染网站   完美。或者只需要很少的修复   需要的。

2

  

它很神奇,但证明了div和表格   布局

是必要的

我们应该尝试制作这样的网站吗?

3 个答案:

答案 0 :(得分:9)

这篇文章就如何避免“divitis”提出了许多好处,即div元素的使用,其中会有一个语义上更合适的元素。但是这个:

  

当我限制使用我的div时,包括IE6和IE7在内的所有主要浏览器都会使网站几乎完美呈现。或者只需要很少的修复。

是完全的背叛。 DIV是完全有效的容器元素,在很多情况下都有意义。仅在存在语义上更合适的元素的情况下(例如,在菜单中的无序列表中为ul,对于标题为h1 h2 h3,对于有序列表为ol )使用div是错误的,因为使用table进行布局通常是错误的。

您提到的网站作者所做的是公然滥用其他元素,例如dl(定义列表)作为div元素的代理人,这些内容与滥用div s一样愚蠢作为ul ol等的代理人。查看the W3C's definition of ul, ol, and dl lists并自己考虑这些元素是否应该像作者使用它们那样进行布局任务。

据我所知,不使用div以某种方式使网站呈现更好的跨浏览器的暗示完全是骗人的。如果我错了,请纠正我,但我不能想到一个这样的例子。

答案 1 :(得分:3)

他在元素上使用样式而不是自动将它们包装在div中是有意义的:

<ul class="navList">
  <li>Home</li>
  <li>About</li>
  <li>Contact</li>
</ul>

而不是

<div class="navList">
    <ul>
      <li>Home</li>
      <li>About</li>
      <li>Contact</li>
    </ul>
</div>

当他使用绝对定位用h2覆盖h1来创建他的标题时,他失去了我。

可维护性与清洁代码一样重要。当我看到名为“标题”的div时,我知道那是什么,而不是:

   <h1 class="border"><a href="#" id="logo">Welcome to NoDivs.com</a></h1>

    <h2 class="border">Contact NoDivs.com <span>1-888-1485</span></h2>

他并没有实践他所宣扬的。任何使用“spacer”div在div之间添加填充的人都不应该谈论divitis的危险。 :)

答案 2 :(得分:1)

你引用了这篇文章,但在评论中,作者自己说:

  

不使用DIV往往会使网站呈现更可靠的跨浏览器。您正在删除代码中可能是浏览器源无法正确显示的元素。删除变量,你会发现问题较少。

所以:切换标题的div不会改变渲染的可靠性(文章暗示,但作者并不是这个意思),但删除不必要的嵌套divs元素会有所帮助,但作为一个好的HTML布局你应该总是这样做那;)

请记住,您应该尽可能地阻止Divitis,并且使用语义正确的标记有助于您的SEO工作和可访问性以及业力和东西。

修改

好的,众所周知,divitis很糟糕。我们来看看文章的标记:

<body>
    <div id="page">
        <div id="header">
            <h1 id=logo">(some stuff)</h1>
            <ul id="nav1">navi</ul>
        </div>
        <div id="columns">
            (Content)
        </div>
        <div class="box6">
             <div class="top"></div>
             <div class="spacer">                 
                 <div class="col3">
                 </div>
                 <div class="col3">
                 </div>
                 <div class="col3 last">
                 </div>
                 <br class="fix">
             </div>
             <div class="bot"></div>
         </div>

        <div id="footer">
            (Footer Content)
        </div>
    </div>
    (Script tags)
</body>

让我们看一下:<div id="page">将页面置于margin: 0 auto;的中心位置。将此样式应用于<body>,您可以删除一个div。 <div class="box6">的全部内容并不完全清除div,而且绝对没有必要。剩下的就是:亲自看看。