电子商务系统的瀑布流布局(Waterfall layout)

lxf2023-05-03 19:31:01

一、什么叫瀑布流布局?

电子商务系统的瀑布流布局(Waterfall layout),又称为飞瀑流式布局,是一种在网站或移动应用程序中展现视频的设计方案方法,它将各种大小的小具体内容区块链以流式布局的形式顺序排列,照片中间并不是恰好两端对齐的,反而是参差错落,总会有照片看不到彻底,让用户可无限滚动地查看商品或具体内容,从而提升销售总额,被广泛应用于电子商务网站和移动智能终端中。

二、流式布局的完成基本原理及源码

那样流式布局的效果怎么样用web前端完成呢?文中选用较为基本的HTML CSS JavaScript技术进行。

1. HTML

HTML里边摆的物品非常简单,就是一个总体器皿container里嵌入大部分器皿box,里边又嵌入一个box-img,box-img里放图片。有些人说,干什么嵌入那么双层啊?主要是因为这么做方便我们增加款式及使用。

<div id="container">
        <div class="box">
            <div class="box-img">
                <img src="./img/1.jpg" alt="">
            </div>
        </div>
        <div class="box">
            <div class="box-img">
                <img src="./img/2.jpg" alt="">
            </div>
        </div>
 <div>

2. CSS

CSS中主要通过波动让照片一行一行排序,随后操纵器皿间的间隔,再加上外框和黑影。这儿container选用相对定位,由于相对定位会脱离文档流。

      * {
            margin: 0;
            padding: 0;
        }
        #container {
            position: relative;
        }
        .box{
            float: left;
            padding: 5px;
        }
        .box-img{
            width: 150px;
            padding: 5px;
            border: 1px solid #ccc;
            box-shadow: 0 0 5px #ccc;
        }
        .box-img img{
            width: 100%;
        }

3.JavaScript

完成流式布局最重要的就是JS一部分,运用JavaScript计算图片位置和尺寸,随后把它们排序在恰当位置上,完成动画特效。

从总体上是第一行的图片没动,再从第二行第一张照片逐渐,算出第一行相对高度最小的图片,随后接在它们下边,修改照片的上边距和左边距,照片相对定位,最终更新图片高度,这般周而复始。

window.onload = function() {
  imgLocation('container', 'box')
}

// 掌握到全部要存放的照片
function imgLocation(parent, content) {
  var cparent = document.getElementById(parent)
  // cparent 中的每一个第一层的器皿 box
  var ccontent = getChildElement(cparent, content) // [ 安装了20个div ]

  // 从谁一开始是值得被的摆放的
  var winWidth = document.documentElement.clientWidth
  var imgWidth = ccontent[0].offsetWidth
  var num = Math.floor(winWidth / imgWidth)

  // 实际操作第 num 1 幅图
  var BoxHeightArr = []
  for (var i = 0; i < ccontent.length; i  ) {
    // 前num张只需计算高度
    if (i < num) {
      BoxHeightArr[i] = ccontent[i].offsetHeight
    } else {
      // 我们应该操控的box,把求最小值方式出借二维数组用
      var minHeight = Math.min.apply(null, BoxHeightArr)
      var minIndex = BoxHeightArr.indexOf(minHeight)
      ccontent[i].style.position = 'absolute'
      ccontent[i].style.top = minHeight   'px'
      ccontent[i].style.left = (imgWidth * minIndex)   'px'

      // 升级最矮的人的这一列高度
      BoxHeightArr[minIndex]  = ccontent[i].offsetHeight
    }
  }
}

// 得到父容器里某一层子器皿
function getChildElement(parent, content) {
  var contentArr = []
  var allContent = parent.getElementsByTagName('div') 
  // 赋值allContent 把在其中类名叫 content 的器皿都存进contentArr二维数组中
  for (var i = 0; i < allContent.length; i  ) {
    // 现阶段这一容器类名是否属于 content
    if (allContent[i].className == content) {
      contentArr.push(allContent[i])
    }
  }
  return contentArr
}

电子商务系统的瀑布流布局(Waterfall layout)

三、汇总

瀑布流布局的主要特点是能够把更多具体内容展现在一个页面上,进而提升用户体验和访问高效率。与传统目录式布局不一样,瀑布流布局的每一个具体内容块大小不一,依据具体内容高度全自动排序,使整个网页页面具有更高的美观度和挑战性。