css3实现图片瀑布流,根据屏幕大小列可变和不可变的的瀑布流

news2024/11/17 13:39:15

请添加图片描述

前提是每张图片宽度要设置成一样,准备15张图测试

<div class="img-main">
                <div>
                    <img src="@/assets/images/sq/1.jpg" alt="" title="1">
                </div>
                <div>
                    <img src="@/assets/images/sq/2.jpg" alt="" title="2">
                </div>
                <div>
                    <img src="@/assets/images/sq/3.jpg" alt="" title="3">
                </div>
                <div>
                    <img src="@/assets/images/sq/4.jpg" alt="" title="4">
                </div>
                <div>
                    <img src="@/assets/images/sq/5.jpg" alt="" title="5">
                </div>
                <div>
                    <img src="@/assets/images/sq/6.jpg" alt="" title="6">
                </div>
                <div>
                    <img src="@/assets/images/sq/7.jpg" alt="" title="7">
                </div>
                <div>
                    <img src="@/assets/images/sq/8.jpg" alt="" title="8">
                </div>
                <div>
                    <img src="@/assets/images/sq/9.jpg" alt="" title="9">
                </div>
                <div>
                    <img src="@/assets/images/sq/00.jpg" alt="" title="00">
                </div>
                <div>
                    <img src="@/assets/images/sq/11.jpg" alt="" title="11">
                </div>
                <div>
                    <img src="@/assets/images/sq/12.jpg" alt="" title="12">
                </div>
                <div>
                    <img src="@/assets/images/sq/13.jpg" alt="" title="13">
                </div>
                <div>
                    <img src="@/assets/images/sq/14.jpg" alt="" title="14">
                </div>
                <div>
                    <img src="@/assets/images/sq/15.jpg" alt="" title="15">
                </div>
 </div>

1.屏幕大小列可变column实现,设置默认每列的图片宽度

 //瀑布流column实现
 .img-main {
    //宽度200px 
    column-width: 300px;
    //列之间间隔2px 
    column-gap: 2px;
}
.img-main>div>img {
    width: 100%;
} 

2.屏幕大小列可变2 @media来控制


/* //瀑布流column实现 */
.img-main {
    /* 设置列数 改变屏幕大小@media 来控制-实现 默认1列-可自动改变  */
    column-count: 1;
    /* 列之间间隔2px  */
    column-gap: 2px;
      /* 设置每个item的底部间距 */
    margin-bottom: 2px;
}

.img-main>div>img {
    /* 不变形设置,默认宽大小 */
    width: 100%;
    /* 设置每个item的底部间距 */
    margin-bottom: 2px;
    /* break-inside: avoid; */
    /* 防止图片被拆分到两列 */
}

/* 使用媒体查询,根据屏幕大小来调整列数 */
@media (min-width: 768px) {
    .img-main {
        column-count: 3;
        /* 屏幕宽度大于等于768px时,设置为3列 */
    }
}

@media (min-width: 1024px) {
    .img-main {
        column-count: 6;
        /* 屏幕宽度大于等于1024px时,设置为4列 */
    }
}

3.不可变-屏幕大小列不可变

.img-main {  
  column-count: 4; /* 设置列数为4 */  
  column-gap: 10px; /* 设置列之间的间距 */  
}  
.img-main>div {  
  margin-bottom: 10px; /* 设置每个item的底部间距 */  
  break-inside: avoid; /* 防止图片被拆分到两列 */  
}  
.img-main>div>img {  
  width: 100%; /* 图片宽度自适应列宽 */  
  height: auto; /* 图片高度自适应以保持原始比例 */  
}

4.不可变-屏幕大小列不可变

/* //瀑布流column实现 */
.img-main {
    /* 默认5列  */
    column-count: 5;
    /* 列之间间隔2px  */
    column-gap: 2px;
      /* 设置每个item的底部间距 */
    margin-bottom: 2px;
}

.img-main>div>img {
    /* 不变形设置,默认宽大小 */
    width: 100%;
    /* 设置每个item的底部间距 */
    margin-bottom: 2px;
    /* break-inside: avoid; */
    /* 防止图片被拆分到两列 */
}

5.可变-可变js来实现-屏幕大小列可变

  .img-main {
            position: relative;
        }
        .img-main>div>img {
            width: 200px;
            vertical-align: top;
            padding: 5px;
        }

