2016-11-07 128 views
0

我想使用div製作網格,我想確保它們都具有相同的寬度但不同的高度。我確實希望他們包裝,但不是在一條新線上,而是在第一個可用的空間位置下。如果您需要任何解釋,請告訴我!照片網格列布局

這是相當多的想法:http://imgur.com/a/WmUya

也或者這樣:

column photo grid layout]

我只需要一個簡單的解釋,但!謝謝!

回答

1

純CSS解決方案(砌體佈局沒有Javascript)

它現在也可以做到這一點,而無需使用column-count的JavaScript(看看this tutorial

.masonry { 
 
    column-count: 3; 
 
    column-gap: 5px; 
 
} 
 
img { 
 
    break-inside: avoid; 
 
    width: 100%; 
 
}
<div class="masonry"> 
 
    <img src="http://lorempixel.com/100/200/abstract" alt> 
 
    <img src="http://lorempixel.com/g/100/250/abstract" alt> 
 
    <img src="http://lorempixel.com/100/130/abstract" alt> 
 
    <img src="http://lorempixel.com/g/100/240/abstract" alt> 
 
    <img src="http://lorempixel.com/100/220/abstract" alt> 
 
    <img src="http://lorempixel.com/100/180/abstract" alt> 
 
    <img src="http://lorempixel.com/100/210/abstract" alt> 
 
    <img src="http://lorempixel.com/g/100/170/abstract" alt> 
 
</div>

使用JavaScript

舊的解決方案,你會發現一直很流行的是使用masonry庫 - 請參閱this example

所有的,它需要的代碼是:

// init Masonry 
var $grid = $('.grid').masonry({ 
    // options... 
}); 
// layout Masonry after each image loads 
$grid.imagesLoaded().progress(function() { 
    $grid.masonry('layout'); 
}); 
+0

謝謝,我要深入瞭解! @jcuenod – Mees

+0

我正在玩flexbox,我的確找到了一種方法,我只是不喜歡我是如何做到的。我製作了三行,所有div或圖像寬度相同,但高度不同,還有一個display:block,但是我在YouTube上看到了這個視頻,我不知道如何在沒有Flexbox的情況下做到這一點。我每天都在學習新事物! – Mees

0

Isotope javascript plugin有不正是你想要的佈局模式。您可以使用示例預覽佈局。如果您沒有任何JavaScript技能,您可以使用數據屬性。

0

我這樣做的方式是先仔細看看你的圖像,你會注意到3列。

這3列的3周不同的div容器中浮子寬度:33.33%內聯塊產生相同的結果。

在這個列裏面是您的項目是身高:汽車雖然div總是這樣工作。

花哨的白色空間是由該塊的代碼

// update the value in your convenience 
border: 4px solid transparent; 
box-sizing: border-box; 

而是採用保證金或填充,我們使用的邊界進行。這個邊框將作爲一個獨立的填充物,不會擴展div中的背景色,同時不會在物品之外創建邊緣,從而將其推出設計。這將保持33.33%寬度的外觀。

希望有幫助

+0

這正是我所做的,我只是想要一些不同的東西。 – Mees

+0

如果你想要另一個可以使用** position:absolute; **,你需要使用JavaScript來完成。您需要根據高度和寬度記錄項目的每個定位。我無法提供一個示例,因爲我正在使用移動設備,但它的工作原理如何。 – masterpreenz