前端-PC端瀑布流【10张图】
.HTML 利用封装的 jquerywaterfall.js 方法 完成
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>瀑布流</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="js/jquerywaterfall.js"></script>
<script>
$(function(){
$('.items').waterFall();
});
</script> <style>
body{background:#DEE1E6}
.container{width:1200px;margin:0 auto}
.items{position:relative}
.item{width:230px;position:absolute;left:0;top:0;box-shadow:0 1px 2px 0 rgba(0,0,0,0.1);border-radius:8px;overflow:hidden;background:#fff;margin-bottom:20px}
.item img{display:block;width:100%}
.item-text{padding:10px;font-size:14px;color:#999}
</style>
</head>
<body>
<div class="container">
<div class="items">
<div class="item">
<img src="data:images/1.jpg" alt="">
<div class="item-text">
<p class="item-title">标题</p>
<p class="item-desc">描述信息</p>
<p class="item-updataTime">发布时间</p>
</div>
</div>
<div class="item">
<img src="data:images/2.jpg" alt="">
<div class="item-text">
<p class="item-title">标题</p>
<p class="item-desc">描述信息</p>
<p class="item-updataTime">发布时间</p>
</div>
</div>
<div class="item">
<img src="data:images/3.jpg" alt="">
<div class="item-text">
<p class="item-title">标题</p>
<p class="item-desc">描述信息</p>
<p class="item-updataTime">发布时间</p>
</div>
</div>
<div class="item">
<img src="data:images/4.jpg" alt="">
<div class="item-text">
<p class="item-title">标题</p>
<p class="item-desc">描述信息</p>
<p class="item-updataTime">发布时间</p>
</div>
</div>
<div class="item">
<img src="data:images/5.jpg" alt="">
<div class="item-text">
<p class="item-title">标题</p>
<p class="item-desc">描述信息</p>
<p class="item-updataTime">发布时间</p>
</div>
</div>
<div class="item">
<img src="data:images/6.jpg" alt="">
<div class="item-text">
<p class="item-title">标题</p>
<p class="item-desc">描述信息</p>
<p class="item-updataTime">发布时间</p>
</div>
</div>
<div class="item">
<img src="data:images/7.jpg" alt="">
<div class="item-text">
<p class="item-title">标题</p>
<p class="item-desc">描述信息</p>
<p class="item-updataTime">发布时间</p>
</div>
</div>
<div class="item">
<img src="data:images/8.jpg" alt="">
<div class="item-text">
<p class="item-title">标题</p>
<p class="item-desc">描述信息</p>
<p class="item-updataTime">发布时间</p>
</div>
</div>
<div class="item">
<img src="data:images/9.jpg" alt="">
<div class="item-text">
<p class="item-title">标题</p>
<p class="item-desc">描述信息</p>
<p class="item-updataTime">发布时间</p>
</div>
</div>
<div class="item">
<img src="data:images/10.jpg" alt="">
<div class="item-text">
<p class="item-title">标题</p>
<p class="item-desc">描述信息</p>
<p class="item-updataTime">发布时间</p>
</div>
</div>
</div>
</div>
</body>
</html>
.jquerywaterfall.js
$.fn.waterFall=function(){
// 要计算每一个item元素的left、top值,宽度都是一样,不一样的是高度
//计算每一个item元素的left值,需要知道每一个item元素的宽度,以及 元素间距
let $items= $(this);
let parentWidth=$items.width();//总宽度1200px
let column = 5;//5列
let $childRen = $items.children('.item');//获取所有 item元素
let W =$childRen.width();//获取item 元素的宽度
console.log(W);
let space =(parentWidth-column*W)/(column-1);//获取 元素之间的间距
let arrHeight=[];//存储一下,一行中所有item元素的高度
$childRen.each(function(index,dom){
$dom =$(dom);
if(index<column){//计算前面5列的位置
$dom.css({top:0,left:index*(W+space)});//设置css样式
arrHeight.push($dom.height());//存储一下,一行中所有item元素的高度
}else{
//计算后面元素的位置
console.log(arrHeight);
let minIndex = 0;
//找到最矮一列的高度 以及 索引值
let minHeight= arrHeight[minIndex];
for(let i = 0 ; i<arrHeight.length ; i++){
if(minHeight>arrHeight[i]){
minHeight=arrHeight[i];
minIndex=[i];
};
}
console.log(minHeight);
//找到之后,更改item的位置
$dom.css({top:minHeight+space,left:minIndex*(W+space)});
//拿到最矮的那一列,重新赋值 因为你在最矮的一列添加了元素
arrHeight[minIndex]=minHeight+space+$dom.height();
}
});
};
效果图
前端-PC端瀑布流【10张图】的更多相关文章
- 面试问了解Linux内存管理吗?10张图给你安排的明明白白!
文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 今天来带大家研究一下Linux内存管理.对于精通 CURD 的业务同学 ...
- 前端jQuery实现瀑布流
瀑布流是我们经常会见到的东西,一直刷新一直有,其实它实现起来是很简单的.具体代码如下 1.css代码 <style> *{ margin:; padding:; } .container{ ...
- 使用vue做移动端瀑布流分页
讲到瀑布流分页有一个方法一定是要用到的 pullToRefresh() 这个也没什么好解释的,想了解的可以去百度一下 下面上代码 <div id="main" class=& ...
- 自实现PC端jQuery版轮播图
最近其他项目不是很忙,被安排给公司的官网项目做一个新的页面(之前没接触公司官网项目),其中有一个用到轮播图的地方,最开始想直接用swiper.js插件实现就好了,可是发现官网项目里之前都没有引入过sw ...
- web前端学习笔记-瀑布流的算法分析与代码实现
瀑布流效果目前应用很广泛,像花瓣,新浪轻博,蘑菇街,美丽说等好多网站都有.也有好多支持该效果的前段框架,今天学习了一下这种效果的实现,不依赖插件,自己动手分析实现过程,为了便于叙述清楚,分析中的一些名 ...
- 10 张图打开 CPU 缓存一致性的大门
前言 直接上,不多 BB 了. 正文 CPU Cache 的数据写入 随着时间的推移,CPU 和内存的访问性能相差越来越大,于是就在 CPU 内部嵌入了 CPU Cache(高速缓存),CPU Cac ...
- 10 张图聊聊线程的生命周期和常用 APIs
上一篇文章我们聊了多线程的基础内容,比如为什么要使用多线程,线程和进程之间的不同,以及创建线程的 4 种方式.本文已收录至我的 Github: https://github.com/xiaoqi666 ...
- 前端 PC端兼容性问题总结
1.如果图片加a标签在IE9-中会有边框 解决方案: img{border:none;} 2.rgba不支持IE8 解决方案:可以用 opacity eg: opacity:0.7;/*FF chr ...
- 用10张图来看机器学习Machine learning in 10 pictures
I find myself coming back to the same few pictures when explaining basic machine learning concepts. ...
随机推荐
- 修改mac下homebrew的源 加快下载速度
把源改为清华的镜像 # HOMEBREW_BOTTLE_DOMAIN就是目标源 修改这个路径就可以里 echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirro ...
- 专人写接口+模型,专人写业务逻辑---interface_model -- business logical
专人写接口+模型,专人写业务逻辑---interface_model -- business logical 0-控制台脚本重构为“面向接口编程”:1-仓库类通过__constru方法,来实现一处实例 ...
- react 中事件参数和一般参数以及this绑定的写法
import React from 'react'; import PropTypes from 'prop-types'; class Home extends React.Component{ r ...
- ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]锁定状态,无法插入数据
PUT /twitter/_settings { "index.blocks.read_only_allow_delete": null } 官网给出的解决办法
- mysql_DCL_grant/revoke
授权就是为某个用户赋予某些权限.例如,可以为新建的用户赋予查询所有数据库和表的权限.合理的授权能够保证数据库的安全.不合理的授权会使数据库存在安全隐患. MySQL中使用GRANT关键字来为用户设置权 ...
- day40—JavaScript多物体运动框架
转行学开发,代码100天——2018-04-25 今天继续学习JavaScript的运动实现——多物体运动框架的介绍及其应用. 首先来看一个简单的例子.如下图,要使图中3个红色盒子实现鼠标移入变宽,移 ...
- curl的一些常用命令
在学习nodejs中get到了一项新的技能crul curl 可以给在命令行上面给node服务器发送一些信息,然后得到服务器返回而响应信息,在命令行中打印出来. 下面是我整理的一些常用的命令:
- LeetCode 129. Sum Root to Leaf Numbers 动态演示
树的数值为[0, 9], 每一条从根到叶子的路径都构成一个整数,(根的数字为首位),求所有构成的所有整数的和 深度优先搜索,通过一个参数累加整数 class Solution { public: vo ...
- (转载)Java 8 认识 HashMap
原链接:传送门 摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型.随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实 ...
- HTML5-新增表单元素
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...