CSS样式表:详细介绍IE7新支持的选择器(5)
作者:w3cpro.cn翻译 来源:蓝色理想 发布时间:2007-10-09 18:24:00
让我们最后阐明下窍门
考虑到一个元素包含很长的链接元素和其他(我们的例子没有提到)。如果你写个a{color:red;},所有的链接都是红色。现在写 a+a {color:red;},这个结构选择了另外一个直系跟随的链接。在我们的链接元素里每个链接都符合这样的描述,除了第一个链接。不要陷入到认为这个想法将选择互动链接。所有规则的意思是寻找和选择拥有直系并且在它前方有链接的任何链接。明显的除了第一个链接每个链接都是一致符合要求的。
第一个链接不跟随任何级数的链接,所以a+a{color:red;}没有被选择。知道这个事实,想象下在这个结构里我们添加另外兄弟选择符和“a”选择器每次会发现什么情况。a+a+a{color:red;}排除最初的两个链接,a+a+a+a{color:red}排除最初三个链接,等等。
所以如果你曾经看过,或你自己使用这个选择器窍门,仅仅只要记住这个基本规则:参加的兄弟选择器数目等于序列里第一个被选择的元素的位置。如果这里有8个"a"选择器通过七个兄弟选择符联合,第八个链接和级数里剩余的所有链接将被选择。因而,你可能把相同类型的一系列元素划分为两组,或是为后面的一组使用新样式或是为全组更换样式,然后再为后面的一组更换样式,你自己选择。
浏览器问题
IE7非常不幸的认为HTML注释也是真实的DOM元素,所以如果你在错误的地方使用注释,IE7将会把它当作兄弟计算在内,而你设定的选择器将不会工作。使用兄弟选择符时只要了解这个问题注意让注释出现在不会惹麻烦的地方。
另外一个知道的兄弟选择符问题,除了opera 9外的所有浏览器,当额外元素是经script增加的,它们不会解释基于样式表的兄弟选择符。所以如果你用script在元素中建立一个新的段落,只有Opera 9才会认识到从而改变样式。其他当前浏览器只会忽略动态结构,在新的元素添加进来前保持原来样式。
额外介绍下:first-child伪类
IE7新支持:first-child伪类。这个选择器的语法和用法和 :hover伪类相似,:first-child选择元素里出现的第一个子部,用法像:hover一样,比如链接会是a:first-child。
我们认识到使用:first-child比仅使用兄弟选择符来的简单。但在怎样获得赞扬或是用:first-child伪类选择器替换它之前,我们希望大家同样认识到兄弟选择符是怎么独立运用的。
比较下面的代码,使用:first-child简单许多。
使用 :first-child之前
div>div>div+p a {color: red;}
div>div>div+p a+a {color: blue;}
使用 :first-child...
div>div>div+p a:first-child {color: red;}
:first-child确实让工作简单许多!不需要另外规则改变样式,只要记住当使用:first-child,它只作用于第一个子部first child。没有其他兄弟元素被选择,所以我们还需要兄弟选择符的才干。
我们可不可以使用兄弟和子选择符联合:first-child?当然可以,子选择符看起来没有问题。可是,兄弟选择符不能直接跟在:first-child前面,因为很明显第一个子部不可能有上面的兄弟
IE的问题
IE7似乎有一个问题,当兄弟选择符比:first-child在选择器中来的晚,IE7顺从兄弟选择符。这个情况也在其他浏览器有,但IE7显然不能处理相关的复杂性。这看来不够完美,不过至少IE7支持简单适度的联合结构,或许现在就可。
所以脑袋里记住,作为兄弟选择符,IE7将会考虑第一个链接前面的html注释为元素节点,而且IE7会选择注释代替,甚至你使用a:first-child都没用。IE7不关心:first-child伪类前面的"a",它仍然坚持选择注释(注释和第一个链接在同一个容器而且在链接前面)。所以当你使用注释和高级CSS选择器要清楚了解真相。
结论
我们希望这篇文章没有给你们带来困惑,当支持更多选择符时了解更多可以用到的可能性样式。这在IE7大规模推广前还没有用处,现在你可以做好准备,至少关注已经支持的选择符。
作者:John Gallant , Holly Bergevin 翻译:w3cpro.cn
原文地址:http://www.communitymx.com/content/article.cfm?cid=1C603
翻译地址:http://www.w3cpro.cn/article/xhtmlcss/124.html
猜你喜欢
- 当元素设置浮动(float)后会被移出文档流,相信大家都会经常遇到这样的问题。这问题的解决办法有N种之多,因为每种浏览器对CSS的解析各异,
- 本节笔者主将要介绍Active Server Page的另一对象Response,Response对象的作用是在向浏览器发送数据。将Resp
- 在ASP.NET2.0通过SMTP的验证发送EMAIL ,代码如下:’Create a new MailMes
- 1、元旦之前受赵晨之邀作为讨论嘉宾参加了ACM组织的“人与信息社会巡讲”。2、去之前赵晨发给了我大致的讨论提纲。咣当了好几下~说实话,我是硬
- ASP+Access数据库的18条安全法则:1.首先,我们需要过滤所有客户端提交的内容,其中包括?id=N一类,另外还有提交的html代码中
- 无论是 DAO 还是 ADO 都有两种从 Recordset 对象中查询记录的方法: Find 方法和 Seek 方法。在这两种方法中可以让
- 但是如果是让你接手一个二等残废的网站,并让你在上面改版,而且不能推翻式改版,只能逐步替换旧的程序,那么你会非常痛苦,例如我遇到的问题: 问题
- 1,建立数据库文件cnbruce.mdb(不设计任何表)建立数据库的代码:<% Option Explicit&
- 今天下午,低一度博客受到攻击了,出现了大约一个小时的访问异常。庆幸的是,这帮无耻歹徒没能成功获取我的Access数据库,而只是象征性地给我注
- XA事务支持限于InnoDB存储引擎。MySQL XA实施是针对外部XA的,其中,MySQL服务器作为资源管理器,而客户端程序作为事务管理器
- 数据库连接字符串的常见问题和解决方法:基本知识1:SQL Server数据库的身份验证方式,分windows验证,SQL Server验证两
- 1. position:static所有元素的默认定位都是:position:static,这意味着元素没有被定位,而且在文档中出现在它应该
- <%'============================================================
- 我设了个排卖的起始时间然后设了一个结束时间现在要精确到小时比如提示 “离到期时间:1天XX小时”大家有什么想法吗?我就是在小时总是不能实现,
- [root@vm1 ~]# rpm -ivh groundwork-foundation-pro-1.6.1-67.noarch.rpm P
- 上文:栅格:一以贯之Jacci Howard Bear 的英文原文:http://desktoppub.about.com/od/grids
- 如何正确显示模式对话框中的中文?msg.htm <html> <head> &nbs
- CSS布局作为一个热门技术,发展的确有些缓慢。CSS最早被提议在1994年,最早被浏览器支持在1996年,CSS一直被力捧为传统的以HTML
- “用户体验(User Experience,简称UX 或 UE)是一种纯主观的在用户使用一个产品(服务)的过程中建立起来的心理感受。因为它是
- 本节列出了可以运行MySQL的操作系统。我们使用GNU Autoconf,因此将MySQL移植到所有使用Posix线程和C++编译器的现代系