首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jquery瀑布流布局代码

瀑布流布局是一种流行的网页布局方式,它将内容以垂直排列的方式展示,每一列的高度根据内容的多少动态调整,以达到视觉上的平衡。jQuery 是一个快速、小巧且功能丰富的 JavaScript 库,可以用来简化 HTML 文档遍历、事件处理、动画和 Ajax 交互。

以下是一个简单的 jQuery 瀑布流布局的示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery Waterfall Layout</title>
<style>
  .container {
    position: relative;
  }
  .item {
    position: absolute;
    width: 200px;
    background: #ccc;
    margin: 5px;
    box-sizing: border-box;
  }
</style>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>

<div class="container">
  <!-- 这里放置你的瀑布流项 -->
  <div class="item">...</div>
  <div class="item">...</div>
  <!-- 更多项... -->
</div>

<script>
$(document).ready(function() {
  function layout() {
    var container = $('.container');
    var items = $('.item');
    var gutter = 10; // 项之间的间距
    var columnWidth = items.first().outerWidth(true); // 获取单个项的宽度
    var columns = Math.floor(container.width() / (columnWidth + gutter)); // 计算列数
    var heights = new Array(columns).fill(0); // 初始化每列的高度数组

    items.each(function() {
      var minHeightIndex = heights.indexOf(Math.min.apply(null, heights)); // 找到最短的列
      var left = minHeightIndex * (columnWidth + gutter); // 计算项的左边距
      $(this).css({
        left: left,
        top: heights[minHeightIndex]
      });
      heights[minHeightIndex] += $(this).outerHeight(true) + gutter; // 更新列的高度
    });

    container.height(Math.max.apply(null, heights)); // 设置容器的高度为最高列的高度
  }

  layout(); // 初始布局
  $(window).resize(layout); // 窗口大小改变时重新布局
});
</script>

</body>
</html>

这段代码首先定义了一个容器 .container 和多个 .item,然后使用 jQuery 来计算每个 .item 的位置,并将其放置到最短的列中。当窗口大小改变时,布局会重新计算以适应新的尺寸。

