2014-08-29 66 views
5

我有一個容器,其中包含可變數量的元素。 這些元素應該是合理的,但是有一個固定的空間(例如20px)。 這意味着每個元素的寬度必須適應。使用固定空間對齊元素(可變寬度)

例如這樣的:

HTML

<div class="container"> 
    <div> 
     <img src="..."> 
    </div> 
    <div> 
     <img src="..."> 
    </div> 
    <div> 
     <img src="..."> 
    </div> 
</div> 

CSS

div.container { 
    text-align: justify; 
} 

div.container div { 
    display: inline-block; 
    margin-right: 20px; 
} 

div.container div img { 
    width: 100%; 
} 

在結束它應該是這樣的(本圖顯示了兩個例子:2層的元件和3個元素;寬度是動態的,但空間修復[20px]):

picture showing elements

應該有不同數量的子元素的工作。

有沒有專業的方式來做到這一點與CSS?

編輯:我應該提到這個修復空間是一個%值!

回答

4

如果使用Flexbox是一個選項,你可以添加flex: 1到Flex項目,也是margin屬性有一個固定的值,如下所示:

EXAMPLE HERE

div.container { display: flex; } 

div.container div { 
    height: 50px; /* Just for demo */ 
    flex: 1; 
    margin-left: 20px; 
} 

div.container :first-child { margin-left: 0; } 

其實flex: 1是在這種情況下,flex-grow: 1;的簡寫。

+0

Flexbox,就沒有在IE8和IE9的支持,我想使用該表是一個更好的主意,因爲@Salman在他的回答做了。 – 4dgaurav 2014-08-29 12:21:20

+0

@ 4dgaurav這就是爲什麼我開始我的答案'如果使用Flexbox是一個選項......':) – 2014-08-29 12:23:34

+0

謝謝你的偉大答案,它的作品完美。當然,IE8和IE9是一個問題,但它很棒。我無法使用表格單元解決方案,因爲我的修訂空間是百分比值。 – 2014-08-29 12:23:36

3

您可以使用display: tabledisplay: table-cell此:

.container { 
 
    display: table; 
 
    width: 100%; 
 
    border-spacing: 10px 0; 
 
    border-collapse: separate; 
 
    background: palevioletred; 
 
} 
 
.container div { 
 
    display: table-cell; 
 
} 
 
.container img { 
 
    display: block; 
 
    width: 100%; 
 
    height: auto; 
 
}
<div class="container"> 
 
    <div><img src="//dummyimage.com/200x100/000/CCC"></div> 
 
    <div><img src="//dummyimage.com/300x100/000/CCC"></div> 
 
    <div><img src="//dummyimage.com/400x100/000/CCC"></div> 
 
</div> 
 
<hr/> 
 
<div class="container"> 
 
    <div><img src="//dummyimage.com/200x100/000/CCC"></div> 
 
    <div><img src="//dummyimage.com/400x100/000/CCC"></div> 
 
</div> 
 
<hr/> 
 
<div class="container"> 
 
    <div><img src="//dummyimage.com/600x100/000/CCC"></div> 
 
</div>

+0

+1表,跨瀏覽器兼容! – 4dgaurav 2014-08-29 12:22:15

+0

編輯:我應該提到這個修復空間是一個%值! – 2014-08-29 12:25:30

+0

@LucaNateMahler:您可以在表格單元格上添加填充而不是Boder間距。但是,第一個和最後一個單元格將分別在左側和右側有不必要的填充。見http://jsfiddle.net/salman/937vb7hj/3/ – 2014-08-29 12:41:39

相關問題