详解纯css实现瀑布流(multi-column多列及flex布局)
瀑布流的布局自我感觉还是很吸引人的,最近又看到实现瀑布流这个做法,在这里记录下,特别的,感觉flex布局实现瀑布流还是有点懵的样子,不过现在就可以明白它的原理了
1.multi-column多列布局实现瀑布流
先简单的讲下multi-column相关的部分属性
column-count设置列数column-gap设置列与列之间的间距column-width设置每列的宽度
还要结合在子容器中设置break-inside防止多列布局,分页媒体和多区域上下文中的意外中断
break-inside属性值
- auto 指定既不强制也不禁止元素内的页/列中断。
- avoid 指定避免元素内的分页符。
- avoid-page 指定避免元素内的分页符。
- avoid-column 指定避免元素内的列中断。
- avoid-region 指定避免元素内的区域中断。
截取了部分,可自己填充
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
/* html文件 */ <!-- 使用multi-columns实现瀑布流 --> < div id = "root" > < div class = "item" > < img class = "itemImg" src = "../images/1.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/2.jpg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/3.jpg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/4.jpg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/5.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > </ div > |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
/* css样式 */ body { background : #e5e5e5 ; } /* 瀑布流最外层 */ #root { margin : 0 auto ; width : 1200px ; column-count: 5 ; column- width : 240px ; column-gap: 20px ; } /* 每一列图片包含层 */ .item { margin-bottom : 10px ; /* 防止多列布局,分页媒体和多区域上下文中的意外中断 */ break-inside: avoid ; background : #fff ; } .item:hover { box-shadow: 2px 2px 2px rgba( 0 , 0 , 0 , . 5 ); } /* 图片 */ .itemImg { width : 100% ; vertical-align : middle ; } /* 图片下的信息包含层 */ .userInfo { padding : 5px 10px ; } .avatar { vertical-align : middle ; width : 30px ; height : 30px ; border-radius: 50% ; } .username { margin-left : 5px ; text-shadow : 2px 2px 2px rgba( 0 , 0 , 0 , . 3 ); } |
2.jQuery特效 flex布局实现瀑布流将外层设置为row布局,然后再设置一个容器并设置为column布局,它是将列作为一个整体,然后在对列进行划分,在列里进行宽固定来实现的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
/* html文件(只截取两列布局)*/ < div id = "root" > < div class = "itemContainer" > < div class = "item" > < img class = "itemImg" src = "../images/1.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/2.jpg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/3.jpg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/4.jpg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/5.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/6.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/7.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > </ div > < div class = "itemContainer" > < div class = "item" > < img class = "itemImg" src = "../images/5.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/7.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/6.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/5.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/6.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > < div class = "item" > < img class = "itemImg" src = "../images/6.jpeg" alt = "" /> < div class = "userInfo" > < img class = "avatar" src = "../images/gift.png" alt = "" /> < span class = "username" >牵起你的左手护着你</ span > </ div > </ div > </ div > </ div > |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/* css文件 */ body{ background : #e5e5e5 ; } #root{ display : flex; flex- direction : row; margin : 0 auto ; width : 1200px ; } .itemContainer{ margin-right : 10px ; flex- direction : column; width : 240px ; } .item{ margin-bottom : 10px ; background : #fff ; } .itemImg{ width : 100% ; } .userInfo { padding : 5px 10px ; } .avatar { vertical-align : middle ; width : 30px ; height : 30px ; border-radius: 50% ; } .username { margin-left : 5px ; text-shadow : 2px 2px 2px rgba( 0 , 0 , 0 , . 3 ); } |
实践后发现,纯css实现的瀑布流只能是一列一列的排布,所以还是得用js来实现瀑布流更符合我们常见的瀑布流jQuery插件
详解纯css实现瀑布流(multi-column多列及flex布局)的更多相关文章
- 纯css实现瀑布流(multi-column多列及flex布局)
瀑布流的布局自我感觉还是很吸引人的,最近又看到实现瀑布流这个做法,在这里记录下,特别的,感觉flex布局实现瀑布流还是有点懵的样子,不过现在就可以明白它的原理了 1.multi-column多列布局实 ...
- wpf 客户端【JDAgent桌面助手】开发详解(三) 瀑布流效果实现与UI虚拟化优化大数据显示
目录区域: 业余开发的wpf 客户端终于完工了..晒晒截图 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]详解(一)主窗口 圆形菜单... wpf 客 ...
- CSS001. 纯CSS实现瀑布流(纵向排序)
通过 Multi-columns 相关的属性 column-count.column-gap 配合 break-inside 来实现瀑布流布局. 首先对包裹图片的盒子增加样式,column-count ...
- 简单CSS定位瀑布流实现方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- Linux常用命令详解(week1_day1_3)--技术流ken
本节内容 pidofpstopipuptimewgetcurltrddtargrepfind 命令详解 1.pidof 获取正在运行程序的PID 实例1: [root@ken ~]# pidof ss ...
- 分别用js和css实现瀑布流
下午查找了瀑布流的相关原理,找了一些css3实现的还有js实现的,最后总结了一些比较简单的,易懂的整理起来 1.css3实现 只要运用到 column-count分列 column-width固 ...
- Linux常用命令详解(week1_day1_2)--技术流ken
本节内容 aliasunaliasunamesuhostnamehistorywhichwcwwhowhoamipingkillseqdudffreedate 命令详解 1. alias 设置.’查看 ...
随机推荐
- 电脑知识,一键开启Win10“超级性能模式”
现在主流系统以及从WIN7慢慢的转移到了WIN10,微软也为WIN10做了很多优化跟更新.今天要跟大家说的这个功能很多人肯定没有听说过.那就是WIN10的超级性能模式. 1. 大多数Win10是没有滴 ...
- node.js服务器搭建
//1.导入http 核心模块 const http = require("http"); //2.调用http.createServer 方法,创建一个web 服务器对象 con ...
- Metasploit Framework(6)客户端渗透(上)
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 前五篇文章讲解了Metasploit Framewor ...
- 再谈spring的循环依赖是怎么造成的?
老生常谈,循环依赖!顾名思义嘛,就是你依赖我,我依赖你,然后就造成了循环依赖了!由于A中注入B,B中注入A导致的吗? 看起来没毛病,然而,却没有说清楚问题!甚至会让你觉得你是不清楚spring的循环依 ...
- Redis数据结构以及应用场景
1. Redis数据结构以及应用场景 1.1. Memcache VS Redis 1.1.1. 选Memcache理由 系统业务以KV的缓存为主,数据量.并发业务量大,memcache较为合适 me ...
- Docker0 网卡删除
只需执行下面三步就可以了: 1.yum -y install bridge-utils 2. ifconfig docker0 down 3. brctl delbr docker0 执 ...
- 解决 Chrome 下载不了东西 失败 - 已屏蔽 的问题
或许你怎么也想不到是IE的问题 由于IE的安全设定问题 但是这个锅 确实不应该是IE来背. 因为我IE下载都没出现这个问题. 解决方法是这样的: IE>Internet选项>安全>自 ...
- [Charles]SSLHandshake: Received fatal alert: certificate_unknown
---------------------- 转载请注明出处 http://www.cnblogs.com/dzblog/p/8119712.html --------------------- 今天 ...
- restTemplate.postForObject上传文件中文乱码(???.xls)
一.问题描述 项目中, 使用restTemplate上传文件时, 文件名中文乱码, 一串问号, 源文件名为: 测试中文乱码哦哦哦.zip, 通过restTemplate.postForObject调用 ...
- 前端测试框架Jest系列教程 -- Expect(验证)
写在前面 在编写测试时,我们通常需要检查值是否满足某些条件,Jest中提供的expect允许你访问很多“Matchers”,这些“匹配器”允许您验证不同的东西. Expect 可以验证什么 Jest中 ...