1 | <!DOCTYPE html>
|
2 | <html lang="en">
|
3 | <head>
|
4 | <meta charset="UTF-8" />
|
5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
6 | <meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
7 | <title>瀑布流</title>
|
8 | <style>
|
9 | .item {
|
10 | float: left;
|
11 | display: flex;
|
12 | justify-content: center;
|
13 | align-items: center;
|
14 | font-size: 30px;
|
15 | font-weight: 700;
|
16 | color: aliceblue;
|
17 | margin-right: 15px;
|
18 | margin-bottom: 15px;
|
19 | width: 200px;
|
20 | position: absolute;
|
21 | }
|
22 |
|
23 | img {
|
24 | width: 100%;
|
25 | height: 100%;
|
26 | }
|
27 | </style>
|
28 | </head>
|
29 | <body>
|
30 | <div id="list">
|
31 | <div class="item"><img src="./image/1.jpeg" alt="" /></div>
|
32 | <div class="item"><img src="./image/2.jpeg" alt="" /></div>
|
33 | <div class="item"><img src="./image/3.jpeg" alt="" /></div>
|
34 | <div class="item"><img src="./image/4.jpeg" alt="" /></div>
|
35 | <div class="item"><img src="./image/5.jpeg" alt="" /></div>
|
36 | <div class="item"><img src="./image/6.jpeg" alt="" /></div>
|
37 | <div class="item"><img src="./image/7.jpeg" alt="" /></div>
|
38 | <div class="item"><img src="./image/8.jpeg" alt="" /></div>
|
39 | <div class="item"><img src="./image/9.jpeg" alt="" /></div>
|
40 | <div class="item"><img src="./image/10.jpeg" alt="" /></div>
|
41 | <div class="item"><img src="./image/11.jpeg" alt="" /></div>
|
42 | <div class="item"><img src="./image/12.jpeg" alt="" /></div>
|
43 | <div class="item"><img src="./image/13.jpeg" alt="" /></div>
|
44 | <div class="item"><img src="./image/14.jpeg" alt="" /></div>
|
45 | <div class="item"><img src="./image/15.jpeg" alt="" /></div>
|
46 | <div class="item"><img src="./image/16.jpeg" alt="" /></div>
|
47 | </div>
|
48 | </body>
|
49 | <script>
|
50 | var list = document.getElementById("list");
|
51 | var items = document.getElementsByClassName("item");
|
52 |
|
53 | var gap = 10;
|
54 |
|
55 | window.onload = function () {
|
56 | waterFall();
|
57 | };
|
58 |
|
59 | function waterFall() {
|
60 |
|
61 | var pageWidth = getClient().width;
|
62 | var itemWidth = items[0].offsetWidth;
|
63 | var columns = parseInt(pageWidth / (itemWidth + gap));
|
64 | var arr = [];
|
65 | for (var i = 0; i < items.length; i++) {
|
66 | if (i < columns) {
|
67 |
|
68 | items[i].style.top = 0;
|
69 | items[i].style.left = (itemWidth + gap) * i + "px";
|
70 | arr.push(items[i].offsetHeight);
|
71 | } else {
|
72 |
|
73 |
|
74 | var minHeight = arr[0];
|
75 | var index = 0;
|
76 | for (var j = 0; j < arr.length; j++) {
|
77 |
|
78 | if (minHeight > arr[j]) {
|
79 | minHeight = arr[j];
|
80 | index = j;
|
81 | }
|
82 | }
|
83 |
|
84 |
|
85 | items[i].style.top = arr[index] + gap + "px";
|
86 | items[i].style.left = items[index].offsetLeft + "px";
|
87 |
|
88 |
|
89 |
|
90 | arr[index] = arr[index] + items[i].offsetHeight + gap;
|
91 | }
|
92 | }
|
93 | }
|
94 |
|
95 |
|
96 | window.onresize = function () {
|
97 | waterFall();
|
98 | };
|
99 |
|
100 | window.onscroll = function () {
|
101 | if (
|
102 | getClient().height + getScrollTop() >=
|
103 | items[items.length - 1].offsetTop
|
104 | ) {
|
105 |
|
106 | var data = [
|
107 | "./image/1.jpeg",
|
108 | "./image/2.jpeg",
|
109 | "./image/3.jpeg",
|
110 | "./image/4.jpeg",
|
111 | "./image/5.jpeg",
|
112 | "./image/6.jpeg",
|
113 | "./image/7.jpeg",
|
114 | "./image/8.jpeg",
|
115 | "./image/9.jpeg",
|
116 | "./image/10.jpeg",
|
117 | "./image/11.jpeg",
|
118 | "./image/12.jpeg",
|
119 | "./image/13.jpeg",
|
120 | "./image/14.jpeg",
|
121 | "./image/15.jpeg",
|
122 | "./image/16.jpeg",
|
123 | ];
|
124 |
|
125 | for (let i = 0; i < data.length; i++) {
|
126 | var div = document.createElement("div");
|
127 | div.className = "item";
|
128 | div.innerHTML = `<img src="${data[i]}" alt="">`;
|
129 | list.appendChild(div);
|
130 | }
|
131 |
|
132 | waterFall();
|
133 | }
|
134 | };
|
135 |
|
136 |
|
137 | function getClient() {
|
138 | return {
|
139 | width:
|
140 | window.innerWidth ||
|
141 | document.documentElement.clientWidth ||
|
142 | document.body.clientWidth,
|
143 | height:
|
144 | window.innerHeight ||
|
145 | document.documentElement.clientHeight ||
|
146 | document.body.clientHeight,
|
147 | };
|
148 | }
|
149 |
|
150 | function getScrollTop() {
|
151 | return window.pageYOffset || document.documentElement.scrollTop;
|
152 | }
|
153 |
|
154 | function rgb() {
|
155 |
|
156 | var r = Math.floor(Math.random() * 256);
|
157 | var g = Math.floor(Math.random() * 256);
|
158 | var b = Math.floor(Math.random() * 256);
|
159 | var rgb = "(" + r + "," + g + "," + b + ")";
|
160 | return rgb;
|
161 | }
|
162 | function color16() {
|
163 |
|
164 | var r = Math.floor(Math.random() * 256);
|
165 | var g = Math.floor(Math.random() * 256);
|
166 | var b = Math.floor(Math.random() * 256);
|
167 | var color = "#" + r.toString(16) + g.toString(16) + b.toString(16);
|
168 | return color;
|
169 | }
|
170 |
|
171 | function randomNum(minNum, maxNum) {
|
172 | return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
|
173 | }
|
174 | </script>
|
175 | </html>
|