瀑布流布局(1)

前言

完成一个动漫人物的瀑布流布局,分别通过原生JavaScript、Css3和Jquery方式实现。
首先是使用JavaScript。

一、创建基本框架

1 HTML结构

<main>                    //便于以后进行 相对定位<div class="wrap">    //为了方便设置图片和图片之间样式+绝对定位<div class="pic">   //包裹图片,设置单个图片的样式<img src="img/1.jpg" alt="图片1"></div></div> 
</main>

2 CSS基本样式

*{                       /* 简单全局重置 */margin: 0;padding: 0;
}main{position: relative;    /*相对布局*/
}.wrap{padding: 15px 0 0 15px;  /*设置内边距,便于以后JS计算高度*/
}.pic{border: 1px solid #ccc;padding: 10px;border-radius: 5px;          /*设置边框圆角 */box-shadow: 0 0 6px #ccc;  /*水平、垂直偏移;模糊度;颜色*/
}.pic img{width: 162px;    /*瀑布流特点,图片等宽不等高 */height: auto;
}

二、设置图片的定位 和 排序

1 设置列数和main的宽度

window.onload=function(){waterfall("main",".wrap");
}function waterfall(parent,box){var oneparent = document.querySelector(parent);   //获取main元素//S1 获取main元素里面的所有 类warp元素var boxs = oneparent.querySelectorAll(box);    //S2 计算整个页面显示的列数;(页面宽/每列的盒子wrap宽)var oneboxwidth = boxs[0].offsetWidth;    //每列的盒子wrap宽var cols = Math.floor(document.documentElement.clientWidth / oneboxwidth) ; //获取 整数列数//S3 设置main的 固定宽度oneparent.style.cssText = 'width:' + (oneboxwidth * cols)+'px; margin:0 auto';
}

2 获取第一列图片的高度

window.onload=function(){waterfall("main",".wrap");
}function waterfall(parent,box){var oneparent = document.querySelector(parent);   //获取main元素// 获取main元素里面的所有 类warp元素var boxs = oneparent.querySelectorAll(box);    ............//获取第一列图片的高度//S1 存放数据的 数组var boxsHeightArry = [];//S2 获取图片高度并存放for (var i=0; i<boxs.length; i++){if(i < cols){boxsHeightArry.push(boxs[i].offsetHeight);}}console.log(boxsHeightArry);
}

3 绝对定位,把以后的图片,都放到第一行最矮的下方

 //S1 存放数据的 数组var boxsHeightArry = [];//S2 获取图片高度并存放for (var i=0; i<boxs.length; i++){if(i < cols){boxsHeightArry.push(boxs[i].offsetHeight);}else{//S1 获取第一行的最小值&索引值minBoxHeight = Math.min.apply(null,boxsHeightArry);minBoxHeightIndex = boxsHeightArry.indexOf(minBoxHeight);//S2 调试   console.log( minBoxHeightIndex);//S3 设置第二行及以后行 图片的绝对定位位置boxs[i].style.position = "absolute";boxs[i].style.top = minBoxHeight + 'px';boxs[i].style.left = oneboxwidth * minBoxHeightIndex + 'px';}}

4 每次循环时都增加后放的图片的高度,从而改变数组里最矮的值

else{ //S1 获取第一行的最小值&索引值minBoxHeight = Math.min.apply(null,boxsHeightArry);minBoxHeightIndex = boxsHeightArry.indexOf(minBoxHeight);//S2 调试 console.log( minBoxHeightIndex);//S3 设置第二行及以后行图片的 绝对定位位置boxs[i].style.position = "absolute";boxs[i].style.top = minBoxHeight + 'px';// boxs[i].style.left = oneboxwidth * minBoxHeightIndex + 'px';boxs[i].style.left = boxs[minBoxHeightIndex].offsetLeft + 'px';//从第二行开始,每次循环时都增加后放的图片的高度,从而改变数组里最矮的值boxsHeightArry[minBoxHeightIndex] += boxs[i].offsetHeight;
}

四 Reference

  1 js改变css样式的三种方法;

转载于:https://www.cnblogs.com/ygming/p/8446850.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NLP——序列标注之命名实体识别

1.概述 序列标注包括自然语言处理中的分词&#xff0c;词性标注&#xff0c;命名实体识别&#xff0c;关键词抽取&#xff0c;词义角色标注等。解决方案是NN模型&#xff08;神经网络模型&#xff09;CRF 命名实体识别&#xff08;Named Entity Recognition&#xff0c;简称N…

C语言验证6174数学问题

有意思的数学问题任意4位不完全一样的数字&#xff0c;能组合出的最大数字减去能组合出的最小数字&#xff0c;得到一个新的数字(3位数补0&#xff09;&#xff0c;重复以上操作&#xff0c;不超过7个循环&#xff0c;必然得到一个数&#xff1a;6174这个问题是之前发布的文章&…

Cortex-M3工作模式与异常

Cortex-M3工作模式与异常 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、工作模式 线程模式和手柄模式。 当处理器处在线程状态下时&#xff0c;既可以使用特权级&#xff0c;也可以使用用户级&#xff1b;另一方面&#xff0c; handler模式总是特…

Python学习——模块的基本知识

http://www.cnblogs.com/alex3714/articles/5161349.html# 定义# 模块&#xff1a;用来从逻辑上组织python代码&#xff08;变量&#xff0c;函数&#xff0c;类&#xff0c;逻辑&#xff1a;实现一个功能&#xff09;&#xff0c;本质就# 是.py结尾的python文件&#xff08;文…

Windows XP系统的“恢复”办法

