js瀑布流
时间: 2023-07-23 12:17:17 浏览: 101
这里是一个简单的 JavaScript 瀑布流实现的代码,可以供您参考:
```html
<!DOCTYPE html>
<html>
<head>
<title>瀑布流示例</title>
<style>
#container {
width: 800px;
margin: 0 auto;
}
.item {
width: 380px;
margin: 10px;
padding: 10px;
border: 1px solid #ccc;
float: left;
background-color: #f0f0f0;
}
</style>
</head>
<body>
<div id="container">
<div class="item">这是第一个瀑布流元素</div>
<div class="item">这是第二个瀑布流元素</div>
<div class="item">这是第三个瀑布流元素</div>
...
<div class="item">这是最后一个瀑布流元素</div>
</div>
<script>
window.onload = function() {
var container = document.getElementById('container');
var items = container.getElementsByClassName('item');
var columns = 3; // 3列
var column_heights = [0, 0, 0]; // 列高度初始化为0
for (var i = 0; i < items.length; i++) {
var shortest_column = 0;
for (var j = 1; j < columns; j++) {
if (column_heights[j] < column_heights[shortest_column]) {
shortest_column = j;
}
}
items[i].style.left = (shortest_column * 400) + 'px'; // 400是item的宽度加上margin的宽度
items[i].style.top = column_heights[shortest_column] + 'px';
column_heights[shortest_column] += items[i].offsetHeight + 20; // 20是item的margin-top和margin-bottom的高度
}
}
</script>
</body>
</html>
```
这个代码实现了一个简单的瀑布流布局,包含了3列,每列宽度固定为380px,每个元素之间有10px的margin。代码中使用了JavaScript来计算每个元素的位置,首先初始化每列的高度为0,然后依次遍历每个元素,找到当前高度最短的列,将元素放在该列下面,更新该列的高度。元素的位置使用CSS的left和top属性来控制。
当然,这只是一个简单的瀑布流实现,实际上还有很多细节需要考虑,比如异步加载图片、滚动加载等等。如果您需要实现一个完整的瀑布流布局,建议使用现成的库或框架,比如Masonry、Isotope等等。
阅读全文