打印

[教程] [译文] CSS 3 选择器解释

本主题由 blank 于 2008-8-7 10:29 分类
Roger Johansson (这个老外仿佛是参与编订 W3C 的家伙)前几天写了一个关于CSS 3的文章:CSS 3 selectors explained 里面说了去年12月份w3c最新制定的CSS 3的新标签、新用法,我用机器翻译看着也蛮爽的,把看得懂的摘录下来,大家也学习一下先进经验。呵呵~

在CSS 3里,假设你做了一个包含以下标签结构的HTML文件:
复制内容到剪贴板
代码:
<div id="nav-primary"></div>
<div id="content-primary"></div>
<div id="content-secondary"></div>
<div id="tertiary-content"></div>
<div id="nav-secondary"></div>
然后呢,在CSS文件里
复制内容到剪贴板
代码:
div[id^="nav"] { background:#ff0; }
注意是“^
CSS在这种情况下将控制div#nav-primary 和div#nav-secondary。请大家注意,这两个标签前面都有 nav ,到底是以"-"做为分隔,还是把ID进行从前至后匹配就不得而知了 [sweat]
复制内容到剪贴板
代码:
div[id$="primary"] { background:#ff0; }
注意是“$
CSS在这种情况下将控制div#nav-primary 和div#content-primary。请大家注意,这两个标签后面都有 primar ,到底是以"-"做为分隔,还是把ID进行从后至前匹配也就不得而知了 [sweat]
复制内容到剪贴板
代码:
div[id*="content"] { background:#ff0; }
注意是“*
CSS在这种情况下将控制div#content-primary div#content-secondary 和div#tertiary-content。请大家注意,这些标签都含有 content ,到底是以"-"做为分隔,还是把ID自动扫描后匹配就更不得而知了 [sweat]

好象作者说这几个标签现在除了IE不支持,其它最新版的各种浏览器都支持了,大家可以一试,我就不试了~ [lol]
复制内容到剪贴板
代码:
div#content-primary:target { outline:1px solid #300; }
注意那个“:target
CSS在这种情况下将控制 http: //www.example.com/index.html#content-primary 这个锚链接(锚链接差不多可以理解就是一个网页内的链接,比较在有些网页看到的回到顶部

作者说现在Mozilla 和 Safari浏览器支持这个
复制内容到剪贴板
代码:
input[type="text"]:enabled { background:#ffc; }
input[type="text"]:disabled { background:#ddd; }
注意那个“[type="text"]:enabled
这个就是控制表单的CSS了,“[type="text"]”好象是表单里type是text的吧。。。那type="password"会是啥呢?
复制内容到剪贴板
代码:
input:checked { border:1px solid #090; }
注意那个“:checked
这个就是控制表单的“选择”的CSS了。。。

作者说现在Opera和Mozilla浏览器支持这些
复制内容到剪贴板
代码:
:root { background:#ff0; }
html { background:#ff0; }
大家注意那个“:root
这个“:root”是比 html 还要高一级的标签,这个大家可以看 一叶千鸟 写的 正确认识html与body 他在文中发现了原来 html 外面还有个框框,嘿嘿~

作者说现在Mozilla 和 Safari浏览器支持这个

接下来的 :nth-child() 就比较有意思了,呵呵~在括号里可以放数字和默认的字母~
复制内容到剪贴板
代码:
p:nth-child(3) { color:#f00; }
这个意思好象是说以第一个出现的 P 为基础,只要是“3”的倍数的全部 P 都会被控制~
复制内容到剪贴板
代码:
p:nth-child(odd) { color:#f00; }
这个意思好象是说以第一个出现的 P 为基础,然后 奇数 目的全部 P 都会被控制~
复制内容到剪贴板
代码:
p:nth-child(even) { color:#f00; }
这个意思好象是说以第一个出现的 P 为基础,然后 偶数 目的全部 P 都会被控制~
复制内容到剪贴板
代码:
p:nth-child(3n+0) { color:#f00; }
p:nth-child(3n) { color:#f00; }
这两个标签是等效的,因为第一个后面的0等没没起作用,他的意思就是3倍于第一个出现的 P 的 P 都会被控制~(好绕口啊,HOHO~ [rolleyes] )也就是说这个 “n” 会从0.1.2.3.4.5.6....一直取值下去~算出来多少就是多少的 P 都会被控制。。。
复制内容到剪贴板
代码:
tr:nth-child(2n+11) { background:#ff0; }
这个如果大家理解上面的了,这个也不难理解,不过他控制的标签变成了 “tr” 这就是说表格会变得更加变化多端,感觉大家一定要小学算数得好,学得不好得快快回家再学一学小学算数去。。。(不过,这样的标签是不是加重了电脑处理的效率呢? [confused] 希望我的但心是多余的。。。)
复制内容到剪贴板
代码:
p:last-child { background:#ff0; }
在 p 之前的一个 p 被控制 (NND,p来p去的,打pp [sweat] )
复制内容到剪贴板
代码:
:not(p) { border:1px solid #ccc; }
这个p不被控制,自已用自带的样式的意思吧,应该是和前面的那些一起用才是。。。
复制内容到剪贴板
代码:
p ~ ul { background:#ff0; }
ul 优先于 p 显示,这是咋个优先法,不清楚。。。

基本上我看得懂的就这些了,大家可以到下面两个网址接着学习,我有什么说错了,记得告诉我啊 [lol]
http://www.456bereastreet.com/archive/200601/css_3_selectors_explained/
http://www.w3.org/TR/2005/WD-css3-selectors-20051215/

最后,让转载不写人家名字的朋友们高举毛泽东思想伟大旗帜,认真学习 毛主席语录 为共产主义在世界范围内处处开花而努力奋斗吧~ [idea]
本帖最近评分记录

关于CSS 3

做个记号先...有空再看看!

关于CSS 3

不知CSS3浏览器要到什么时候才能很好的支持~

TOP

认证您的手机,获得手机认证图标, 更多手机认证的好处

关于CSS 3

传说中 ie7.5 会完美支持CSS 3

关于CSS 3

到时候现在的新标准又落后了?唉,看来这个虚拟世界是越来越难适应了

TOP

关于CSS 3

顶头几种都试了,FIREFOX1.5.0.1完美支持。
然后“到底是以"-"做为分隔,还是把ID进行从...至...匹配就不得而知了 ”
结果是,“-”不影响,纯粹是对字符进行匹配。

TOP

关于CSS 3

感谢楼主,提供翻译。

打分鼓励楼主可以有更好的翻译文章与原创文章!

另,标题最好改得贴切一点,只是“关于CSS3”有点太广意了!

TOP

引用:
到底是以"-"做为分隔,还是把ID进行从前至后匹配就不得而知了
很明显是匹配.
就象是正则表达式里的 ^ 匹配开头,而 $ 匹配结束.
网络如此多娇 引无数小鸟竟折腰

TOP

哇,正啊,这样的话又省代码啦,而且使代码更加清晰,简洁.

id和class的合体,对象数组,估计以后class会少用很多.
渺小的人

TOP

哇,感觉好多都是XML的规则了。
那些匹配很像XPath中的东东了

TOP

没找到收藏按钮,先回个贴,做个记号,一会看。

TOP

不知道现在的ie8支持的好吗?

[ 本帖最后由 huaganshang 于 2008-8-7 11:50 编辑 ]

TOP

靠,楼上,你挖的坟好深啊,,他那时候那有IE8啊

TOP

引用:
原帖由 DellGrass 于 2008-8-7 10:20 发表
靠,楼上,你挖的坟好深啊,,他那时候那有IE8啊
现在有了

TOP

不是我是问现在啊!!

TOP