历史前进的步伐是不会停止的,紧跟着CSS3,新的CSS4也即将问世,它正由W3C编辑团队研发中。从历史的角度看,CSS的发展和web浏览器的发展是相互独立的,它们是并行进步的。这就导致不同的浏览器支持不同的CSS规范。但是回到CSS4中,W3C周期性地更新一个CSS4规范,并且我想第一时间给你提供关于已经包含在CSS4中的一些基本信息。
在CSS4中引进了许多的新变化。没有新的虚元素被加进去,似乎将在以后将它们加入到其他的模块中。但是关注最多的就是虚类的发展。下面的元素被添加到了CSS4(当前时刻):逻辑联合,元素和属性选择器,新的虚类,联合器和结构性选择器。下面将重点介绍它们。
逻辑联合:反面和匹配任意虚类
在CSS3中,反面虚类只能用于简单选择器,虚类,标签,身份标识(id),类和类选择器参数。虚元素和联合体(如UL LI或者UL>LI)并不支持,我们也不能反虚类(并不是在其自身里面)。但是在CSS4中,:not()可以运用于一个选择器列和复杂选择器中。现在,选择器列表不在被划分到每个选择器的独立代码块中了。
p:not(.active, .visible) {color: yellow;}
同样适用于匹配类中(一个新的虚类,它允许匹配一个特定元素的样式)。你可以使用匹配虚类将选择器组合起来,使用一行匹配代码将它们组合起来。
article:matches(.active, .visible) {background: green;}
属性选择器:大小写敏感
目前在CSS4中,使用在中括号结束之前的i身份标识时,属性大小不再敏感了,例如:
[frame=hsides i] { border-style: solid none; }
属性“hsides”将会作用于“frame”,无论此属性的形式是“HSIDES”还是“hsides”或者“Hsides”等。并且这也同样作用于XML的大小写敏感的属性值。这在避免漫长的Debug是很有帮助的。
位置虚类
语言虚类
在新的CSS4中有另一个虚类,即:dir。作为一个方向性的虚类,它用于HTML5来帮助我们决定元素的方向,和其他一些因素(比如周围的文本)。A:dir(rtl)虚类将会让一个元素从右到左的朝向,而a:dir(ltr)将会给一个元素从左向右的朝向。注意,:dir与[dir=..]是完全不同的东西,因为:dir匹配的值是取决于UA的。
在语言虚类中的:lang有了新的变化。目前,:lang可以执行通配符匹配。例如,:lang(de-DE)将匹配所有符合的语言标签,并不仅仅只有'de-DE'和'de-DE-1996'。在主要语言(或者第一个子标签)的统配匹配,使用一个星号来完成。例如,*-CH将会匹配’de-CH','it-CH',等等。
查看如下例子,其描述如下:
html:lang(fr-be) html:lang(de) :lang(fr-be) > q :lang(de) > q
位置虚类指向访问者在你网站上的位置(不要将其与地理编码混淆了)。位置虚类有了新的变化。其中有一个名为:any-link的超链接虚类,它表示任何一个超连接的source anchor(根节点?)元素。
第二个是:local-link虚类,它根据访问者在站点中的位置来装饰超链接的样式。此虚类也可以区分外部和内部超链接。在没有功能性的使用中,:local-link指向的是一个具有其目标和此元素文档URL相同的source anchor hyperlink(真的好难翻译)的元素。带功能性的使用中,:local-link可以在一个等级体系中,如下所示:
- :local-link(0) – 代表一个连接元素,其target和文档的URL是在同一个源中。
- :local-link(1) – 代表一个连接元素,其target具有相同源和第一个路径片段。
- :local-link(2) – 代表一个链接元素,其target具有相同源和第一个、第二个路径片段。
- 等等