我正在使用:first-of-type
伪类删除边距,尽管它的行为就好像我根本不使用first-of-type
并删除了所有元素的边距。
以下是代码:
HTML
<ul id="share" class="hidden-xs">
<li><a href="#" class="twitter-share socialicon" title="Share on Twitter"><em class="fa fa-twitter" aria-hidden="true"></em><div class="sr-only">Share on Twitter</div></a></li>
<li><a href="#" class="instagram-share socialicon" title="Share on Instagram"><em class="fa fa-instagram" aria-hidden="true"></em><div class="sr-only">Share on Instagram</div></a></li>
<li><a href="#" class="envelope-share socialicon" title="Share via Email"><em class="fa fa-envelope" aria-hidden="true"></em><div class="sr-only">Share via Email</div></a></li>
</ul>
CSS
.socialicon {
margin-left: 80px;
font-size: 12px;
vertical-align: middle;
}
.socialicon:first-of-type {
margin-left: 0px;
}
ul#share{
margin: 0px;
padding: 0px;
list-style: none;
display: inline;
line-height: 19px;
margin-left: 15px;
}
ul#share li{
display: inline-block;
}
ul#share li span {
color: white;
font-weight: 600;
text-transform: uppercase;
}
答案 0 :(得分:2)
:first-of-type
并不完全直观 - 它不会考虑整个文档,而是将父元素作为参考点。从这个意义上说,每个锚元素都是封闭的li
元素中的“其类型的第一个元素”,这就是选择器应用于每个元素的原因。您需要做的是将:first-of-type
一级向下移动到li
元素。由于它们都处于同一级别,因此只有第一个li
受到影响。 (但是,这会影响同一页面上另一个列表中的第一个li
。
li:first-of-type .socialicon{
margin-left: 0px;
}