```
<style>
* {
margin: 0;
padding: 0;
}
#container {
margin-left: auto;
margin-right: auto;
/* overflow: hidden; */
position: relative;
}
img {
width: 230px;
padding: 5px;
}
.content {
box-shadow: 0 0 1px 1px rgba(51, 51, 51, 0.1);
float: left;
position: relative;
width: 240px;
}
</style>
```
```
<div id="container">
<div class="content">
<img src="images/01.jpg" alt="">
</div>
<div class="content">
<img src="images/02.jpg" alt="">
</div>
<div class="content">
<img src="images/03.jpg" alt="">
</div>
<div class="content">
<img src="images/04.jpg" alt="">
</div>
<div class="content">
<img src="images/05.jpg" alt="">
</div>
<div class="content">
<img src="images/06.jpg" alt="">
</div>
<div class="content">
<img src="images/07.jpg" alt="">
</div>
<div class="content">
<img src="images/08.jpg" alt="">
</div>
<div class="content">
<img src="images/09.jpg" alt="">
</div>
<div class="content">
<img src="images/10.jpg" alt="">
</div>
<div class="content">
<img src="images/11.jpg" alt="">
</div>
<div class="content">
<img src="images/12.jpg" alt="">
</div>
<div class="content">
<img src="images/07.jpg" alt="">
</div>
<div class="content">
<img src="images/08.jpg" alt="">
</div>
<div class="content">
<img src="images/09.jpg" alt="">
</div>
<div class="content">
<img src="images/10.jpg" alt="">
</div>
<div class="content">
<img src="images/11.jpg" alt="">
</div>
<div class="content">
<img src="images/12.jpg" alt="">
</div>
</div>
```
```
window.onload = function () {
var url = {
dataUrl: [{
src: "01.jpg"
}, {
src: "02.jpg"
}, {
src: "03.jpg"
}, {
src: "04.jpg"
}, {
src: "05.jpg"
}, {
src: "06.jpg"
}, {
src: "07.jpg"
}, {
src: "08.jpg"
}, {
src: "09.jpg"
}, {
src: "10.jpg"
}, {
src: "11.jpg"
}, {
src: "12.jpg"
}]
}
var container = document.getElementById("container");
var contents = document.getElementsByClassName("content");
var data = url.dataUrl;
place_img();
window.onscroll = function(){
if(sCondition()){
for(let i = 0 ;i <data.length;i++){
let img = document.createElement("img");
img.src = "images/" + data[i].src;
let div = document.createElement("div");
div.className = "content";
div.append(img);
container.append(div);
place_img();
}
}
}
function sCondition(){
var sh = document.documentElement.scrollTop;
var vh = document.documentElement.clientHeight;
var offsetTop = contents[contents.length-1].offsetTop+contents[contents.length-1].offsetHeight/2
return sh+vh>offsetTop?true:false;
}
function place_img() {
var ww = window.innerWidth;
var cw = contents[0].offsetWidth;
//一排放置幾張圖片
var num = Math.floor(ww / cw);
container.style.width = num * cw + "px";
// 2. 將第一排的height放入一個數組
var content_arr = Array.prototype.slice.call(contents);
var arr_height = [];
content_arr.forEach((element, index) => {
if (index < num) {
arr_height.push(element.offsetHeight)
}
else {
//3.剩余圖片放置的位置
//絕對定位, top = 數組中最小高度 ,left 為最小位置的 offsetLeft;
var minHeight = Math.min(...arr_height);
var minIndex = arr_height.indexOf(minHeight);
var offsetLeft = content_arr[minIndex].offsetLeft;
console.log(offsetLeft);
content_arr[index].style.position = "absolute";
content_arr[index].style.top = minHeight + "px";
content_arr[index].style.left = offsetLeft + "px";
// //4.數組高度改變,重新設置數組
arr_height[minIndex] += content_arr[index].offsetHeight;
}
})
}
}
```
- 效果實例
- 1.點擊增加高度
- 2.tab頁面切換
- 3. 列表切換
- 4. 隔行變色
- 5. swiper 輪播
- 6.vue
- 7.定時器
- 8. 向表格中添加數據
- 9 瀑布流
- 1.JavaScript基礎
- 1. 變量
- 2. 調試
- 3.數據類型
- 4.轉換
- 5.控制語句
- 6.運算
- 7. this
- 8 JSON對象和javascript對象的相互轉換
- 2.JavaScript的控制語句
- 1. 基本控制語句
- 2.節點
- 2.1DOM補充
- 3. 函數
- js的模塊化如何解決
- 不知道有什么用的
- 4.數組
- 5. String
- 補充
- 6.Ajax
- 1. 原生Ajax
- 2. HTTP/get/post
- 3.jQuery-Ajax
- 4.跨域
- 5.axios
- 6.封裝
- Ajax效果
- ajax補充
- 7. 正則
- 1.創建正則表達式
- 2. 正則的api
- 3.正則語法
- 4.例子
- 量詞
- 8.面向對象
- 1.原型
- ES6
- 模塊化
- 1.回調地獄
- 什么是回調地獄
- 簡單封裝
- promise解決回調地獄
- generator解決回調地獄
- async解決回調地獄
- 2.封裝
- Ajax,promise
- JavaScript難點
- 1. 閉包/作用域
- 2.原型鏈
- 3. 兼容性
- 適配
- JavaScript小效果
- 字符串截取