详解CSS3中的属性选择符

作者:dudo 来源:dudo says 时间:2008-04-24 14:30:00 

英文原文:
http://www.456bereastreet.com/archive/200601/css_3_selectors_explained/

中文翻译:
http://www.dudo.org/article.asp?id=197

注:本文写于2006年1月,当时IE7、IE8和Firefox3还未发行,文中所有说的浏览器支持均未包括这三个版本的浏览器。在IE8和Firefox3中,文中的大部分选择符已经被支持[dudo注]

在2005年的9月和10月,我先后发表了几篇关于CSS2.1中选择符的介绍文章。大体看来那几篇文章中介绍过的大部分选择符都已经可以在像Mozilla/Firefox,Safari和Opera等现代浏览器中使用了。我们现在要做的就是等待Internet Explorer尽快赶上来,那我们就可以尽情地使用CSS2.1中的选择符了。好在Internet Explorer在其第7个版本中已经在尽力追赶了,至少在某些扩展方面。

如果我们再向前看一点,在CSS3中还有功能更加强大的选择符等待我们去发掘和使用。CSS3中的很多选择符已经在现代浏览器中得到很好的应用(IE8.0中也已经部分地支持了CSS3,dudo注),但是这些基本功能上的支持还远远不能满足开发者使用的要求。但是在某些情况下使用他们可以带来很好的超前体验,因此我认为了解一下CSS 3新增选择符是如何使用还是有益处的。

本文中对选择符描述主要是参考了《2005年12月15日W3C制定的选择符草稿》。草稿中讲到的新的选择符可能会在CSS的第3个版本中出现,但是也可能会出现在其他语言中。如果你是几个月前甚至是几年前读过这篇草稿,那么现在你应该再去看一下是不是已经出现了最新版本了。

这里我不打算去解释CSS选择符工作的基本原理。如果你想重要复习一下的话,最好从《细说CSS2.1中的选择符》开始。
首先,快速浏览一下CSS3中新增的选择符:

CSS3选择符语法概览

选择符类型表达式描述
子串匹配的属性选择符E[att^="val"]匹配具有att属性、且值以val开头的E元素
子串匹配的属性选择符E[att$="val"]匹配具有att属性、且值以val结尾的E元素
子串匹配的属性选择符E[att*="val"]匹配具有att属性、且值中含有val的E元素
结构性伪类E:root匹配文档的根元素。在HTML中,根元素永远是HTML
结构性伪类E:nth-child(n)匹配父元素中的第n个子元素E
结构性伪类E:nth-last-child(n)匹配父元素中的倒数第n个结构子元素E
结构性伪类E:nth-of-type(n)匹配同类型中的第n个同级兄弟元素E
结构性伪类E:nth-last-of-type(n)匹配同类型中的倒数第n个同级兄弟元素E
结构性伪类E:last-child匹配父元素中最后一个E元素
结构性伪类E:first-of-type匹配同级兄弟元素中的第一个E元素
结构性伪类E:only-child匹配属于父元素中唯一子元素的E
结构性伪类E:only-of-type匹配属于同类型中唯一兄弟元素的E
结构性伪类E:empty匹配没有任何子元素(包括text节点)的元素E
目标伪类E:target匹配相关URL指向的E元素
UI元素状态伪类E:enabled匹配所有用户界面(form表单)中处于可用状态的E元素
UI元素状态伪类E:disabled匹配所有用户界面(form表单)中处于不可用状态的E元素
UI元素状态伪类E:checked匹配所有用户界面(form表单)中处于选中状态的元素E
UI元素状态伪类E::selection匹配E元素中被用户选中或处于高亮状态的部分
否定伪类E:not(s)匹配所有不匹配简单选择符s的元素E
通用兄弟元素选择器E ~ F匹配E元素之后的F元素


如果对上面的描述还不是很清楚的,请不要担心。本文下面的部分将会对他们进行更加详细的讲解,并且提供例子来演示他们是怎么使用的。

标签:选择符,伪类,css3,浏览器
0
投稿

猜你喜欢

  • 用 JavaScript 解数学题

    2010-07-09 13:38:00
  • 如何在MySQL查询结果集中得到记录行号

    2008-12-17 15:00:00
  • Oracle SID存在解決方法

    2009-06-19 17:34:00
  • 数据库技巧——MySQL十大优化技巧

    2011-01-31 16:44:00
  • IE9硬件加速性能远超Chrome5.0和Firefox4.0

    2010-06-09 11:12:00
  • 服务器安装MySQL教程及注意事项

    2008-11-11 12:12:00
  • 学习ASP.NET八天入门:第三天

    2007-08-07 13:30:00
  • 柳永法:vbs或asp采集文章时网页编码问题

    2009-02-04 10:50:00
  • jquery 常用操作

    2010-01-12 16:00:00
  • “生活”设计

    2009-03-03 12:14:00
  • 在SQL触发器或存储过程中获取在程序登录的用户

    2012-01-29 18:01:32
  • 学习ASP.NET八天入门:第八天

    2007-08-07 13:55:00
  • asp会员系统如何实现“忘记密码”

    2007-09-19 12:17:00
  • Mootools 1.2教程(9)——输入过滤第二部分(字符串)

    2008-12-01 12:25:00
  • Oracle中返回结果集的存储过程分享

    2012-07-11 15:50:16
  • 请给PNG8一个机会

    2009-09-16 14:22:00
  • 如何更改mysql命令下提示信息

    2010-10-25 19:48:00
  • mysql5在rhel5下乱码问题及解决方法

    2010-12-03 16:26:00
  • Asp下Access无法更新的解决方法

    2012-12-04 20:19:35
  • 网站升级兼容firefox经验小谈

    2007-10-28 20:28:00
  • asp之家 网络编程 m.aspxhome.com