将css ID用于页脚页眉之类的所有内容,而仅用于重复对象的Classes,在语义上是否正确

  • 本文关键字:用于 对象 是否 语义上 Classes ID css css
  • 更新时间 :
  • 英文 :


我知道ID和class之间的区别。我知道ID需要是唯一的,并且可以用于使用java或jquery来针对特定的容器。

我遇到的问题是掌握每一个词的正确语义用法。

我应该对页脚/页眉/主要内容/所有内容都使用ID,而只对<p>, <li>这样的重复容器使用class吗?

我知道这最终并不重要。但我讨厌我做的事情毫无逻辑。。。

差不多是的。有时你根本不需要类或ID——在需要的时候使用它,而不是因为你认为应该这样做。

例如,您不需要向nav中的每个li元素添加类,您可以有这样的东西:

<div id="header">
    <a href="#">Logo</a>
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact</a></li>
    </ul>
</div>

您可以轻松地对任何元素进行样式设置(或使用javascript作为目标):

#header > a { /* logo */ }
#header ul { /* nav container */ }
#header ul li {}
#header ul li a {}

等等。

我希望它能回答你的问题!

"当每页只有一次出现时使用ID。当每页有一次或多次出现时使用类。"

--http://www.tizag.com/cssT/cssid.php

我最喜欢的参考网站之一。

我只能从我的观点和我是如何做到的:

创建模板时,我会将id分配给所有唯一的东西,除非我可以在没有id的情况下唯一地选择它。示例:我只有一个<header>,所以我不需要向它添加额外的标记。

当有两个边栏和一个内容部分(三列布局)时,我会分配id以保持它们的唯一性。所以有<aside id="left"><aside id="right">。为什么我不使用类?我想保持简短。也许我将.right附加到<p><a>

我主要将类用于应用于多种事物的样式。例如,有一个全宽的页眉和页脚,页面通常居中,我将<div class="centered">放入这些元素中。并不是因为它们不是唯一的(这主要适用于id,但这是不正确的)。我之所以这么做,是因为在居中容器的页面内容中也可能有一个元素,也可能是居中内容元素(比如freelanceswitch或smashingmagazine的博客文章中的文章拆分标题)。

类用于应该共享公共内容或属性(包括样式)的元素。ID用于具有唯一性的元素。同时使用ID和类在语义上是正确的。示例:

<div id="header" class="container"></div>
<div id="footer" class="container"></div>

这在很大程度上是个人惯例和风格的问题。

有些项目在任何可能的情况下都使用ID,用于通常只在页面上出现一次的每个元素。例如,Wordpress就朝着这个方向发展。

其他人将类用于所有类别,如"页眉"one_answers"边栏",即使它们只出现一次。我更喜欢这种方法。它有几个优点:

  1. 如果你最初认为一个元素只会出现一次,但后来却有了多个实例,那么你就不必修改你的CSS了
  2. 一个元素可以有多个类,但只能有一个ID。同样,如果你最终改变了对文档结构的想法,那么严重依赖ID可能会影响你的CSS
  3. 它为服务器和Javascript之间的通信保留了免费的ID元素。我经常以类似<div class="player"id="player_1234">,然后是一个名为attachPlayer('player_1234')的JS

然而,这是一个品味问题。

据我所知,您所描述的特定标签不需要使用ID。通常ID可以用于您想要指定唯一标识的地方,就像Header是网站的唯一标识一样。因此,您可以为标签定义一个ID。页脚也是如此。如果你觉得你可能需要重复相同的属性,你可以用类分组,也可以用类代替ID。

但是,将ID分配给main section标记比将js用于section更可靠。所以,所有在一。。。

如果您不想为节重复css的属性,则可以使用ID,如果您想重用css的属性则可以使用类。

例如

<div id="header">
<p class="note">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.
</p><!-- end note -->
<ul id="main-nav">
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul><!-- end main-nav-->
<p class="note">
Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet
</p><!-- end note -->
</div><!-- end header -->

Id在URL中具有唯一的功能哈希值。如果你有这样的URLhttp://yourdomain.com#MyId,浏览器将尝试定位ID为"MyId"的元素,并自动将页面滚动到该元素。类没有这样的功能。

javascript依赖于具有唯一性的页面元素,否则常用的getElementById函数将不可靠。

有关详细信息,请查看此处http://css-tricks.com/the-difference-between-id-and-class/

语义正确,但与jQuery Mobile等一些技术不兼容,因为它在当前页面上缓存页面,导致多个元素具有相同的ID。

最新更新