這是我今天發現的一個錯誤,並且正在困擾我一段時間。我終於解決了這個問題,但我很好奇這是怎麼發生的,爲什麼會發生這種情況,並且知道是否有更好的解決方案(我確信有):浮動元素如何影響其高度/顯示?
我創建了一個使用無序列表的菜單,我想要在其右側顯示一個計數器的列表項(內部爲白色數字的紅色泡泡形式)。
經過編碼後,我在鏈接名稱旁邊看到了紅色的氣泡,但是當我將它飄向右側時,氣泡擴大佔據了父項高度的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