CSS4 选择器

标签: CSS4 CSS 相关 css w3c | 发表时间:2011-10-09 14:51 | 作者:sofish iVane
出处:http://sofish.de

CSS3 还没完全用上,CSS4 已经提上日程。官方发布了 update to the working Selectors Level 4 spec,对选择器做了一些升级。前端最大的优点就是技术更新快,可以经常学到新东西;最大的缺点也是技术更新快,要跟上潮流还真不是那么简单。不过,这次更新有像“父选择器”这样让人兴奋的内容,让我们先睹为快,了解一下吧:

一、父元素 $E > F

CSS 终于有了与 DOM 一样的父选择器。这个选择器将会把样式显示在包含有 F 的 $E 上。用 $ 符表示父选择器:

/* 样式显示在 li 上 */
$li > p { border: 1px solid #ccc; }

/* 样式显示在 ol 上 */
#wrapper > $ol > li { background:#f8f8f8; }

二、ID匹配 E /foo/ F

用双斜杆(//)包含 HTML 属性名。 E /foo/ F 表示选中的所有页面中所有 F 里 ID 值与 E 元素的 foo 属性值相等的。

<!-- 我们写一个 tab 的时候通常使用这样的情况 -->
<ul>
    <li targetID="tab1">trigger1</li>
    <li targetID="tab2">trigger2</li>
</ul>
<div>
    <p id="tab1">tab1 content</p>
    <p id="tab2">tab2 content</p>
</div>
/* 样式应用与当前 :hover 所在的 li 的 target ID 属性值相等的 p 上 */
li:hover /targetID/ p { border:2px solid #609060; }

三、匹配 :matches

div:matches(s1, s2) 所有div 匹配 s1 和 s2 的时候,这个 div 应用样式。比如我们想在 label 在 hover 状态的时候,所对应有 input 边框变成紫色(#609060),可以这样写:

label:matches(:hover, :focus) /for/ input{ border:1px solid #609060; }

有一点值得注意的是,只有 compound selectors 可以应用于 :matches() ,它自己不能嵌套自己,所以像 :not(): :matches(:matches(...)):not(:matches(...)) 都是不合法的。更多»

四、链接相关 :any-link & :local-link

:any-link 匹配任何链接,:local-link 匹配任何本地链接。:local-link(n) 可以加参数,n 表示链接 path/ (目录的级数),从序数 0 起算。官方文档描述得不是很清楚。像 a 和 :any-link 其实是一样的,而 div:any-link 呢?应该是拥有 src / href 值的 div 被选中。:local-link 看起来更有用。

/* 匹配所有与页面域名相同的链接,这样所有内部链接都会变成紫色的,而外部链接都是红色 */
a{color:#f30;}
a:local-link{ color:#609060; }

/* 匹配所有具有 2 级目录的内部链接:
 * 如:http://sofish.de/path1/path2/
 */
a:local-link(2) { color:#080; }

五、状态 :current & :pass & :future

状态选择器描述太不清楚了。是指一切在时间线内的东西。可以看一下这篇吐槽,说是在 twitter 等的回复都说对这个规范都是完全不知所言。按理来说,应该是在页面的有时间线的 canvas, video, audio, 屏幕阅读等的内容上应用样式:

/* 时间线内当前被处理(选中)的元素,如果是 p 或者 li 背景变成浅黄色 */
:current(p, li){ background:#ffc; }

:pass 表示时间线上的前一个元素,如果不在时间线内,则指其前一个元素(相当于 DOM 的 prevSibling)。

:future 表示时间线上的后一个元素,如果不在时间线内,则指其后一个元素(相当于 DOM 的 nextSibling)。

六、方向 :dir

根据 HTML 属性选中。比如选中 <p dir="rtl"> ,如代码:

p:dir(rtl){ color:#888; }

七、默认选项 :default

选中多个子元素中的默认元素。比如 select 中的默认 option,允许有多个 :default。比如在允许多选的 select 中,有多个 :default 元素。

option:default { background:#ffc; }

八、表单限制 :required & :optional

表单项中必处理项与可选项。记不记得 HTML5 中的 required 属性?!说的就是这个。

input:required { color:#f30; }

九、可读可写 :read-write & :read-only

大部分元素都是可读不可写的,所以都是 :read-only;像 text input 这些值可以改变的,和 HTML5 中设置了 contenteditable 的元素其本身是可改变的,这些被认为是具有写属性的,所以是 :read-write

:read-write { font-family: Georgia; }

十、:vaild & :invaild / :in-range & :out-of-range

官方文档表示写得很不容易懂。数据和范围,估计都说是 [XFORMS10] 和 [HTML5] 中的一些内容。

总结:

好吧,这就是 CSS4 选择器更新的内容。或许还有些遗漏我没发现的。表示对于父选择器和匹配选择器都很期待。而对于一些规范描述不太清楚的,大家可以先了解了解就可以了。毕竟还只是预览版。

参考文献:

Selectors Level 4 – W3C Working Draft 29 September 2011
CSS4 Preview – Selectors
[selectors4] "time-dimensional canvas"?


© 2011 幸福收藏夹。 版权所有,转载务必注明。域名已经更新为:sofish.de
注意:当你觉得某篇文章有用,请直接看原文,因为通常我都会在写了文章后更新、去错别字、升级观点之类的。

相关 [css4 选择] 推荐:

CSS4 选择器

- iVane - 幸福收藏夹
CSS3 还没完全用上,CSS4 已经提上日程. 官方发布了 update to the working Selectors Level 4 spec,对选择器做了一些升级. 前端最大的优点就是技术更新快,可以经常学到新东西;最大的缺点也是技术更新快,要跟上潮流还真不是那么简单. 不过,这次更新有像“父选择器”这样让人兴奋的内容,让我们先睹为快,了解一下吧:.

CSS4 Media Queries 新特性

- - 葵中剑's Blog - SwordAir.com
来自 css3.info 的消息,CSS4 Media Queries 已经成型,尽管它现在还只是一份 编辑草案,不过我们仍然可以从中看到新的 Media Queries 所具备的特质. 在 Changes Since the Media Queries Level 3 一节里,就能看到 CSS4 Media Queries 的新特性.

转载 选择

- bravusliu - caowumao的博客

JQuery 选择器

- - CSDN博客Web前端推荐文章
}

点击我

.    像上面这样把JavaSript代码和HTML代码混杂在一起的做法同样也非常不妥,因为它并没有将网页内容和行为分离,所以才有JQuery选择器的学习.

点击我

. //给class为demo的元素添加行为.

选择性闭嘴

- 蓓 - 土摩托日记
除了熟人之外,文青博客我追看的不多,总数不会超过10个,因为大多数这类博客的营养都欠奉. 一个是连岳,他的感情QA还是挺好看的,某些政论文字也还不错. 但这厮喜欢掺和科学的事儿,不止一次误导过读者. 就拿地震预报来说吧,他哪有资格评论. 看看这个报道,今天距离这则报道正好过去了两个月,可预报的地震仍然没有发生.

mysql选择索引

- - CSDN博客数据库推荐文章
1、尽量为用来搜索、分类或分组的数据列编制索引,不要为作为输出显示的数据列编制索引. 最适合有索引的数据列是那些在where子句中数据列,在联结子句中出现的数据列,或者是在Group by 、Order by子句中出现的数据列. select 后的数据列最好不要用索引. 2、综合考虑各数据列的维度.

jsoup select 选择器

- - 编程语言 - ITeye博客
采用CSS或类似jquery 选择器(selector)语法来处理HTML文档中的数据. 利用方法: Element.select(String selector)和 Elements.select(String selector). Jsoup的元素支持类似CSS或(jquery)的选择器语法的查找匹配的元素,可实现功能强大且鲁棒性好的查询.

我为什么选择MongoDB

- Caiwangqin - 超群.com的博客
我在选用一些技术的时候大多考虑这些方面:. 新的方案能不能解决目前项目中难以忍受的问题. 见过很多的项目为了解决一个稍显复杂的问题引入一个更加复杂的方案,着实累人. 新的方案能不能很平滑的应用到项目中去. 在mongodb之前,我碰到的问题是:. 项目的需求不断变化,数据库表结构需要不断调整来满足新的需求,FriendFeed用的是schema-less方法来解决这种问题,但是schema-less也有一些问题,在设计时候需要考虑动静分离,要不然为了更新某个小数据需要频繁的更新整个大数据块会比较烦躁,数据的一致性和有效性需要在代码中特别注意.

MVC就是个选择题

- Dash - Becomin&#39; Charles
由于采用了Web开发框架来开发项目,所以我首次在真正的项目中采用MVC的开发模式. 随着项目的不断深入,我也在不断反思,MVC设计模式到底给项目带来了什么. 听起来都很难听对吗,但是确实如此. 清晰的代码结构,易于维护,易于扩展. 当然,我不是在批判MVC,只是觉得,在使用MVC过程中,还是需要投入更深入的思考,到底怎样才能用好这个设计模式.

被选择的互联网

- Jacqueline - 月光博客
  连线杂志的那篇《互联网死了》确实震动业界,而现在,百度的框计算似乎正在验证他的话. 无论是高兴也好,无论是哀嚎也罢,百度的框计算终究给最终用户带来了一些实际的东西. 他改变了人们对于传统搜索的认知. 而百度这类似的行为,正成为互联网的一种趋势. 可以说,商业化的大潮,正在人为的割裂互联网,让他的边界越来越明显.