<script>
    $(function () {
        // 获取图片的宽度(200px)
        let imgWidth = $('img').outerWidth(); // 200

        waterfallHandler();

        // 瀑布流处理
        function waterfallHandler() {
            // 获取图片的列数
            let column = parseInt($(window).width() / imgWidth);

            // 高度数组
            let heightArr = [];
            for(let i=0; i<column; i++) {
                heightArr[i] = 0;
            }

            // 遍历所有图片进行定位处理
            $.each($('img'), function (index, item) {
                // 当前元素的高度
                let itemHeight = $(item).outerHeight();
                // 高度数组最小的高度
                let minHeight = Math.min(...heightArr);
                // 高度数组最小的高度的索引
                let minIndex = heightArr.indexOf(minHeight);

                $(item).css({
                    position: 'absolute',
                    top: minHeight + 'px',
                    left: minIndex * imgWidth + 'px'
                });

                heightArr[minIndex] += itemHeight;
            });
        }

        // 窗口大小改变
        $(window).resize(function () {
            waterfallHandler();
        });
    });
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1117867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux启动流程描述

目录 Linux的引导过程 启动系统内核 启动init进程 什么是Linux Linux的内核最初是由芬兰人林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;在赫尔辛基大学上学时出于个人爱好而编写的 Linux全称GUN/Linux&#xff0c;是一套开源的类Unix操作系统&#xff0c;是一个基…

【Linux】基本操作指令汇总(不完全)

文章目录 操作系统概念补充lspwdsuechocdtouchmkdirrmdir指令 && rm 指令(重要)man指令cpmvcatmorelessheadtailstat时间相关的指令calfindgrepwcsortuniqwhichziptar:打包/解包&#xff0c;不打开它&#xff0c;直接看内容bcunamectrl cctrl rctrl d\ls cpulsmemdf-hw…

base64是什么?怎么用的?

Base64是一种将二进制数据转换为ASCII字符的编码方式。 它可以用于在文本协议中传输二进制数据,例如在电子邮件中传输图片或在网页中嵌入图像等。Base64编码使用64个字符集(A-Z、a-z、0-9和"+“、”/")来表示二进制数据。 Base64编码的原理是将3个字节的二进制数…

澳洲谷揽GRANAR谷物分析仪维修GR-1800蛋白检测仪

澳洲GRANAR谷揽GR-1800谷物分析仪应用领域&#xff1a;大豆、油菜籽、亚麻籽 常用分析指标&#xff1a;蛋白质、芥酸、水分、灰分 、油脂等 分析时间&#xff1a;&#xff1c;3min 使用场景&#xff1a;谷物收购、生产加工、实验室 GR-1800i型号特点 1.检测时间由3分钟缩短…

keil中报警告comparison of constant 100 with boolean expression is always true

keil中变量Wave_Fre为变值 需要更改为 if( (0<Wave_Fre)&&(Wave_Fre<100)) 因为在C中运算符计算从左到右&#xff0c;((0<Wave_Fre) < 100 )

修改工单状态BAPI

业务需求&#xff1a;创建内部订单后&#xff0c;自动审批内部订单订单&#xff08;状态改为REL&#xff09; 函数&#xff1a;I_CHANGE_STATUS 单据状态表&#xff1a;JEST 单据状态描述表&#xff1a;TJ02T DATA lv_object TYPE char22 .lv_object OR && p_lv_au…

【LeetCode】63. 不同路径 II

1 问题 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角…

Jmeter(八):jmeter接口自动化测试操作流程、计数器、定时器详解

Jmeter&#xff1a;jmeter接口自动化测试操作流程 在企业使用jmeter开展实际的接口自动化测试工具&#xff0c;建议按如下操作流程&#xff0c; 可以使整个接口测试过程更规范&#xff0c;更有效。 接口自动化的流程&#xff1a; 1、获取到接口文档&#xff1a;swagger、wor…

广州华锐视点:VR3D技术在中学物理实验中的应用

随着科技的飞速发展&#xff0c;VR(虚拟现实)技术已经成为当今教育领域的一股重要力量。它为传统教学带来了前所未有的变革&#xff0c;特别是在初中物理实验教学中&#xff0c;VR技术的应用为学生们开启了全新的学习之旅。下面&#xff0c;让我们一起来探讨VR/3D虚拟仿真中学物…

uboot 启动流程详细分析参考

