对于 CSS 初学者来说,ID 和 Class 的区别是个十分值得探讨和注意的话题。接下来,我就对 ID 和 Class 的区别及适用场合做简单的阐述。
孪生兄弟:ID 和 Class
很多刚迈入网页设计师行业的人对 CSS 中 ID 和 Class 的认识还停留在比较混乱的阶段。很多人甚至认为这两兄弟功能上是完全一样的,这就导致了他们对 ID 和 Class 的滥用。
ID 以及它的适用场合
ID 是唯一标识(identification)的意思;这是一个非常优雅和漂亮的 CSS 属性。但同时我们又很容易将它应用在错误的场合。与每个人的身份证号码必须唯一一样的道理,ID 在一个 XHTML 和 HTML 文档中的使用次数也必须唯一,即 ID 不能重复使用。重复使用 ID 标签不仅会导致你的页面无法通过 W3C 验证,而且会对 JavaScript 操作 DOM 造成负面影响。总之,ID 就像页面某个元素的身份证一样(如<div id="test"></div>),它最多仅能出现一次。
主流浏览器能够识别 HTML 和 XHTML 文档中的 ID 属性。假设我们希望在网页顶部做一个链接;当我们点击这个链接时,页面会自动滚动下滑到正文区域去;此时我们可以在正文外围元素或正文的标题元素上添加一个id="title"的属性/值,然后在链接上添加如下锚代码:
<div id="title">万戈-Life Studio-http://wange.im</a>
在 CSS 文档代码中,我们可以通过符号"#"来选择我们自定义的 ID 属性。
同时,JavaScript 也非常依赖 HTML 和 XHTML 中的 ID 属性,其中最重要的过程函数莫过于 getElementById() 。
Class 以及它的适用场合
与 ID 类似,Class 也可以被 JavaScript 代码所操控;但与 ID 不同的是,在同一 HTML 文档中,我们可以多次使用 Class。CSS 能够让内容与表现相分离的这种特性就得益与 Class 的强大。很多初学者知道我们能够多次将同一 Class 属性定义在不同的 HTML 元素标签上;但他们或许不知道,我们还可以将多个 Class 属性定义在同一 HTML 标签上:
float: left;
}
.larger p {
font-size: 125%;
}
<div class="left larger">
<p>Life Studio</p>
</div>
第二段代码是一个完美的可通过 W3C 验证的 HTML 代码;它将两个不同的 Class 属性定义在同一 DIV 上,实现让一个段落<p>在向左浮动的同时,将其字体大小设置成文档默认字体的125%倍。
可以想象,这种组合使用 Class 的技术能够减小 CSS 文件大小并提高代码使用效率。
同样值得注意的是,我们也可以将 ID 和 Class 同时定义在某个 HTML 元素上!
那么 ID 与 Class 相比较,我该选择使用哪个?
这是一个初学网页设计的人经常面对的问题,而事实也证明是这样。很多 CSS 编写者将 ID 的用法与 Class 的用法相混淆,这导致他们在同一 HTML 页面上多次使用同一 ID 属性。
虽然这种用法或许并不影响页面的外观(浏览器能正常解析),但却给页面的规范性和日后的网页维护留下了隐患。说它不规范是因为它没有遵循 W3C 推荐的 CSS 使用规范,这样的代码无法通过 W3C 认证,而且不能保证以后的浏览器能够正常的进行解析。说它给日后的网页维护留下隐患是因为正如我们上面所谈到的,Class 的大量使用一方面能够减少 CSS 文件大小,进而加快网页速度;另一方面通过 Class 的组合使用提高 CSS 编程效率,这主要是因为 Class 能够重复使用,无需像 ID 那样,增加一个 ID,必需在对应的 CSS 代码中增加对属性的定义。
结合上面的描述,我推荐给大家如下的规范作为 CSS 的“游戏规则”:尽可能多的使用 Class 定义网页的样式;仅在与 JavaScript 操作相关的 HTML 元素上使用 ID 属性。
Tips:当我们看到一个 ID 时,会意识到有 JavaScript 可能在操作这个元素(方便 JS 代码查错)。
总结
无论怎样,是选择 ID 还是选择 Class?这一切都取决于你。希望本文对大家认识 ID 和 Class 有一定的帮助作用。
本文转自:http://www.docin.com/p-8097684.html
-
让浏览器的私有属性通过 W3C 验证2011年01月15日 -
CSS 或 JS 实现闪烁文字2010年02月8日 -
DIV+CSS与不同IE版本等的兼容性2010年01月31日 -
JS 实现放大镜产品展示效果(二)2009年11月6日
我几块从触及学者编程中级学着了,我看你写的不错,我就是想知道id具体调用,我也查了几个例子,感觉蛮好的
喔喔,同个div可以多个class不可以多个id。
P.s. 从百度上来 ╮(╯▽╰)╭,复习中。
哈哈,我说小邪怎么会把我这么老的文章翻出来呢
博主你好 你的博文都很精彩 刚才已经订阅了你的博客 你的一些技巧对我很有帮助 这几天我也自己动手制作了一个wp主题 P.s:纯原创 现在正在你这里收集JQ的技巧 希望能和你成为朋友
谢谢啊,看了你的主题,是相当的帅啊,欢迎交流
那么 交换个链接如何呢? 其实我也不在乎PR什么的 加个友情链接 方便定期访问
谢谢看的起小站啊,不过我是从来不交换友链的哟,不好意思了
一个可重复,一个不可重复
我来坐第100层楼
嘿嘿……这篇文章写的不错,有时间好好的细细研究一下,CSS里很多的问题我都看不懂呢,等有时间得向博主好好请教一番呢!呵呵……
客气客气,请教不敢当,可以常来交流
這篇不錯! 很多人受益! 其中怎麼選: "id 是唯一, class 是共用." 記這句就行.
很受用,做友情链接不?
不懂CSS要改造WP的皮肤真难,头疼不已。
是啊,我当初接触WP的时候啥都不懂。。。
错字了。。。。。一窍不通=。=
反正我对css一起熬不动,记得视频教程第一课就说这两个鬼东西的区别
对初学者很有帮助。
杯具,实际上小邪花了很长时间才分清楚 #是id .是class ~
万戈是个当老师的好材料!!
我如果当老师,可要蒙害了下一代
这些标准有时还需要有影响力的人来普及一下!
普及就从你我做起~
今天算明白了,以前只是去用,没有注意这些东西。
万戈能否做个友情链接?
不好意思啊,小站暂时不招友链了
w3cschool上我记得介绍也不错
太好了,我正在学习css
这篇文章对帮助好大呀
竟然沒有國旗了~
。。。这不是中国的国旗,你居然无视之
哦,剛剛是我的可樂米抽了,所有的紅旗都沒看見。
瞧瞧現在是什麼國旗
滿滿的球,竟然是美利堅
↑ 哪,這回真的連國旗都沒了 ↑
\ 萬戈又在普及科普呢 、
我也是刚找了一个css3.0的下下来看
CSS3.0有很炫的效果,只是该死的IE不支持
学习了,一般ID只是使用头部,内容,底部等...其他全部用class
大多数情况下就是如此
其实很简单,无复用就用id,有复用就用class。
就像老婆和情人一样。。
这个比喻不错,很形象啊,呵呵
形象生动啊
额 以前研究过一段时间,现在都忘的差不多了。
我自己貌似没有加过ID
全用class肯定不会出错,呵呵
id具有唯一性吧
是的,简单来说就是这样
一般都是class了
恩,我也还是以class为主
看来你现在在学习css啊。
一直是断断续续的学习,没有系统的学过
一般能class的我尽量class 在折腾的的选择
用class肯定不会错,所以很多CSS初学者就滥用class,以前我也这么干过
相当专业哦
多写点高级用法,比如ie6重影怎么去掉
IE6重影?我没有理解雯雯的意思,举个例子吧
。。让我说我还说不出来。汗,就是代码只有一句话,但你看的时候是两句话的。p:怎么没有邮件通知了?
邮件通知当然有,是不是被你扔垃圾邮箱里了
哈哈..前两天刚看的..再学一次...
同样也是介绍class和id,我怎么就说不出这样的水平捏。。。。
哈哈,我也说不出啊,此文乃转载
哈哈。。。学习了,有的细节还真没注意到。。。
如果不注意这个,涉及到JS就会报错了
学习+复习。
老万多发点这类的东西,挺不错的。
已经有MM抗议了,要求我写生活类文章,拒绝看我的技术文。。。
学习了,之前没注意到id对W3C标准的影响
你答上来了没?
ID适合用于有action的div。class适用于大众定义
简洁明了的概括
一下这么多评论!有沙发也不给我开后门~!
内幕沙发,明码标价,一顿饭!
嗯,这篇文章对我有帮助。
这两天我也在学CSS哩,刚开始自学简单的布局,一会让你检查检查我的作业哈
你还用学CSS?619要穿衣服咯
不想再被人说是耍流氓,不想再叫人看不起;这年头,不懂CSS不好混啊

