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


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 相关文章推荐
AngularJS控制器继承自另一控制器
May 09 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
JS正则匹配中文的方法示例
Jan 06 Javascript
JS解决移动web开发手机输入框弹出的问题
Mar 31 Javascript
Flask中获取小程序Request数据的两种方法
May 12 Javascript
AngularJS 控制器 controller的详解
Oct 17 Javascript
vue项目部署到Apache服务器中遇到的问题解决
Aug 24 Javascript
解决vue props 拿不到值的问题
Sep 11 Javascript
vue axios基于常见业务场景的二次封装的实现
Sep 21 Javascript
Vue 实现分页与输入框关键字筛选功能
Jan 02 Javascript
jQuery实现简单聊天室
Feb 08 jQuery
Vue3如何理解ref toRef和toRefs的区别
Feb 18 Vue.js
浅谈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读取超大文件的实例代码
2012/04/01 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
使用python3.5仿微软记事本notepad
2016/06/15 Python
浅析python中的分片与截断序列
2016/08/09 Python
Python实现数据库并行读取和写入实例
2017/06/09 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
python批量处理txt文件的实例代码
2020/01/13 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
详解Python中的Lock和Rlock
2021/01/26 Python
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
linux面试题参考答案(1)
2016/01/22 面试题
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
女娲补天教学反思
2014/02/05 职场文书
银行求职信范文
2014/05/26 职场文书
公司门卫工作职责
2014/06/28 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python