2012-07-25 209 views
0

所以,我試圖讓一些內容很好地適合另一個容器。讓我的CSS框看起來正確的百分比寬度和邊距。

我的CSS:(也稱「測試」收件箱的ID =「resultBox」)

#resultBox{ 
    display: block; 
    position:absolute; 
    width:20%; 
    margin:0px; 
    padding:0px; 
} 

但是這看起來不錯,這一切都侷促,但是,我希望這是每行5盒,有沒有一種方法可以給出一個邊距,並使其自動調整寬度%?

圖片相關:頂部是我想要的邊距,但底部是我想要的行爲。 enter image description here

+0

所以你想要5個盒子,每個盒子有1px的餘量? – ohiock 2012-07-25 22:44:34

+0

我知道這可能聽起來像褻瀆一些,但你有沒有考慮過使用表?畢竟,表格是爲了呈現表格數據而設計的。你也應該使用一個類來應用你的樣式,而不是一個ID。 Id的設計是獨特的,而不是多個元素的相同ID。 – 2012-07-25 22:45:00

+0

那麼你是否有多個具有相同ID的元素,或者我讀錯了。如果你這樣做,那麼你應該改變它,因爲ID是一個唯一的標識符,並且應該只用於每頁一個元素。改爲使用班級。您還可以將邊距設置爲1%等百分比,並將這些元素本身的寬度設置爲19%。 – 2012-07-25 22:45:26

回答

1

那這臺無表的實現?

http://jsfiddle.net/Wexcode/xKj8n/

<div id="table"> 
    <div class="row"> 
     <div><span>Test</span></div> 
     <div><span>Test</span></div> 
     <div><span>Test</span></div> 
     <div><span>Test</span></div> 
     <div><span>Test</span></div> 
    </div> 
</table> 

編輯:

你也可以做到這一點沒有行,如果你願意sacrifice compatibility with IE8和使用nth-child()選擇(你總是可以申請使用JavaScript類):

http://jsfiddle.net/Wexcode/xKj8n/2/

<div id="table"> 
    <div><span>Test</span></div> 
    <div><span>Test</span></div> 
    <div><span>Test</span></div> 
    <div><span>Test</span></div> 
    <div><span>Test</span></div> 
</div>​ 
+0

這也堆疊了一點使用'.row {clear:both;}清除'.row'級別的浮動時更好。 }':http://jsfiddle.net/Wexcode/xKj8n/1/ – Wex 2012-07-25 23:30:11

1

像你想通過使用outline你可以模擬保證金:

#resultBox { 
    ... 
    outline: 1px solid white; 
    ... 
} 

這種方式,您將有每個塊的視覺清晰度,不會撞上最右邊的一個下到下一行。

+0

這種方法仍然會看起來有點奇怪.. – Adola 2012-07-25 22:49:44

2

如果你只支持新的瀏覽器,然後使用box-sizing: border-box

這將包括寬度內的邊距和邊框。不要使用邊距,使用邊框來提供間距的外觀。

參見:https://developer.mozilla.org/en/CSS/box-sizing

+0

[沒有兼容性IE7或之前](http://caniuse.com/#feat=css3-boxsizing),但這很漂亮[跨瀏覽器友好](http://www.w3schools.com/browsers/browsers_explorer.asp)。 – Wex 2012-07-25 23:37:18

0

您可以嘗試在正確的使用box-sizing: border-box與1px的邊框和底部,但您還需要使用:nth-child從最右邊的框中刪除多餘的1px。

.box 
{ 
    width: 20%; 
    float: left; 
    border-radius: 3px; 
    padding: 5px; 
    border-right: solid 1px #fff; 
    border-bottom: solid 1px #fff; 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    -ms-box-sizing: border-box; 
    box-sizing: border-box; 
    background-color: #ccc; 
} 

.box:nth-child(5n) 
{ 
    border-right: 0; 
} 

http://jsfiddle.net/Pf2LZ/

這應該在合理的瀏覽器和IE8 +工作。只有IE8(我認爲)由於缺少對:nth-child的支持而在右側會有一個額外的像素。如果這是一個問題,你總是可以每隔五分鐘增加一個班級。

+0

儘管我可以在jsfiddle中看到這個工作,但這不適用於我的代碼。我現在有點虧了... – Adola 2012-07-25 22:57:14

0

如果您嘗試顯示錶格數據,您應該真的在使用表格。

td { 
    width: 20%; 
    text-transform:uppercase; } 

HTML:

<table> 
    <tr> 
     <td>Test</td> 
     <td>Test</td> 
     <td>Test</td> 
     <td>Test</td> 
     <td>Test</td> 
    </tr> 
    <tr> 
     <td>Test</td> 
     <td>Test</td> 
     <td>Test</td> 
     <td>Test</td> 
     <td>Test</td> 
    </tr> 
</table> 
+0

這會增加一些複雜性,因爲這些框是使用jQuery的砌體插件生成的。 – Adola 2012-07-25 22:59:15

+0

將這項工作 - 這個工作 - 也可以堆疊一點點 - http://stackoverflow.com/questions/11659744/get-my-css-boxes-to-look-correct-with-percentage-width-and-margin/11660008#11660008 – Wex 2012-07-25 23:09:46