开本系列,谈谈一些有趣的
CSS解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的 CSS 属性,赶紧去补习一下吧。
不断更新,不断更新,不断更新,重要的事情说三遍。
谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法
谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型
谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少
谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit
谈谈一些有趣的CSS题目(五)-- 单行居中,两行居左,超过两行省略
谈谈一些有趣的CSS题目(六)-- 全兼容的多列均匀布局问题
谈谈一些有趣的CSS题目(七)-- 消失的边界线问题
谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案
谈谈一些有趣的CSS题目(九)-- 巧妙的实现 CSS 斜线
所有题目汇总在我的 Github 。
十、结构性伪类选择器(:root
,:target
,:empty
,:not
)
 
:root:target:empty:not每一个 CSS 伪类及伪元素的出现,肯定都是为了解决某些先前难以解决的问题而应运而生的。
学习了解它们,是解决许多其他复杂 CSS 问题或者前沿技术的基础。
这里是 4 个基本的结构性伪类选择器,结构性伪类选择器的共同特征是允许开发者根据文档树中的结构来指定元素的样式。
:root
 伪类
 
:root
:root:root<html>语法样式
:root { 样式属性 }譬如,
:root{background:#000}由于属于 CSS3 新增的伪类,所以也可以作为一种 HACK 元素,只对 IE9 生效。
介绍
:rootCSS变量:root:empty
 伪类
 
:empty
:empty考虑一个例子:
div{
height:20px;
background:#ffcc00;
}
div:empty{
display:none;
}<div>1</div>
<div> </div>
<div></div>上述的例子,前两个div会正常显示,而第三个则会
display:none也就是说,要想
:empty[Demo戳我::empty结构性伪类示例]
title=":empty结构性伪类示例" src="http://codepen.io/Chokcoco/embed/VmvWpG/?height=265&theme-id=0&default-tab=css,result&embed-version=2" frameborder="no" scrolling="no" width="320" height="265">
:not
 伪类
 
:notCSS否定伪类,
:not(X)X不能包含另外一个否定选择器。
关于
:not
 伪类不像其它伪类,它不会增加选择器的优先级。它的优先级即为它参数选择器的优先级。- :not
我们知道,选择器是有优先级之分的,通常而言,伪类选择的权重与类选择器(class selectors,例如
),属性选择器(attributes selectors,例如.example)的权重相同,但是有一个特例,就是[type="radio"]。:not()否定伪类在优先级计算中不会被看作是伪类,但是在计算选择器数量时还是会把其中的选择器当做普通选择器进行计数。:not
-  使用 
 将匹配任何非元素的元素,因此这个规则将永远不会被应用。:not(*)
-  这个选择器只会应用在一个元素上, 你不能用它在排除所有祖先元素。 举例来说, body :not(table) a 将依旧会应用在table内部的 
 上, 因为<a>
 将会被:not() 这部分选择器匹配。(摘自MDN)<tr>
:target
 伪类
 
:target
:target#8、纯CSS的导航栏Tab切换方案
:target
:target:checked
所有题目汇总在我的 Github ,发到博客希望得到更多的交流。
到此本文结束,如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。