一行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 相关文章推荐
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
Dec 04 Javascript
关于jquery性能最佳实践的讨论,与求教
Mar 30 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
Jul 15 Javascript
Javascript 按位取反运算符 (~)
Feb 04 Javascript
jquery 操作css样式、位置、尺寸方法汇总
Nov 28 Javascript
javascript实现可拖动变色并关闭层窗口实例
May 15 Javascript
微信小程序request出现400的问题解决办法
May 23 Javascript
通过构造函数实例化对象的方法
Jun 28 Javascript
vue项目中使用ueditor的实例讲解
Mar 05 Javascript
浅谈Angularjs中不同类型的双向数据绑定
Jul 16 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
Sep 19 Javascript
原生JS利用transform实现banner的无限滚动示例代码
Jun 15 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
PHP遍历数组的几种方法
2012/03/22 PHP
PHP 透明水印生成代码
2012/08/27 PHP
php正则提取html图片(img)src地址与任意属性的方法
2017/02/08 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
Bootstrap下拉菜单效果实例代码分享
2016/06/30 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
微信小程序Echarts图表组件使用方法详解
2019/06/25 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
谈谈node.js中的模块系统
2020/09/01 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
python单链表实现代码实例
2013/11/21 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
新学期开学寄语
2014/01/18 职场文书
《云房子》教学反思
2014/04/20 职场文书
参观邀请函范文
2015/02/02 职场文书
教师党员自我评价范文
2015/03/04 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
关于EntityWrapper的in用法
2022/03/22 Java/Android
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL