这是我今天发现的一个错误,并且正在困扰我一段时间。我终于解决了这个问题,但我很好奇这是怎么发生的,为什么会发生这种情况,并且知道是否有更好的解决方案(我确信有):浮动元素如何影响其高度/显示?
我创建了一个使用无序列表的菜单,我想要在其右侧显示一个计数器的列表项(内部为白色数字的红色泡泡形式)。
经过编码后,我在链接名称旁边看到了红色的气泡,但是当我将它飘向右侧时,气泡扩大占据了父项高度的100%并且实际影响了它的高度(取消注释/*float:right;*/
代码见下面)。红色泡泡不应该在保持其方面的同时漂浮在右边吗?它看起来像display:inline-block
或height:100%
(或两者)正在应用。
我试着用不同的值设置display
和height
和!important
但似乎没有任何工作。我最终通过添加line-height:16px
并添加了margin-top:10px
来解决问题。但我不是这个解决方案的忠实粉丝,因为它取决于将来可能改变的菜单高度(我怀疑它,但它可能会发生)。有没有更好的解决方案来做到这一点?
你可以看到这里的代码:(而这个链接http://jsfiddle.net/9nw2zu7y/上)
* {
border: 0px;
margin: 0px;
padding: 0px;
}
#menu {
background: #555566;
position: relative;
width: 200px;
}
#menu li {
display: block;
min-height: 36px;
line-height: 36px;
}
#menu a {
color: #ffffff;
text-decoration: none;
display: block;
padding: 0px 10px;
border-top: 1px dotted #5c5c6d;
position: relative;
overflow: hidden;
}
#menu a.counter:after,
#menu a span.counter {
content: attr(data-count);
background: red;
color: white;
font-size: 12px;
padding: 2px 5px;
border-radius: 50%;
/*float:right;*/
}
<ul id="menu">
<li><a href="#">List Item 1</a>
</li>
<li>
<a href="#">List Item 2</a>
<ul>
<li><a href="#">SubList Item 1<span class="counter" data-count="2">1</span></a>
</li>
<li><a href="#">SubList Item 2</a>
</li>
<li class="last"><a href="#" class="counter" data-count="2">SubList Item 3</a>
</li>
</ul>
</li>
<li><a href="#">List Item 3</a>
</li>
<li><a href="#">List Item 4</a>
</li>
</ul>
优秀的答案浮动规范的一个相当混乱的副作用做。浮动永远不会混淆我。 – 2014-09-27 00:11:41
有趣的是,它计算为'display:block',并且它覆盖了我的'display:inline!important'。感谢您的链接,这是非常有益的。你每天学习新的东西。 – 2014-09-27 02:42:56