详解纯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 设置.’查看 ...
随机推荐
- js 大厦之JavaScript事件
1.js事件简介 事件(Event) 是 JavaScript 应用跳动的心脏 ,进行交互,使网页动起来.也是把所有东西粘在一起的胶水.当我们与浏览器中 Web 页面进行某些类型的交互时,事件就发生了 ...
- Visual Studio 开发(二):VS 2017配置FFmpeg开发环境
在上篇文章Visual Studio 开发(一):安装配置Visual Studio Code 中,我们讲了一下如何配置VS CODE,来编写和调试C的代码.如果你已经使用VS Code回顾和复习好C ...
- 实用:Git 中的一些常见错误
无论是数据科学家.算法工程师还是普通开发人员,在每个团队协作开发任务中,Git 都是必不可少的版本控制工具,因此掌握它的基本操作十分有必要.但即便是教程满天飞的今天,开发人员在使用 Git 时也还是会 ...
- MyBatis 的 XML 配置文件使用说明
简介 MyBatis 的配置文件(默认名称为 mybatis-config.xml)包含了会深深影响 MyBatis 行为的设置(settings)和属性(properties)信息.文档的顶层结构如 ...
- Python 音视频方面资源大全
自然语言处理 用来处理人类语言的库. NLTK:一个先进的平台,用以构建处理人类语言数据的 Python 程序.官网 jieba:中文分词工具.官网 langid.py:独立的语言识别系统.官网 Pa ...
- Scala - 快速学习04 - 求值策略
表达式求值策略(Evaluation Strategy) Scala中所有的运算都是基于表达式的. Call By Value - 对函数实参求值,且仅求值一次:函数调用之前对所有表达式进行求值 Ca ...
- 【sping揭秘】25、Spring远程方案
分化:RMI,EJB,Hessian Spring有 Rmi,http,hessian,burlap 基于rmi的remoting方案 RMI要求远程类对象包路径和本地一致 基于HTTP的轻量级rem ...
- jenkins 'cordova' command not recognised on Jenkins Windows slave
在jenkins里构建ionic项目.在构建Execute Windows bath command 执行 cordova 跟ionic 命令失败.但是运行cmd却能够执行成功. 惊不惊喜 意不意外, ...
- mysql 开发进阶篇系列 50 表的数据导入(load data infile,mysqlimport )
一.概述 上篇讲到的表的数据导出(select .. into outfile 或者mysqldump),这篇继续讲表的数据导入,导入也同样有二个方法,分别是load data infile... 和 ...
- Android--UI之GridView
前言 这篇博客介绍一下Android平台下,GridView控件的开发.针对GridView控件的一些常用属性.方法,以及注意事项进行讲解,最后将以一个Demo展示GridView控件的使用. Gri ...