jQuery Masonry

本文介绍如何使用jQuery Masonry插件创建瀑布流布局,并演示图片加载处理及动效增强技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

webdesign060-02

  前陣子看到非常有趣的Waterfall瀑布流布局,可以先看一下有使用的網站如下。

  今天來教大家怎麼自己做瀑布流不局的網頁,先給大家看一下完成的樣子Masonry DEMO

 使用套件

使用方法 

1.首先要先載入需要的js

1. <script src="/js/jquery.min.js"></script>
2. <script src="/js/jquery.masonry.min.js"></script>

  這邊的jquery需要的版本為1.4.0或者更新版本

2.html的結構如下

1. <div id="container">
2. <div class="item">...</div>
3. <div class="item">...</div>
4. <div class="item">...</div>
5. ...
6. </div>

  把一格一格要顯示的內容用class 為item的div包起來

3.CSS的部分設定

1. .item {
2. width: 220px;
3. margin: 10px;
4. float: left;
5. }

  把每個item的寬度設定為一致,才有辦法排的漂亮,不然會有空隙,加一點margin讓每個item有點間隔,另外把float屬性設定為left。

4.javascript設定

1. $(function(){
2. $('#container').masonry({
3. // options
4. itemSelector : '.item',
5. columnWidth : 240
6. });
7. });

  這樣就會有基本的樣子了,看DEMO1

 

展示圖片

  如果在item中展示圖片的話,由於javascript開始執行的時候,圖片還沒有載入完全,導致高度上會錯亂,因此需要在javascript的地方使用imagesLoaded()來防止高度錯誤,讓網頁正確顯示,方法如下

01. <script>
02. $(function(){
03. var $container = $('#container');
04. $container.imagesLoaded(function(){
05. $container.masonry({
06. itemSelector : '.item',
07. columnWidth : 240
08. });
09. });
10. });
11. </script>

  這樣的話就可以在item中使用圖片,不會讓高度的計算上錯誤了。看DEMO2

使用動畫效果

  剛剛的DEMO2中,當在縮放視窗的時候,每個item都是直接跳到新的位置,讓我們來幫他加點動畫效果,讓整個頁面看起來效果更好,要使用動畫效果有兩個方法

1.jquery方式:

在javascript中加上動畫效果參數, isAnimated: true, 這樣就可以了

01. <script>
02. $(function(){
03. var $container = $('#container');
04. $container.imagesLoaded(function(){
05. $container.masonry({
06. itemSelector : '.item',
07. isAnimated: true,
08. columnWidth : 240
09. });
10. });
11. });
12. </script>

按我看DEMO3

2.CSS transitions方式:

  使用之前提到的css 3效果,在CSS的部分加入以下CSS即可,優點是效果較好,缺點是某些瀏覽器到目前為止還是沒有辦法支援,例如IE9876....

01. .masonry,
02. .masonry .masonry-brick {
03. -webkit-transition-duration: 0.7s;
04. -moz-transition-duration: 0.7s;
05. -o-transition-duration: 0.7s;
06. transition-duration: 0.7s;
07. }
08. .masonry {
09. -webkit-transition-property: height, width;
10. -moz-transition-property: height, width;
11. -o-transition-property: height, width;
12. transition-property: height, width;
13. }
14. .masonry .masonry-brick {
15. -webkit-transition-property: left, right, top;
16. -moz-transition-property: left, right, top;
17. -o-transition-property: left, right, top;
18. transition-property: left, right, top;
19. }

DEMO4

  最後可以在自己發揮一下美化一下就可以得到如下的效果

DEMO5

 

其他的參數還請大家自己到官網看囉。

### 使用 jQuery Masonry 插件 jQuery Masonry 是一种用于创建动态布局网格的插件,它能够自动调整项目的位置以填充空白空间并优化视觉效果[^1]。以下是关于如何使用该插件的一些关键点: #### 安装与引入 可以通过下载官方发布的文件或将通过 CDN 引入的方式加载 Masonry 脚本。例如,可以使用以下方式引入: ```html <script src="https://unpkg.com/masonry-layout/dist/masonry.pkgd.min.js"></script> ``` #### 基础 HTML 结构 Masonry 需要一个容器以及多个子项来构建布局。HTML 的基本结构如下所示: ```html <div class="grid"> <div class="grid-item">...</div> <div class="grid-item">...</div> </div> ``` #### 初始化 Masonry 初始化 Masonry 可以通过 JavaScript 实现。下面是一个简单的例子: ```javascript var grid = document.querySelector('.grid'); var msnry = new Masonry(grid, { itemSelector: '.grid-item', columnWidth: 200, gutter: 10 }); ``` 上述代码定义了一个新的 Masonry 对象 `msnry` 并设置了几个选项参数,如 `itemSelector`, `columnWidth`, 和 `gutter`。 #### 动态更新布局 当页面中的 DOM 元素发生变化时(比如新增或删除 `.grid-item`),需要调用 `layout()` 方法重新计算布局位置。 ```javascript // 添加新元素到 .grid 中 $('.grid').append('<div class="grid-item">New Item</div>'); // 更新 Masonry 布局 msnry.appended($('.grid .grid-item:last')); msnry.layout(); ``` #### 自动化布局调整 如果希望在窗口大小改变时自动调整布局,则可绑定事件监听器: ```javascript $(window).on('resize', function() { msnry.layout(); // 调整布局适应当前尺寸 }); ``` #### 更多配置选项 除了基础功能外,还可以设置更多高级属性来自定义行为,例如动画过渡时间、水平排列模式等。具体细节可以在前端开发书签集合中找到更详细的文档说明[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值