用瀑布流的方式在网页上插入图片的简单实现方法


Posted in Javascript onSeptember 23, 2016

当我们的网页需要插入很多图片的时候,为了美观,我们可以选择用瀑布流的方法插入图片

首先我们在body里面放入我们需要展示的图片

<div id="box">
  <div class="dinwei">
    <div class="pic">
      <img src="image/1.jpg">
    </div>
  </div>
  <div class="dinwei">
    <div class="pic">
      <img src="image/2.jpg">
    </div>
  </div>
  <div class="dinwei">
    <div class="pic">
      <img src="image/3.jpg">
    </div>
  </div>
  <div class="dinwei">
    <div class="pic">
      <img src="image/4.jpg">
    </div>
  </div>
  <div class="dinwei">
    <div class="pic">
      <img src="image/5.jpg">
    </div>
  </div>
  <div class="dinwei">
    <div class="pic">
      <img src="image/6.jpg">
    </div>
  </div>
  <div class="dinwei">
    <div class="pic">
      <img src="image/7.jpg">
    </div>
  </div>
  <div class="dinwei">
    <div class="pic">
      <img src="image/8.jpg">
    </div>
  </div>
  <div class="dinwei">
    <div class="pic">
      <img src="image/9.jpg">
    </div>
  </div>
</div>

然后设定样式

<style type="text/css">
    *{
      margin: 0;
      padding: 0;
    }
    .dinwei{
      float: left;
    }
    .pic{
      padding: 5px;
      border: 1px solid #000000;
    }
    img{
      margin: 0;
      padding: 10px;
      width: 220px;
      height: auto;
    }
  </style>

接下来就是把图片用瀑布流的方式展现的JS

<script type="text/javascript">
  window.onload=function(){
  var dinwei=document.getElementsByClassName("dinwei");
  var windwidth=document.documentElement.clientWidth||document.body.clientWidth;
  var dinwidth=getStyle(dinwei[0],"width");
  var num=Math.floor(windwidth/dinwidth);
  //计算一行几张图片
  //取出高度最小的列
  var heightList=[];
  for(var i=0;i<dinwei.length;i++){
    if(i<num){
      heightList[heightList.length]=getStyle(dinwei[i],"height");
    }else{
      var minHeight=getmin(heightList);
      var amin=minHeight.value;
      var index=minHeight.index;

      var temp=dinwei[i];
      temp.style.position="absolute";
      temp.style.top=amin+"px";
      temp.style.left=index*dinwidth+"px";
      heightList[index]=amin+getStyle(temp,"height");
    }
  }
  }
  function getmin(arr){
    var min=arr[0];[3,3,2,1,5,2]
    for(var i=1;i<arr.length;i++){
      if(arr[i]<min){
        min=arr[i];
      }
    }
    var index=0;
    for(var j=0;j<arr.length;j++){
      if(arr[j]==min){
        index=j;
        break;
      }
    }
    return {value:min,index:index}
  }
  function getStyle(obj, attr) {
    if (obj.currentStyle) {
      return parseFloat(obj.currentStyle[attr]);
    } else {
      return parseFloat(window.getComputedStyle(obj)[attr]);

    }
  }
</script>

以上就是小编为大家带来的用瀑布流的方式在网页上插入图片的简单实现方法的全部内容了,希望对大家有所帮助,多多支持三水点靠木~

Javascript 相关文章推荐
获取select元素被选中的文本内容的js代码
Jan 29 Javascript
jquery插件开发之实现google+圈子选择功能
Mar 10 Javascript
jQuery隐藏和显示效果实现
Apr 06 Javascript
jquery遍历json对象集合详解
May 18 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 Javascript
一文让你彻底搞清楚javascript中的require、import与export
Sep 24 Javascript
JS将网址url转化为JSON格式的方法
Jul 02 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
Nov 14 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
May 23 Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
Jul 26 Javascript
浅谈Web页面向后台提交数据的方式和选择
Sep 23 #Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
Sep 23 #Javascript
打造自己的jQuery插件入门教程
Sep 23 #Javascript
jQuery.uploadify文件上传组件实例讲解
Sep 23 #Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
Sep 23 #Javascript
jQuery实现边框动态效果的实例代码
Sep 23 #Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
Sep 23 #Javascript
You might like
php的ajax框架xajax入门与试用介绍
2010/12/19 PHP
php 函数中使用static的说明
2012/06/01 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python统计一个文本中重复行数的方法
2014/11/19 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
Python列表list排列组合操作示例
2018/12/18 Python
Python实现图片识别加翻译功能
2019/12/26 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
党员公开承诺书和承诺事项
2014/03/25 职场文书
战友聚会策划方案
2014/06/13 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
创业计划书之校园超市
2019/09/12 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis