一行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 相关文章推荐
jQuery Ajax请求状态管理器打包
May 03 Javascript
javaScript arguments 对象使用介绍
Oct 18 Javascript
jquery div拖动效果示例代码
Dec 08 Javascript
js实现滚动条滚动到页面底部继续加载
Dec 19 Javascript
node.js实现快速截图
Aug 27 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
Jul 22 jQuery
Bootstrap图片轮播效果详解
Oct 17 Javascript
Angular6笔记之封装http的示例代码
Jul 27 Javascript
简化版的vue-router实现思路详解
Oct 19 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
JS桶排序的简单理解与实现方法示例
Nov 25 Javascript
JS内置对象和Math对象知识点详解
Apr 03 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生成静态页
2006/11/25 PHP
php文件操作实例代码
2012/05/10 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
python 同时运行多个程序的实例
2019/01/07 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
用python实现学生管理系统
2020/07/24 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
台湾良兴购物网:EcLife
2019/12/01 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
国际商务系学生个人的自我评价
2013/11/26 职场文书
就业表自我评价分享
2014/02/06 职场文书
个人创业事迹材料
2014/12/30 职场文书
国庆庆典邀请函
2015/02/02 职场文书
家长对孩子的寄语
2015/02/26 职场文书
2015年新教师工作总结
2015/04/28 职场文书
少年雷锋观后感
2015/06/10 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
详解NodeJS模块化
2021/06/15 NodeJs
Python requests用法和django后台处理详解
2022/03/19 Python