我有一個容器,我打電話#profile-grid,我希望它是330px寬。它包含一個330像素寬的圖像和一個330像素寬的圖像下方的內聯列表,並且周圍有1px的邊框。我希望列表和圖像的寬度完全相同。在IE中它排列完美,但在Chrome中它太短了2px。我究竟做錯了什麼? http://jsfiddle.net/ZPQUP/13/與盒子模型的故障
Q
與盒子模型的故障
0
A
回答
0
問題是,正如您的標題所示,盒模型。
最好的辦法是明確地設置盒子模型,然後使用polyfill使其適用於舊版瀏覽器。保羅愛爾蘭描述問題和解決方案在這裏:http://paulirish.com/2012/box-sizing-border-box-ftw/
我展示一下這個看起來像一個更新的提琴在這裏:http://jsfiddle.net/mstauffer/ZPQUP/14/
從本質上講,不同箱的型號是否不同邊界和補白是列入或外部添加到的寬度。
0
DEMO:
HTML:
<div id="profile-grid">
<img src="http://a8.sphotos.ak.fbcdn.net/hphotos-ak-snc7/428132_268919676513976_100001878373747_678116_241912084_n.jpg"/>
<ul id="listed">
<li class="item"><a href="#"> Profile </a></li>
<li class="item"><a href="#"> About </a></li>
<li class="item"><a href="#"> Photos </a></li>
<li class="item"><a href="#"> Albumlist </a></li>
</ul>
</div>
CSS:
#profile-grid {
height: 302px;
width: 330px;
}
#profile-grid img {
display: block;
width: 100%;
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
}
#listed {
height: 50px;
border: 1px solid #ddd;
overflow: hidden;
}
li.item {
margin: 0px;
display: inline;
float: left;
height: 50px;
border-left: 1px solid #ddd;
display: inline;
}
#listed li a {
display: block;
font-family: "lucida grande",tahoma,verdana,arial,sans-serif;
font-size: 15px;
color: #123454;
line-height: 50px;
padding: 0px 15px 0;
text-align: center;
text-decoration: none;
vertical-align: baseline;
}
#listed li a:hover{
font-family: "lucida grande",tahoma,verdana,arial,sans-serif;
font-size: 15px;
color: white;
background-color: #123454;
text-align: center;
text-decoration: none;
}
NOTES:
<ul>
是塊元素。無論父母的寬度如何,它隨着它的增長而增長。有點自動100%。給父母330px,它也是330px。只要塊元素沒有指定的寬度,它的100%寬度將包括它的邊界。所以如果你有一個330px的父項,塊元素(在這種情況下是
<ul>
)將是298px寬+ 1px左邊界+ 1px右邊界。另一方面,爲其指定寬度將排除計數中的邊界,從而導致溢出。
給
display:block
和width:100%
也做同樣的事情,再加上它保留了圖像比例(而不是壓扁以任何方式)的圖像
0
爲了避免這個問題,這是理想的是在相同的元素上不混合width
和padding
或border
。
在你的情況,如果你只是刪除.listed
的width: 330px
並將其添加到.listed ul
相反,你應該罰款:
#listed {
display: block;
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
height: 50px;
overflow: hidden;
border: 1px solid #ddd;
}
#listed ul {
margin: 0px 0px 0px -1px;
padding: 0px 0px 0px 0px;
overflow: hidden;
width: 330px;
}
0
你div#listed
是330px寬加 1個像素無論是邊框側。這就是'標準'盒子模型的工作原理。減少每邊1像素(即298px)的寬度,並且所有東西都會排成一行...
...在好的瀏覽器中。在舊版本的IE中,您會看到一個問題。使用有效的DOCTYPE,這將被解決。
相關問題
- 1. firefox中的手風琴盒故障
- 2. Poisson模型的故障 - 整數
- 3. Intellij檢查開關盒故障
- 4. 故障使用模板: '類' 型redifinition
- 5. 通過多個模型篩選故障
- 6. CSS盒子模型寬度
- 7. 什麼是「盒子模型?」
- 8. 故障與魔豆
- 9. 故障與對照
- 10. 故障與(函數(){})()
- 11. Eratosthenes的篩子故障
- 12. 的jQuery UI模塊故障
- 13. 故障與AdMob的介質
- 14. matplotlib 3dbars:與軸的故障
- 15. 故障與使用Node.js的
- 16. CloudFoundry與NodeJS的Redis故障
- 17. 故障類型差異
- 18. 盒子模型的清晰視圖
- 19. 如何根據故障類型對TestNG故障進行分類?
- 20. BlueSnap認購故障模擬
- 21. Raspberry Pi API模式故障
- 22. 多模態視圖故障
- 23. 故障試圖與jQuery
- 24. 故障與「是」在Haskell
- 25. 與collisionBitMask發生故障
- 26. 故障與重疊窗口
- 27. 故障與使用CakePHP 1.2.5
- 28. 分段故障與strtol將
- 29. 故障與WMI過濾
- 30. 故障與scanf函數(C)
是應該在右邊有這個黑色「條紋」的圖像? – Joseph 2012-02-16 23:59:00