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


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 相关文章推荐
Dojo 学习笔记入门篇 First Dojo Example
Nov 15 Javascript
javascript实现跳转菜单的具体方法
Jul 05 Javascript
javascript获取web应用根目录的方法
Feb 12 Javascript
一个不错的字符串转码解码函数(自写)
Jul 31 Javascript
JS定时器实现数值从0到10来回变化
Dec 09 Javascript
实例解析ES6 Proxy使用场景介绍
Jan 08 Javascript
解决Webpack 热部署检测不到文件变化的问题
Feb 22 Javascript
Vue.js 踩坑记之双向绑定
May 03 Javascript
node使用promise替代回调函数
May 07 Javascript
vue中的适配px2rem示例代码
Nov 19 Javascript
JS实现随机生成10个手机号的方法示例
Dec 07 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
Oct 25 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获取汉字首字母的函数
2013/11/07 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
JQuery优缺点分析说明
2011/04/10 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
python实现拓扑排序的基本教程
2018/03/11 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
Python网页解析器使用实例详解
2020/05/30 Python
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
大学生毕业求职的自我评价
2013/09/29 职场文书
献爱心活动总结
2014/05/07 职场文书
争先创优演讲稿
2014/09/15 职场文书
体育教师个人工作总结
2015/02/09 职场文书
暖春观后感
2015/06/08 职场文书
班委竞选稿范文
2015/11/21 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript