千家信息网

JavaScriptL如何实现瀑布流布局

发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,这篇"JavaScriptL如何实现瀑布流布局"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看
千家信息网最后更新 2024年11月18日JavaScriptL如何实现瀑布流布局

这篇"JavaScriptL如何实现瀑布流布局"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"JavaScriptL如何实现瀑布流布局"文章吧。

  一、经典套路:JavaScript+绝对定位

  HTML结构:

  

  ...

  

  

  简单介绍

  

  

  ...

  整个瀑布流区域用一个作为父容器

  瀑布流中的每个数据块用.box作为基本布局,.wrapper呈现样式和实际内容

  CSS样式:

  *{margin:0;padding:0;}html,body{width:100%;height:100%;background-color:#EDEDED;}#main{

  position:relative;

  width:1280px;/*限定父容器的宽度*/

  margin:0auto;

  }.box{

  position:absolute;

  padding:7px;/*不建议使用margin*/

  box-sizing:border-box;

  width:256px;/*限定数据块的宽度*/}.wrapper{

  padding:5px;

  background-color:#fff;

  border:1pxsolid#e4e4e4;

  box-shadow:01px5pxrgba(0,0,0,.2);

  }.pic{

  font-size:0;/*消除行内元素的间隙*/}.picimg{

  width:100%;

  height:auto;

  }.text{

  color:#999;

  background:#FAFAFA;

  font-size:14px;

  padding-top:5px;

  }

  在.box中设置了padding是为了留出视觉上的间距

  之所以不使用margin,是因为后面会使用js获取元素的offsetWidth和offsetHeight

  而这两个属性值是不计算margin的

  JavaScript:

  _window.onload=function(){

  waterFall('main','box')

  }

  functionwaterFall(main,box){varmain=document.getElementById(main);varboxs=main.getElementsByClassName(box);varboxWidth=boxs[0].offsetWidth;//获取每个数据块的宽度

  varmainWidh=main.offsetWidth;//获取主容器的宽度

  varcols=Math.floor(mainWidh/boxWidth);//计算列数

  varheightArr=[];//定义一个存放top值的数组

  for(vari=0;i

  boxs[i].style.top='0px';

  boxs[i].style.left=i*boxWidth+'px';

  }else{//求出最矮盒子的高度

  varminBoxHeight=Math.min.apply(this,heightArr);

  //求出最矮盒子的索引

  varminBoxIndex=getIndex(minBoxHeight,heightArr);

  boxs[i].style.top=minBoxHeight+'px';//顶部间距即最矮盒子的高度

  boxs[i].style.left=minBoxIndex*boxWidth+'px';

  //关键:更新最矮盒子的高度

  heightArr[minBoxIndex]+=boxHeight;

  }

  }

  }

  functiongetIndex(val,arr){for(variinarr){if(val==arr[i]){returni;

  }

  }

  }

  这种方案一开始给.box设置了position:absolute;

  所以在打开页面的时候,如果页面性能较差,可能会出现所有数据块堆叠在一起的情况

  可以将.box的position:absolute替换为float:left,然后在js添加定位样式的时候,再补上position:absolute,视觉上会有所改观

  二、纯CSS3实现瀑布流

  CSS3中新增了一个属性column,可以通过规定列数column-count,让浏览器自适应布局

  只需要删除上面的JavaScript部分,然后修改#main和.box:

  #main{

  width:1280px;

  margin:0auto;

  -webkit-column-count:5;

  column-count:5;

  -webkit-column-gap:0;

  column-gap:0;

  }.box{

  padding:7px;

  box-sizing:border-box;

  width:256px;

  }

  但通过这种方式实现的瀑布流,实际上是按照纵向排列的,而之前的经典方案是按照横向排列的

  作为一个CSS3的新属性,只有IE10及以上的浏览器才支持column

以上就是关于"JavaScriptL如何实现瀑布流布局"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

很赞哦!
瀑布 内容 宽度 数据 盒子 容器 属性 样式 高度 元素 实际 布局 文章 方案 时候 浏览器 知识 篇文章 经典 视觉 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发初中毕业生可以学吗 分期软件开发 苏州光学系统设计软件开发公司 连接roblox服务器的软件 2008数据库转2005 上海便民平台软件开发系统 冰雪旅游资源数据库 国家网络安全宣传活动小报 关于网络安全宣传的内容 智能媒体计算与网络安全 多台服务器共用一个ip 数据库中文本型编号为 手机营业厅连接服务器 网络安全发展的历史阶段 关于网络安全协议描述正确的有 软件开发计算机培训学校有前途吗 经开区网络安全宣传周活动方案 服务器如何安装软件 企业网络安全有利性 oracle标准版数据库 服务器论证 上海便民平台软件开发系统 软件开发哪些分类 牧场自动投喂料软件开发 阿里云免费服务器防护 机柜的单板是服务器 四川绵阳网络安全培训学校 3ds代理服务器 为什么数据库有性能键 护网网络安全系列
0