对了老万,我总是在 Clear(清除浮动)上犯错误,害我花了大把的时间 ..
下篇文章能不能详细说说这个clear啊?上下左右,全部清除;用法;用处等等 ..
已经有人总结过了,我找找翻给你哈
it ⊆ 技术
回错了
麻烦万老板把这两条删掉
我从来不删非spam的留言
这么奇怪的字符也能被你打出来。。。
交作业来啰
http://liuyijun.com/lab/css_layout_1.html
哟,还是很不错的嘛,白色的裸男换成黑色的了
哈哈,我会继续努力的
我基本是如火纯情了
呵呵,你是IT界的高人,对于你来说,这是小菜一碟了
it界和技术还不是一个概念吧 呵呵
在我看来,你是IT界与技术界的交集,两者兼顾
it ⊆ 技术
原来这就是生活。很有特色的生活。
不好意思,让盼MM失望了,手一痒就写了篇技术文。。。
不过话说,学习DIV+CSS就是我生活的一部分呐
其实没什么区别的,只需要记住同一个页面里ID只能是唯一的,而class可以出现很多次
恩恩,大牛来指教,牢记牢记!
折腾主题就要认真考虑了,不过我经常在修改中就忘了,当然重复用ID这个低级错误不会,只是我喜欢用class——指小地方。
这个我还是很注意的,但是有时候还是会疏忽,反正用class不会引起javascript冲突,嘿嘿
這兩個我總是搞混。。。
貌似HTML可以有多个相同ID标记(所以不是唯一的),但是在JavaScript中,一个ID只能赋予一次!
编写CSS代码时,良好的习惯是一个ID最最多只能赋予一个HTML标记!
还有个区别:ID不支持像class那样的多风格同时使用....
我的些小小观点!
恩,你说的完全正确,我要表达的就是这个意思
咳咳·!我还没混淆
~!
你是高手,怎会混淆~
今天我来得很早
因为我今天更新的早,打破规律了
怎么能收到你的邮件了
阿凡达之圣母显灵~
那句話國配翻譯成聖母顯靈簡直是讓我雷翻了。。
明明是eywa heard you....
。。。虽然我看的是原版,但我还真没注意这句原话,你现在说来,我还真有点被雷到了
坐个沙发再慢慢看
来的早不如来的巧啊,呵呵