CSS中如何正确的使用 id 和 class?

  今天有点闲,想向大家请教一下id和class的使用。

  按照字面的意思,id是指一个元素在整个文档中的“唯一标志”,而class则是它所属的“类别”。按照语法,同名的id在一个文档里只应该出现一次,而class名可重复使用。

  但是在具体使用的时候,哪些样式该用id,哪些样式改用class呢?有个答案很简单:

  那些只会在页面中出现一次的元素应该用id来表示。比如页头(header) 页尾(footer),导航菜单(main-menu)等。但是真的这么简单么?

  我先举几个例子来说明我所遇到的尴尬:

  大多数的页面都是两栏布局的:一个主栏(main column),一个侧栏(side column)。就像这样:

  

  OK,我们会用两个div来表示它们。问题来了,应该使用id还是class?按照常规的理解,一个页面只会有一个主栏,一个侧栏咯,所以当然应该用id。文档写成这:

  <div id="main-col"></div>

  <div id="side-col"></div>

  #main-col { float: left; width: 700px;}

  #side-col { float: right; width: 200px; }

  也是很赏心悦目的,不是么?所以我决定用id。

  于是页面做好了,网站做好了,上线了,运营了,访问量大了。这时候公司决定,嗯,我们应该在一些页面中加几个通栏广告。“通栏”哦!这就意味着它必须横跨主栏和侧栏,把它们俩拦腰截断。于是我们重新“发明”一个样式:banner,让banner来一个clear:both; 然后放到页面中间去阻止掉两个栏的浮动。然后再在banner的后面继续分两栏。下面是示意图:

  

  所以HTML应该是这样:

  <div id="main-col"></div>

  <div id="side-col"></div>

  <div class="banner></div>

  <div id="main-col"></div>

  <div id="side-col"></div>

  问题轻松解决(多亏偶经验丰富啊,表扬一下自己,咔咔。)。唯独只有一个问题:main-col和side-col这两个id重复了。这个问题其实也不麻烦,把它们全部改成class不就好啦(甚至,不去改它,我就不信浏览器会给我报错,哼)。

  但是,我这不是自己给了自己一个嘴巴么?当初还信誓旦旦的说,main-col只会出现一次,所以用id……。所以教训就是,main-col和side-col,或是left-col, right-col ,extra-col, xxx-col,这些用来分栏布局的样式,都给我用class。嗯,记在本本上。

  设计页面的时候,在页头和主菜单之间放了一个搜索框(search-box)。既然我们的页头(header),导航栏(main-menu),登录框(login-box)都用的是id,和它们在一起的search-box也应该用id咯?呃,小心啊,老板很可能会让你在页尾也放一个搜索框的,你用id你就死定了。所以search-box应该用class。不过这样怪怪的,凭什么login-box用id,而search-box却用class呢?

  慢着,你以为导航栏就可以保证唯一了么?我来讲一个例子:

  

  喏,老板要来一点不同的,让把导航栏放在左侧。这个没问题,用一个ul就搞定拉。我把它的id设置成main-menu但是过了一会儿,他说,嗯,为了可用性(咳咳。。),我们需要把菜单分成两部分。就像:

  

  呃。。好说,分成两个ul就好了。但是,它们的id都叫main-menu么??哎,老问题又来了。

时间: 2025-01-21 19:03:35

CSS中如何正确的使用 id 和 class?的相关文章

学习网页制作CSS中如何正确运用颜色

css|网页 网页中因为有颜色而精彩,那么我们如何利用CSS来处理颜色呢? CSS拥有1677216色供你处置,可以用名字,rgb(红绿蓝)值或者十六进制代码(hex)值来表示. 红色red相同于rgb(255,0,0)相同于rgb(100%,0%,0%)相同于#ff0000相同于#f00有16中合法的预定义颜色名字.它们是:aqua(水绿). black(黑).blue(蓝). fuchsia(紫红). gray(灰). green(绿).lime(浅绿). maroon(褐).navy(深蓝

在CSS中插入javascript

