1.c3和c2得区别就是新增了一些东西,c3还是w3c的标准,在原有的基础上面改进了一些,但是还是有一定的缺点,那就是兼容性不太好,毕竟是新出来的东西。
2.接下来我们来看一下有哪些改进的东西;从我们最开始的选择器开始
属性选择器(c3):
E[att^="val"] 选择具有att属性且属性值为以val开头的字符串的E元素
E[att$="val"] 选择具有att属性且属性值为以val结尾的字符串的E元素。
E[att*="val"] 选择具有att属性且属性值为包含val的字符串的E元素.
伪类选择器(c3):
E:not(s) 匹配不含有s选择符的元素E。
E:root 匹配E元素在文档的根元素。
E:last-child 匹配父元素的最后一个子元素E。
E:nth-child(n) 匹配父元素的第n个子元素E。
E:nth-last-child(n) 匹配父元素的倒数第n个子元素E。
E:first-of-type 匹配父元素下第一个类型为E的子元素。
E:last-of-type 匹配父元素下的所有E子元素中的倒数第一个。
E:only-of-type 匹配父元素的所有子元素中唯一的那个子元素E。
E:nth-of-type(n) 匹配父元素的第n个子元素E。
E:nth-last-of-type(n) 匹配父元素的倒数第n个子元素E。
E:empty 匹配没有任何子元素(包括text节点)的元素E。
E:checked 匹配用户界面上处于选中状态的元素E。(用于input type为radio与checkbox时)
E:enabled 匹配用户界面上处于可用状态的元素E。
E:disabled 匹配用户界面上处于禁用状态的元素E。
E:target 匹配相关URL指向的E元素。
伪类对象选择器(c3)
E::placeholder 设置对象文字占位符的样式。
E::selection 设置对象被选择时的颜色。
这些都是c3中新增的选择器,这也是我们要记住的
3.下面来说一下,已经快被遗忘的知识点
就是css hack (说白了,就是浏览器得兼容)
什么是CSS hack:由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。
官方的解释:
条件hack的if判断有6种:是否、大于、大于或等于、小于、小于或等于、非指定版本
是否:指定是否IE或IE某个版本。关键字:空
大于:选择大于指定版本的IE版本。关键字:gt(greater than)
大于或等于:选择大于或等于指定版本的IE版本。关键字:gte(greater than or equal)
小于:选择小于指定版本的IE版本。关键字:lt(less than)
小于或等于:选择小于或等于指定版本的IE版本。关键字:lte(less than or equal)
非指定版本:选择除指定版本外的所有IE版本。关键字:!
hack的取值:
_:选择IE6及以下。连接线(中划线)(-)亦可使用,为了避免与某些带中划线的属性混淆,所以使用下划线(_)更为合适。
*:选择IE7及以下。诸如:(+)与(#)之类的均可使用,不过业界对(*)的认知度更高
\9:选择IE6+
\0:选择IE8+和Opera15以下的浏览器
这里我们只是作为了解,这种兼容写法,会渐渐的被淘汰
尽可能减少对CSS Hack的使用。Hack有风险,使用需谨慎
通常如未作特别说明,本文档所有的代码和示例的默认运行环境都为标准模式。
一些CSS Hack由于浏览器存在交叉认识,所以需要通过层层覆盖的方式来实现对不同浏览器进行Hack的。
原文:https://www.cnblogs.com/zhangli123/p/12112047.html