• 瀑布流以及分页加载


    瀑布流又称瀑布流式布局,是比较流行的一种网站页面布局方式。视觉表现为参差不齐的多栏布局,最早采用此布局的是网站是 Pinterest,后逐渐在国内流行。
    瀑布流效果
    即多行等宽元素排列,后面的元素依次添加到其后,等宽不等高,根据图片原比例缩放直至宽度达到我们的要求,依次按照规则放入指定位置

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> /* #content { 100px; height: 100px; background: red; position: absolute; } */ html, body { height: 100%; 100%; background-color:#cccccc; } #main { height: 800px; 100%; overflow-y: scroll; position: relative; } .obox { 200px; position: absolute; border:3px solid #ffffff; } </style> </head> <body> <!-- <div id="content"> </div> --> <div id="main"> </div> </body> <script type="text/javascript"> //瀑布流 var arr = [];//定义一个数组,用来存储元素的高度长度等于列数 let dom = document.getElementById('main') let cloumn = parseInt(dom.clientWidth / 200) var scrollIndex = 0 function reload(index) { for (let i = 0; i < 100; i++) { let domChild = document.createElement('div') domChild.setAttribute('class', 'obox') let height = Math.floor(Math.random() * 100) domChild.style.height = height + 'px' domChild.style.backgroundColor = `rgba(${Math.random() * 255},${Math.random() * 255},${Math.random() * 255})` dom.appendChild(domChild) } } function change(scrollIndex) { let divChild = document.getElementsByClassName('obox') for (let j = scrollIndex * 100; j < divChild.length; j++) { if (j < cloumn) { divChild[j].style.left = (200 + 10) * j + 'px' divChild[j].style.top = 0 arr.push(divChild[j].offsetHeight); } else { let minIndex = Math.min.apply(null, arr);           //取到arr的最小值 var index = 0 for (var i = 0; i < arr.length; i++) { if (arr[i] == minIndex) { index = i } } divChild[j].style.top = arr[index] + 10 + 'px' divChild[j].style.left = divChild[index].offsetLeft + 'px' arr[index] = arr[index] + divChild[j].offsetHeight + 10 } } } window.onload = function () { reload(0) change(0) } //按需加载//分页的形式也不是懒加载 dom.addEventListener('scroll', function () { let minIndex = Math.min.apply(null, arr); if ((dom.scrollTop + dom.clientHeight) - minIndex > 10) { scrollIndex++ reload(scrollIndex) change(scrollIndex) } }) </script> </html>
  • 相关阅读:
    1040 最大公约数之和(欧拉函数)
    1028 大数乘法 V2(FFT or py)
    1020 逆序排列(DP)
    1837 砝码称重
    1070 Bash游戏 V4
    1280 前缀后缀集合(map)
    1390 游戏得分(贪心)
    1179 最大的最大公约数
    1400 序列分解(dfs)
    1420 数袋鼠好有趣(贪心二分)
  • 原文地址:https://www.cnblogs.com/xubaoer/p/14207219.html
Copyright © 2020-2023  润新知