css|javascript|插入 quirksmode站点的制作者发现了一个有趣的技巧.CSS中的background-image属性可以插入Javascript.遗憾的是目前只有IE5/6支持.(IE7我没有条件测试) 运行代码框 <style type="text/css">#test { border: 1px solid #000000; padding: 10px; background-image: url('javascript:alert("看到

CSS中id和class的区别和用法

在一个网页里ID只能使用一次.当然即使一个id在一个网页内被使用多次,其CSS样式仍然可以实现生效,但是一般规定W3C标准是使用一次.因为ID在html里可以赋予html标签特殊的属性如一下JS动作.表单传值等特性所以区别于一个class可以使用多少的次,而一个CSS 命名的id只能使用一次避免一些特定动作.传的表单值的兼容性特性错误即使没有其它JS脚本动作.表单传值特性但是我们也一定执行一个页面只能使用一次. id 选择器以 "#" 来定义,命名CSS选择器. 定义命名css id选

css中Class与ID的区别

个class是用来根据用户定义的标准对一个或多个元素进行定义的.打个比较恰当的比方就是剧本:一个class可以定义剧本中每个人物的故事线,你可以通过css教程,网页特效等来使用这个类.因此你可以在一个页面上使用class="frodo" ,class="gandalf",class="aragorn"来区分不同的故事线.还有一点非常重要的是你可以在一个文档中使用任意次数的 class. 至于id,通常用于定义页面上一个仅出现一次的标记.在对页面排

html-本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题

问题描述 本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题 FIREFOX浏览器,代码如下: HTML代码片段: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @import url(template/default/styl

DIV+CSS中id和class的使用原则

本文向大家描述一下DIV CSS中id与class使用原则,在前面的文章里讨论过很多DIV CSS布局的技巧,我们在用CSS来控制网页布局时我们可能都会遇到一个问题:当定义一个属性时,是使用id,还是使用class?这里和大家说明一下,相信本文介绍一定会让你有所收获. DIV CSS中id与class使用原则 在51cto.com前面的文章里讨论过很多DIV CSS布局的技巧.在用CSS来控制网页布局时我们可能都会遇到一个问题:当定义一个属性时,是使用id,还是使用class?今天51cto.c

CSS中的滑动门技术

css 原文作者:Douglas Bowman 原文出自:A List Apart 中文翻译:54player.com nobita 版权说明:本文中文翻译版权归译者54player.com nobita所有.需要转载发表的,请先与作者联系 在CSS中,一个经常被人们讨论的先进之处即背景图像的可层叠性,并允许他们在彼此之上进行滑动,以创造一些特殊的效果.根据CSS2.0当前的规定,每一个背景图像都需要各自的HTML元素.在许多情况下,典型的标记已经为一般的接口组件提供了多种元素以供我们使用. 标

CSS中以图片替换文字的表现方法

css 今天有个朋友做网页的时候遇到个问题:想保留链接的背景,但又要链接里的文字消失!可是弄了半天一直没办法把这个文字去掉.我想很多学标准的朋友都遇到过这个问题,这里我把常用的几个方法写出来,把思路也讲一下,希望能帮助刚开始学习的朋友. "以图换字"就是用图片替换文字表现.我们都知道,文字在浏览器里的表现形式是很差的,会有锯齿,没办法圆润还有没办法做很多效果.一般情况下网页的内容部分是不需要做效果的,但是在WEB标准中对于LOGO.标题,常常需要用到这些.用表格来做的话我们只是在某个地

CSS中的滑动门技术研究

css 在CSS中,一个经常被人们讨论的先进之处即背景图像的可层叠性,并允许他们在彼此之上进行滑动,以创造一些特殊的效果.根据CSS2.0当前的规定,每一个背景图像都需要各自的HTML元素.在许多情况下,典型的标记已经为一般的接口组件提供了多种元素以供我们使用. 标签导航栏就是其中的一个例子.过去,我们频繁的使用这些标签,并已成为了一种非常流行的站点导航方式.现今,在CSS已被广泛支持的前景下,我们可以为我们站点制作出更高质量和更好外观的标签导航栏来.你也许知道CSS可以用来"驯服"无