一行JavaScript代码如何实现瀑布流布局


Posted in Javascript onDecember 11, 2020

写在前面

一行 JavaScript 代码究竟可以完成什么布局?今天我们就来用一行 JavaScript 代码完成经典布局的一种,瀑布流布局。
所谓的瀑布流布局就是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。

瀑布流的特点:

  • 琳琅满目: 整版以图片为主,大小不一的图片按照一定的规律排列。
  • 唯美: 图片的风格以唯美的图片为主。
  • 操作简单: 在浏览网站的时候,只需要轻轻滑动一下鼠标滚轮,一切的美妙的图片精彩便可呈现在你面前。

效果图如下所示

一行JavaScript代码如何实现瀑布流布局

当然了 这个样式使用原生 JS 一行代码肯定是不能完成的,这就需要今天的主角登场了:Masonry 插件闪亮登场!!!!!

Masonry 插件是什么

Masonry是 jQuery 实现瀑布流布局的插件,可以把 Masonry 看做是 CSS 的浮动布局。

无论排列的元素是水平浮动的还是垂直浮动的,Masonry都是根据网格先垂直排列元素,再水平排列元素,就像修墙一样。

配置 Masonry 相当简单,只需要在 jQuery 脚本中简单的使用.masonry()方法来包装容器元素。根据具体布局效果,可能需要制定一个选项。

Masonry 插件的使用方法

1、引入 masonry 插件:masonry 插件的使用是依赖于 jQuery 的,所以必须按照顺序进行引入:

<!-- 1. 引入 jQuery 文件 -->
<script src="./library/jQuery 1.12.4.js"></script>
<!-- 引入 masonry 插件 -->
<script src="./library/masonry/masonry.pkgd.js"></script>

2、HTML 页面结构

  • 定义一个容器元素
  • 在容器元素中所有元素呈现瀑布流效果

示例代码如下所示

<div id="container">
 <img class="grid-item" src="./imgs/1.png">
</div>

定位瀑布流布局的容器元素,并调用 masonry() 核心方法

masonry() 核心方法的简单应用

masonry() 核心方法的简单用法,传入一个 options 参数,该参数具有两个可选项

  • itemSelector : 默认值是 .item ,指定哪些子元素将用作布局中的项元素(选择器)
  • columnWidth : 一列的宽度,如果默认的话是第一个项目宽度

示例代码如下所示:

$('#container').masonry({
 // itemSelector : 默认值是 .item ,指定哪些子元素将用作布局中的项元素(选择器)
 itemSelector: '.grid-item'
})

测试 dome

示例代码如下

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>瀑布流布局插件</title>
 <!-- 1. 引入 jQuery 文件 -->
 <script src="./library/jQuery 1.12.4.js"></script>
 <!-- 引入 masonry 插件 -->
 <script src="./library/masonry/masonry.pkgd.js"></script>
 <style>
  img {
   display: block;
   width: 300px;
   margin: 5px;
   float: left;
  }

  #container {
   width: 940px;
   margin: 0 auto;
  }
 </style>
</head>

<body>
<div id="container">
 <img class="grid-item" src="./imgs/1.png">
 <img class="grid-item" src="./imgs/2.png">
 <!--此处省略若干行图片-->
 <img class="grid-item" src="./imgs/9.png">
 <img class="grid-item" src="./imgs/10.png">
</div>
 <script>
  $('#container').masonry({
   // itemSelector : 默认值是 .item ,指定哪些子元素将用作布局中的项元素(选择器)
   itemSelector: '.grid-item'
  })
 </script>
</body>

</html>

最终执行的结果如上图。

哈哈哈 最终还是一行 JS 代码

$('#container').masonry({itemSelector: '.grid-item'})

到此这篇关于JavaScript代码如何实现瀑布流布局的文章就介绍到这了,更多相关JS实现瀑布流布局内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
写的htc的数据表格
Jan 20 Javascript
新浪刚打开页面出来的全屏广告代码
Apr 02 Javascript
js 深拷贝函数
Dec 04 Javascript
JavaScript中SQL语句的应用实现
May 04 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
Nov 19 Javascript
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
Apr 12 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
May 28 Javascript
JavaScript 中的12种循环遍历方法【总结】
May 31 Javascript
使用Angular material主题定义自己的组件库的配色体系
Sep 04 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
Aug 06 Javascript
react中hook介绍以及使用教程
Dec 11 #Javascript
js实现菜单跳转效果
Dec 11 #Javascript
jquery实现拖拽小方块效果
Dec 10 #jQuery
js实现弹幕墙效果
Dec 10 #Javascript
jQuery实现简单弹幕制作
Dec 10 #jQuery
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 #Vue.js
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
Dec 10 #Javascript
You might like
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
海量经典的jQuery插件集合
2010/01/12 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
vue-cli常用设置总结
2018/02/24 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
Python Sleep休眠函数使用简单实例
2015/02/02 Python
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
Python中修改字符串的四种方法
2018/11/02 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
python多线程同步之文件读写控制
2021/02/25 Python
python3.7添加dlib模块的方法
2020/07/01 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
最新的大学生找工作自我评价
2013/09/29 职场文书
单身证明范本
2015/06/15 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python