请注意,这个示例是一个基础的瀑布流布局实现,实际应用中可能需要考虑更多的因素,比如图片加载完成后的重新布局、不同屏幕尺寸的适配等。此外,还有许多现成的 jQuery 插件,如 Masonry 或 Isotope,它们提供了更完善的瀑布流布局功能和更好的性能优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 浅析瀑布流布局及其原理视频_jquery瀑布流布局

    一、什么是瀑布流 很多时候我们会看到一些Vlog网站或者展示图片的网站,它们的图片明明每一张的高度大小都不同,但是却能自动地适应,排成一行一行地展示,并且下拉到底的时候,加载的图片也会自动适应,这就是瀑布流...三、事先准备 建议事前在网上随便下载15张以上的图片,不用理会长宽问题,这些都是可以用css设置的; 准备好jQuery 然后按照以下布局去把HTML结构和CSS样式写好: 瀑布流的核心 实现瀑布流的核心其实就两个: 找出图片高度最小的那一列,再那一列插入,然后继续找下一个高度最小的,一直循环直到插满图片为止; 计算出每一列距离浏览器整体的距离,也就是position里的...true:false; } // 追加瀑布流效果 function appendBox(wrap,boxes){ // 先判断是否展示到了底部 if(getBottom(wrap)){ for (i in...div>" wrap.append(addstr) } }else{ return false } waterfall(wrap,wrap.children('div')) } 注意:这里面我还加入了瀑布流追加的效果

    1.4K20

    iOS 瀑布流之栅格布局

    :1)、纵长方形(1:2),动态的根据服务器下发模块样式绘制布局,可以横向滑动,限定为两行的高度。...答案当然是用UICollectionView了,然后自定义流水布局UICollectionViewLayout,主要代码如下:计算记录每一个cell对应的布局属性。...这个样式的栅格布局我已封装集成在WSLWaterFlowLayout 中,详情可以前往下载。...CGRectMake(x, y, w, h); } 后台下发字段格式示意图 功能描述:WSLWaterFlowLayout 是在继承于UICollectionViewLayout的基础上封装的带头脚视图的瀑布流控件...目前支持竖向瀑布流(item等宽不等高、支持头脚视图)、水平瀑布流(item等高不等宽 不支持头脚视图)、竖向瀑布流( item等高不等宽、支持头脚视图)、栅格布局瀑布流 4种样式的瀑布流布局。

    1.8K10

    多栏布局与JS实现瀑布流

    css3属性之多栏布局与JS实现瀑布流    背景:之前打算自己总结一下flex布局的知识点,发现自己无从下手,原因在何处:我反思了一下,其实原因很简单,使用的次数少,更多的时间使用了百分比,浮动和定位解决...column-width宽度时,同时设置盒子的width,否则宽度默认为100%,每栏宽度按栏数平均分;盒子每栏宽度必须大于等于column-width设定的值,否则就会减少栏数来增加每栏宽度 css3多列和JS实现瀑布流... 给自己安利一波吧,看到网上很多瀑布流的效果,哇,简直棒极了有没有;于是我迫不及待的打开V**,打开了pinterest的官网。...自己也梳理梳理逻辑:代码之前,一定要先搞清逻辑,再动手写代码> 我们都不陌生瀑布流是同宽的,但是高度不一,js主要的工作就是根据高度来进行布局, 1)当一行排满后,准备排第二行的时候,...梳理完逻辑,让我们动手写代码吧: html比较简单,这里图片我用了placehold的图片占位符,如果你没有很好的素材,这也许是个不错的选择 <div class="main

    3K90

    干货 | 如何实现jQuery响应式瀑布流 ?

    开门见山,本文介绍响应式的瀑布流的实现方法。 最终效果图如下,改变浏览器大小效果更棒哦~ ?...以下我们将每个瀑布流盒子简称为box 使用数组记录每个box宽和高 ---- 设置不同屏幕宽度下每一行box的数量 使用$(window).width()获取屏幕宽度 根据不同屏幕宽度设置每一行box的数量...absolute";this.width = width;this.height = height;this.top = top;this.left = left;} 创建数组记录元素宽高 这里简述一下瀑布流原理...添加后该列高度则加上该box高度,以此类推 设置每个元素宽度,高度自定义auto 创建数组boxStyleArr来保存每个元素宽高 使用数组boxArr保存每一竖列的高度,即每一竖列最后一个box的底部位置 使用瀑布流原理计算每个...= boxStyleArr[index].height;boxStyleArr[index].left = boxWidth * index;boxStyleArr[index].top = 0;//瀑布流原理计算每个

    1.8K20

    Swift 自定义布局实现瀑布流视图

    ,瀑布流视图的惊艳之处就在于它的每个 Cell 的尺寸都是不一致的,那如何生成动态高度的 Cell 呢!...了解完需要实现的函数后,接下来就开始计算瀑布流视图的布局属性了,在这里我先讲一下我实现的大概思路吧!...由于我们瀑布流视图的每个 Cell 的高度是动态的,为了实现这个需求,我们可以声明一个 protocol 并提供一个返回动态高度的方法,来为每个 Cell 提供动态的高度,代码如下: protocol...,然后并把相交的属性返回 好了,到这里关于瀑布流视图的布局就讲完了,附上 WaterFallFlowLayout 的全部代码,供大家参考: import UIKit protocol WaterFallLayoutDelegate...Xcode 工程中编译并运行,你就会看到 Cell 根据照片的高度正确放置并设置了大小: 好了, 利用 UICollectionView 控件与自定义布局实现瀑布流的内容到此就结束了,最后附上项目的源码地址

    2.6K30

    实现瀑布流布局

    实现瀑布流布局 瀑布流,又称瀑布流式布局。...是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部,瀑布流的主要特性便是错落有致,定宽而不定高的设计让页面区别于传统的矩阵式图片布局模式...实例 主体思路是记录每一列的高度,父容器相对定位,成员绝对定位,利用top与left属性控制位置,每次新增加成员时找到高度最低的那个将成员置于其下方,即可实现瀑布流布局。...,还可以使用CSS3新增的column-*多列布局来实现,这两种也就是纯CSS实现的瀑布流布局的方式,但是由于这两种方式都是将成员纵向排列,并不适合需要动态插入成员的布局,当需要动态插入成员时还是需要使用...DOCTYPE html> Js瀑布流布局 <meta name="viewport" content="width=device-width

    86010

    瀑布流布局方案

    调研: 1、蘑菇街/堆糖/花瓣:absolute 2、手淘:flex,但不算瀑布流,每个card高度一样 一、使用flex布局(最妥当) 核心: 1、div分两列 2、遍历数据分两组 3、每次渲染完...) this.data2 = JSON.parse(JSON.stringify(data2)) }, ---- 二、使用column(最先进——纯css) 1、核心 multi-column实现瀑布流主要依赖以下几个属性...列数由总宽度与每列宽度计算得出 column-gap: 设置列与列之间的间距 2、避免断层 1)表现: 最后一个元素的文本内容被自动断开,一部分在当前列尾,一部分在下一列的列头 2)原因: multi-column布局会将其内的元素自动进行流动和平衡...兼容性一般:column-fill: balance 只在firefox下支持,大部分浏览器只支持默认的column-fill: fill,就只能先渲染完第一列再渲染第二列 2、不适合需要顺序展示的双瀑布流...---- 三、使用absolute布局(最古早) 利: 1、一般不会出错的方案 弊: 1、代码繁琐 ---- 参考: https://juejin.cn/post/6844904142058553358

    1.3K20
    领券