此 CSS 对以下标记进行操作(为简单起见已简化):
<nav id="colorNav">
<ul>
<li class="green">
<a href="#" class="icon-home"></a>
<ul>
<li><a href="#">Back to the tutorial</a></li>
<li><a href="#">Get help</a></li>
</ul>
</li>
<li class="red">
<a href="#" class="icon-cogs"></a>
<ul>
<li><a href="#">Payment</a></li>
<li><a href="#">Notifications</a></li>
</ul>
</li>
</ul>
</nav>
选择器的目标是:before
最内层元素上的伪元素,这些li
元素也是其父元素中的第一个元素:
#colorNav li ul li:first-child:before
此处的代码中缺少但在原始教程中存在的以下注释:
/* the pointer tip */
这组特殊的规则用于创建出现在下拉菜单顶部的小三角形,指向其关联的块(如下图,用红色圆圈强调):
然后创建这个三角形的样式如下:
content: none; /* Pseudo-element has no content */
position: absolute; /* It's positioned absolutely */
width: 1px; /* It has a width of 1 pixel */
height: 1px; /* And a height of 1 pixel too */
border: 5px solid transparent; /* Applies initial border style */
border-bottom-color: #313131; /* Overrides bottom border color */
left: 50%; /* Moves it half-way from the left */
top: -10px; /* And 10px up above the element */
margin-left: -5px; /* Margin, half of width, to center */
最终结果是一个纯粹用 CSS 中的边框创建的三角形。