2012-04-26 79 views
0

我不熟悉这种“语义标注”。但我不知道这是否正确。总之,在这种情况下,我不知道何时使用section和nav标签。它应该是一个或另一个,完全没有,或完全像我拥有它?我正在说id = sidebar的部分。我的导航标签应该放在我的标签中吗?

<body> 
    <div class="page"> 
     <header> 
      <table id="formHeader" style="width:100%;text-align:center;"> 
       <tr> 
        <td></td> 
       </tr> 
      </table> 
      <nav> 
       <ul id="menu"> 
        <li>@Html.ActionLink("Home", "Index", "Home")</li> 
        <li>@Html.ActionLink("About", "About", "Home")</li> 
       </ul> 
      </nav> 
     </header> 
     <section id="sidebar"> 
      @*<nav>*@ 
       Go To... 
       <ul> 
        <li>First Move to Moon</li> 
        <li>First Move to Moon</li>      
       </ul> 
      @*</nav>*@ 
     </section> 
     <section id="main">   
      @RenderBody()        
     </section> 
     <footer> 
     </footer> 
    </div> 
</body> 
+0

的@ * * @是ASP.NET MVC注释标记。 – dotnetN00b 2012-04-26 14:07:30

回答

-1

我不知道特殊的规则,这样的标签定位内部或外部节标记,但我真的相信,语义标记的主要目的是搜索引擎优化,这就是为什么无论你把这个标记今天的搜索引擎谷歌和其他人很聪明,可以找到它。

1

如果它是一个主要的导航实体 - 那么nav标签就是要使用的东西。我的小见解是,如果你需要将导航元素放在段标签中,那么它不适合导航。不是主要的导航。

代码:

<section id="sidebar"> 
    <nav> 
    Go To... 
    <ul> 
     <li>First Move to Moon</li> 
     <li>First Move to Moon</li>      
    </ul> 
    </nav> 
</section> 

....或许可以称之为一个预留标签,而不是部分。

+0

欢迎来到Stack Overflow。您可以使用看起来像{}的按钮在答案中正确地格式化代码 - 尽管现在我已经为您编辑了它。 – Flexo 2012-06-18 13:35:56

1

你需要明白两两件事:

  • 每个切片内容元素(sectionarticleasidenav)创建的文档大纲条目(玩弄的大纲,例如gsnedders HTML5 Outliner)。
  • 从这个意义上说,nav属于其最接近的父切片内容元素,或最接近的父切片根(如body)。

所以,你的例子将创建以下概要:

1. (no heading) → body 
    1.1 (no heading) → nav 
    1.2 (no heading) → section (#sidebar) 
    1.2.1 (no heading) → nav 
    1.3. (no heading) → section (#main) 

第一nav将是整个(或网站导航)导航,因为它属于body

第二个nav将是边栏(!)的导航。

如果这适用于您的内容,您的示例是好的。但是,如果侧边栏还包含其他内容,它可能只会有意义,否则就没有理由首先进行导航。如果您找不到父母section的标题(实际上是否使用该标题),则可能会出现问题。

没有看到你的实际内容,没有人可以回答你的结构是否正确。什么是侧栏中的nav用于?

  • 如果它是你的主要内容通过TOC中,nav应该是主要内容的一个孩子。
  • 如果是页面/网站导航,它不应该是section(或任何其他分段元素)的子项,因此它属于body
  • ...
相关问题