1 基本概念 1.1 uboot 是什么&#xff1f; 当我们厌倦了裸机程序&#xff0c;而想要采用操作系统的时候&#xff0c;uboot就是不得不引入的一段程序。所以&#xff0c;uboot就是一段引导程序&#xff0c;在加载系统内核之前&#xff0c;完成硬件初始化&#xff0c;内存映射&a…

2016-2023全国MEM国家A类线趋势图:浙大MEM要高多少?

2024年全国MEM联考已经到了关键的冲刺阶段&#xff0c;以目前全国非全日制mem项目的招生录取情况来看&#xff0c;大多数都是以国家A类线作为其录取的基本参考依据。而mem项目的国家线子啊过去的几年中也是有过比较大的波动&#xff0c;最明显的是2022年的国家线达到了历史最高…

【fiddler+loadrunner 两兄弟制霸脚本开发】

前言 一、fiddler工具 1、运行fiddler工具 2、运行需要抓包的网站 这里以loadrunner自带的网站为例 点击“Start web Server” 再点击如下 会看到如下的页面 &#xff08;备注&#xff1a;这里把127.0.0.1改成本机的ip地址&#xff0c;有时fiddler工具会监控不到127.0.0.1的请…

基于人工智能的图像分类算法研究与实现 - 深度学习卷积神经网络图像分类 计算机竞赛

文章目录 0 简介1 常用的分类网络介绍1.1 CNN1.2 VGG1.3 GoogleNet 2 图像分类部分代码实现2.1 环境依赖2.2 需要导入的包2.3 参数设置(路径&#xff0c;图像尺寸&#xff0c;数据集分割比例)2.4 从preprocessedFolder读取图片并返回numpy格式(便于在神经网络中训练)2.5 数据预…

安卓富文本部分高亮及点击事件

安卓富文本部分高亮及点击事件 前言一、富文本是什么&#xff1f;二、实现方法1.使用html2.使用SpannableString 总结 前言 富文本其实不是很常用&#xff0c;但有遇到了过后使用很方便的场景&#xff0c;例如免责声明。这时候就很重要了&#xff0c;前段时间遇到了&#xff0…

轻松实现文件按大小归类保存,高效管理你的文件库!

如果你像管理自己的财产一样管理你的文件&#xff0c;那么你一定需要一个能够轻松实现文件按大小归类保存的工具。今天&#xff0c;我要向大家介绍一款全新的文件管理软件&#xff0c;它能够将你的文件按照大小进行归类保存&#xff0c;让你的文件管理更加高效和有序&#xff0…

安装jdk1.6

安装jdk1.6 背景安装修改 参考 背景 看资料的时候&#xff0c;涉及到jdk1.6&#xff0c;我看了一下本地的jdk,有1.7、1.8、20的&#xff0c;就是没1.6的。然后就琢磨装一个 安装 我看了一下oracle官网&#xff0c;现成的好像不好用。后面google了一下&#xff0c;好像苹果提供了…

d3dx9_43.dll丢失怎么解决,四个解决方法帮你解决d3dx9_43.dll丢失

随着科技的不断发展&#xff0c;我们越来越依赖各种软件和硬件设备来提高生活和工作效率。然而&#xff0c;有时候我们可能会遇到一些技术问题&#xff0c;如“d3dx9_43.dll丢失”的问题。这个问题可能导致某些程序无法正常运行&#xff0c;给我们的生活带来诸多不便。因此&…

如何编写有效的接口测试

在所有的开发测试中&#xff0c;接口测试是必不可少的一项。有效且覆盖完整的接口测试&#xff0c;不仅能保障新功能的开发质量&#xff0c;还能让开发在修改功能逻辑的时候有回归的能力&#xff0c;同时也是能优雅地进行重构的前提。编写接口测试要遵守哪些原则&#xff1f;测…

发现一款非常好用的学术GPT,可形成知识库,并分析论文,根据观点生成文字

发现一款非常好用的学术GPT&#xff0c;支持CHATGPT3.5交互、论文分析与生成&#xff0c;目前作者并未全面推广&#xff0c;仅在小圈子里使用&#xff0c;可以保证后端api的使用稳定性&#xff0c;不会出现大量用户共享gpt 服务&#xff0c;导致gpt调用超时的情况。 使用方法&a…

unittest自动化测试框架,全网独一份

一、单元测试的定义 1、什么是单元测试&#xff1f; 单元测试是指&#xff0c;对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作&#xff0c;这里的最小可测试单元通常是指函数或者类&#xff0c;一般是开发来做的&#xff0c;按照测试阶段来分&…