除了前几节中介绍的伪类选择器之外,CSS3还为我们提供了其他几种伪类选择器。

  • (1):root
  • (2):empty
  • (3):target
  • (4):not()

一、:root

在CSS3中,我们可以使用:root选择器来选择HTML页面的根元素,也就是。

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> :root { background-color:gray; } body { background-color:red; } </style> </head> <body> <h1>绿叶学习网</h1> </body> </html>

浏览器预览效果如下图所示。

分析:

在这个例子中,我们使用:root选择器来定义整个页面的背景色为灰色,然后将body元素的背景色定义为红色。其中,下面两句代码是等价的:

:root{background-color:gray;} html{background-color:gray;}

从这个例子的预览效果,我们也应该知道:如果想要设置整个页面的背景色,我们应该针对html元素来设置,而不是body元素。

二、:empty

在CSS3中,我们可以使用:empty选择器来选择一个“不包含任何子元素和内容”的元素,也就是选择一个空元素。

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> table,tr,td { border:1px solid silver; } td { width:60px; height:60px; line-height:60px; text-align:center; background-color: #FFA722; } td:empty { background-color:red; } </style> </head> <body> <table> <tr> <td>2</td> <td>4</td> <td>8</td> </tr> <tr> <td>16</td> <td>32</td> <td>64</td> </tr> <tr> <td>128</td> <td>256</td> <td></td> </tr> </table> </body> </html>

浏览器预览效果如下图所示。

分析:

像HTML5的2048小游戏就可以用到:empty选择器。此外在实际开发中,对于表格中内容为空的单元格,我们往往为其设置不同的颜色,这样也会使得用户体验更好。

三、:target

在CSS3中,我们可以:target选择器来选取页面中的某一个target元素。所谓的target元素,指的是id被当成页面的锚点链接来使用的元素。

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> :target h3 { color:red; } </style> </head> <body> <div> <a href="#music">推荐音乐</a><br /> <a href="#movie">推荐电影</a><br /> <a href="#article">推荐文章</a><br /> </div> ……<br /> ……<br /> ……<br /> ……<br /> ……<br /> ……<br /> <div id="music"> <h3>推荐音乐</h3> <ul> <li>林俊杰-被风吹过的夏天</li> <li>曲婉婷-在我的歌声里</li> <li>许嵩-灰色头像</li> </ul> </div> ……<br /> ……<br /> ……<br /> ……<br /> ……<br /> ……<br /> <div id="movie"> <h3>推荐电影</h3> <ul> <li>蜘蛛侠系列</li> <li>钢铁侠系统</li> <li>复仇者联盟</li> </ul> </div> ……<br /> ……<br /> ……<br /> ……<br /> ……<br /> ……<br /> <div id="article"> <h3>推荐文章</h3> <ul> <li>朱自清-荷塘月色</li> <li>余光中-乡愁</li> <li>鲁迅-阿Q正传</li> </ul> </div> </body> </html>

浏览器预览效果如下图所示。

分析:

当我们点击锚点链接时,对应的target元素下面的h3字体颜色就会变成红色。在实际开发中,:target选择器一般都是结合锚点链接来使用的,这样可以实现用户体验更好的导航效果。

四、:not()

在CSS3中,我们可以使用:not()选择器来选取某一个元素之外的所有元素。这个选择器非常重要,在实际开发中用得非常多,大家要重点掌握。

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> *{padding:0;margin:0;} ul{list-style-type:none;} ul li:not(.first) { color:red; } </style> </head> <body> <ul> <li class="first">绿叶学习网</li> <li>绿叶学习网</li> <li>绿叶学习网</li> <li>绿叶学习网</li> </ul> </body> </html>

浏览器预览效果如下图所示。

分析:

对于“ul li:not(.first)”这个选择器,我们分两步来看:首先.first表示选择class="first"的元素,即第一个li元素。因此,“ul li:not(.first)”表示选择ul元素下除了第一个li元素之外的所有li元素。

如果没有借助:not()选择器,想要实现上面这种效果是非常麻烦的一件事,冗余代码也非常多。实际上,:not()选择器跟数学集合中的补集(如下图所示)是非常相似的,我们可以对比联系一下。