摘要:开本HTML+CSS入门系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节。
开本HTML+CSS入门系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节。
结构性伪类选择器(:root,:target,:empty,:not)
每一个 CSS 伪类及伪元素的出现,肯定都是为了解决某些先前难以解决的问题而应运而生的。
学习了解它们,是解决许多其他复杂 CSS 问题或者前沿技术的基础。
这里是 4 个基本的结构性伪类选择器,结构性伪类选择器的共同特征是允许开发者根据文档树中的结构来指定元素的样式。
:root 伪类
:root 伪类匹配文档树的根元素。应用到HTML,:root 即表示为元素,除了优先级更高外,相当于html标签选择器。
语法样式
譬如,:root{background:#000} ,即可将页面背景色设置为黑色。
由于属于 CSS3 新增的伪类,所以也可以作为一种 HACK 元素,只对 IE9+ 生效。
介绍 :root 伪类,是因为在介绍使用 CSS变量 的时候,声明全局CSS变量时 :root 很有用。
:empty 伪类
:empty 伪类,代表没有子元素的元素。 这里说的子元素,只计算元素结点及文本(包括空格),注释、运行指令不考虑在内。
考虑一个例子:
CSS
div{
height:20px;
background:#ffcc00;
}
div:empty{
display:none;
}
XHTML
<div>1</div>
<div> </div>
<div></div>
上述的例子,前两个div会正常显示,而第三个则会 display:none 隐藏。
也就是说,要想 :empty 生效,标签中连哪怕一个空格都不允许存在。
:not 伪类
CSS否定伪类,:not(X),可以选择除某个元素之外的所有元素。
X不能包含另外一个否定选择器。
关于 :not 伪类有几个有趣的现象:
:not 伪类不像其它伪类,它不会增加选择器的优先级。它的优先级即为它参数选择器的优先级。
我们知道,选择器是有优先级之分的,通常而言,伪类选择的权重与类选择器(class selectors,例如.example),属性选择器(attributes selectors,例如 [type="radio"])的权重相同,但是有一个特例,就是 :not()。:not 否定伪类在优先级计算中不会被看作是伪类,但是在计算选择器数量时还是会把其中的选择器当做普通选择器进行计数。
使用 :not(*) 将匹配任何非元素的元素,因此这个规则将永远不会被应用。
这个选择器只会应用在一个元素上, 你不能用它在排除所有祖先元素。 举例来说, body :not(table) a 将依旧会应用在table内部的 上, 因为 将会被:not() 这部分选择器匹配。(摘自MDN)
:target 伪类
:target 伪类,在 #8、纯CSS的导航栏Tab切换方案 中已经实践过了,可以回过头看看。
:target 代表一个特殊的元素,若是谈论区别的话,它需要一个id去匹配文档URI的片段标识符。
:target 选择器的出现,让 CSS 也能够接受到用户的点击事件,并进行反馈。(另一个可以接收点击事件的 CSS 选择器是 :checked)。
希望这篇文章可以帮助到你。总之,同学们,你想要的职坐标IT频道都能找到!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号