Windows XP系统的“恢复”办法 1&#xff0e;让SFC命令全面修复受损文件 如果系统因丢失了太多的系统重要文件而变得非常不稳定&#xff0c;那么按照前面介绍的方法一一修复&#xff0c;相必会让人发疯的。这时就需要使用SFC文件检测器命令&#xff0c;来全面的检测并修复受损的…

自己动手实现一个malloc内存分配器 | 30图

对内存分配器透彻理解是编程高手的标志之一。如果你不能理解malloc之类内存分配器实现原理的话&#xff0c;那你可能写不出高性能程序&#xff0c;写不出高性能程序就很难参与核心项目&#xff0c;参与不了核心项目那么很难升职加薪&#xff0c;很难升级加薪就无法走向人生巅峰…

机器学习面试——分类算法SVM

1、什么是硬间隔和软间隔&#xff1f; 当训练数据线性可分时&#xff0c;通过硬间隔最大化&#xff0c;学习一个线性分类器&#xff0c;即线性可分支持向量机。 当训练数据近似线性可分时&#xff0c;引入松弛变量&#xff0c;通过软间隔最大化&#xff0c;学习一个线性分类器…

计算机的发展史及多道技术

首先先补充一下上一篇的一个小问题。 应用程序的启动流程&#xff1a;   前提&#xff1a;应用程序是运行于操作系统之上的   举例&#xff1a;启动暴风音影     1.双击快捷方式     2.告诉操作系统一个文件路径     3.操作系统从硬盘读取文件内容到内存中   …

Cortex M3 NVIC与中断控制

Cortex M3 NVIC与中断控制 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、NVIC概览 ——嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问&#xff0c;除了包含控制寄存器和中断处理的控制逻辑之外&#xff0c; NVIC 还包含了 MPU、 S…

VS 2005 或 VS 2008 在安装VSS 2005后,看不到源代码管理的解决办法

昨天有朋友在重新安装VS 2008后&#xff0c;再安装VSS 2005&#xff0c;安装好后在文件菜单中找不到“源代码管理”的菜单项&#xff0c;后来经朋友告知&#xff0c;是开发工具的默认选项设置问题。打开开发工具&#xff0c;“工具”--“选项”&#xff1a;&#xff08;如图&am…

代码里-3gt;gt;1是-2但3gt;gt;1是1,-3/2却又是-1,为什么?

之前群里有个同学向大家提出了类似这样的问题。随后这位同学公布了答案&#xff1a;右移运算是向下取整&#xff0c;除法是向零取整。这句话对以上现象做了很好的总结&#xff0c;可是本质原因是什么呢&#xff1f;我一直以为-3>>1的结果是-1。所以打算思考一下这个问题。…

机器学习面试——逻辑回归和线性回归

1、什么是广义线性模型&#xff08;generalize linear model&#xff09;&#xff1f; 普通线性回归模型是假设X为自变量&#xff0c;Y为因变量&#xff0c;当X是一维的&#xff0c;y是一维的&#xff0c;共进行n次观测&#xff0c;则 其中&#xff0c;w是待估计的参数&#x…

洛谷P3205合唱队——区间DP

题目&#xff1a;https://www.luogu.org/problemnew/show/P3205 枚举点&#xff0c;分类为上一个区间的左端点或右端点&#xff0c;满足条件便即可&#xff1b; 注意不要重复(当l2时)。 代码如下&#xff1a; #include<iostream> #include<cstdio> using namespace…

远程连接server问题

开启Windows防火墙后&#xff0c;当远程连接Server服务器时被拒绝&#xff0c;其解决方法如下&#xff1a;1、启动Windows防火墙。开始 > 设置 > 控制面板 > Windows防火墙。缺省情况下&#xff0c;防火墙是启用的&#xff0c;这是推荐的设置。2、点击“例外”选项卡。…

STM32开发环境

STM32开发环境 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、MDK安装 MDK 是一个集代码编辑&#xff0c;编译&#xff0c;链接和下载于一体的集成开发环境&#xff08; KDE &#xff09;。MDK 这个名字我们可能不熟悉&#xff0c;但说到 KEIL …

看完「大江大河2」

昨晚熬夜看完&#xff0c;说下自己的想法虽然不能做到百分之百的感同身受&#xff0c;但是确实被剧中的情景所感染&#xff0c;想做成大事情&#xff0c;需要经历的磨难一定也会很大&#xff0c;正如很多年前老水打篮球说的那句「管理人&#xff0c;远远比技术更难」。相比于老…

机器学习面试——XGBoost,GBDT,RF(上)

1、常见的集成思想 bagging&#xff1a;基学习器之间并行训练&#xff0c;且学习器之间没有依赖&#xff0c;像是集体决策的过程&#xff0c;每个个体都进行单独学习&#xff0c;再通过投票的方式做最后的集体决策。常见的算法有随机森林 boosting&#xff1a;基学习器之间串…

一个女程序员的创业人生:胆识也是一种能力 作者:秋镇菜

我在28岁生日那天电信一个副总劝我出来开公司算了&#xff0c;然后想了一天第二天就去工商局注册了&#xff0c;从有开公司的想法到工商局注册仅仅一天时间&#xff01;然后2003年8 月份拿到营业执照&#xff0c;根本不知道安全是怎么一回事情&#xff0c;找北大方正一个技术副…

[SDOI2016]排列计数

Description 求有多少种长度为 n 的序列 A&#xff0c;满足以下条件&#xff1a;1 ~ n 这 n 个数在序列中各出现了一次若第 i 个数 A[i] 的值为 i&#xff0c;则称 i 是稳定的。序列恰好有 m 个数是稳定的满足条件的序列可能很多&#xff0c;序列数对 10^97 取模。Input 第一行…