【css酷炫效果】纯CSS实现瀑布流加载动画

news2025/3/19 14:29:52

【css酷炫效果】纯CSS实现瀑布流加载动画

  • 创作背景
  • html结构
  • css样式
  • 完整代码
    • 基础版
    • 进阶版(无限往复加载)
  • 效果图

想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90492012

创作随缘,不定时更新。

创作背景

刚看到csdn出活动了,赶时间,直接上代码。

html结构


	<div class="waterfall">
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
	</div>

css样式

.waterfall {
  display: grid;
  grid-template-columns: repeat(4, 1fr); /* 4列布局 */
  gap: 15px;
  width: 800px;
  margin: 50px auto;
}

.item {
  background: #f0f0f0;
  border-radius: 8px;
  height: 150px;
  opacity: 0; /* 初始隐藏 */
}
@keyframes waterfall-drop {
  0% {
    opacity: 0;
    transform: translateY(-50px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.item {
  animation: waterfall-drop 0.6s ease-out forwards;
}
.item:nth-child(4n+1) { animation-delay: 0.1s; }
.item:nth-child(4n+2) { animation-delay: 0.2s; }
.item:nth-child(4n+3) { animation-delay: 0.3s; }
.item:nth-child(4n+4) { animation-delay: 0.4s; }

完整代码

基础版

<!DOCTYPE html>
<html lang="en"> 
<head>

<title>页面特效</title>
<style type="text/css">
.waterfall {
  display: grid;
  grid-template-columns: repeat(4, 1fr); /* 4列布局 */
  gap: 15px;
  width: 800px;
  margin: 50px auto;
}

.item {
  background: #f0f0f0;
  border-radius: 8px;
  height: 150px;
  opacity: 0; /* 初始隐藏 */
}
@keyframes waterfall-drop {
  0% {
    opacity: 0;
    transform: translateY(-50px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.item {
  animation: waterfall-drop 0.6s ease-out forwards;
}
.item:nth-child(4n+1) { animation-delay: 0.1s; }
.item:nth-child(4n+2) { animation-delay: 0.2s; }
.item:nth-child(4n+3) { animation-delay: 0.3s; }
.item:nth-child(4n+4) { animation-delay: 0.4s; }
</style>

</head>
<body>

	<div class="waterfall">
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
	</div>

</body>
</html>

进阶版(无限往复加载)

<!DOCTYPE html>
<html lang="en"> 
<head>

<title>页面特效</title>
<style type="text/css">
.waterfall {
  display: grid;
  grid-template-columns: repeat(4, 1fr); /* 4列布局 */
  gap: 15px;
  width: 800px;
  margin: 50px auto;
}

.item {
  background: #f0f0f0;
  border-radius: 8px;
  height: 150px;
  opacity: 0; /* 初始隐藏 */
}
@keyframes waterfall-drop {
  0% {
    opacity: 0;
    transform: translateY(-50px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.item {
  animation: waterfall-drop 0.6s ease-out forwards;
  animation-iteration-count: infinite;
  animation-direction: alternate;
}
.item:nth-child(4n+1) { animation-delay: 0.1s; }
.item:nth-child(4n+2) { animation-delay: 0.2s; }
.item:nth-child(4n+3) { animation-delay: 0.3s; }
.item:nth-child(4n+4) { animation-delay: 0.4s; }
</style>

</head>
<body>

	<div class="waterfall">
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img> 
		<img class="item" src='a.gif' width='200px' height='100px'></img>  
	</div>

</body>
</html>

效果图

在这里插入图片描述

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

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

相关文章

咖啡点单小程序毕业设计(JAVA+SpringBoot+微信小程序+完整源码+论文)

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着社会的快速发展和…

网络编程套接字【端口号/TCPUDP/网络字节序/socket编程接口/UDPTCP网络实验】

网络编程套接字 0. 前言1. 认识端口号2. 认识TCP和UDP协议3. 网络字节序4. socket编程接口5. 实现一个简单的UDP网络程序5.1 需求分析5.2 头文件准备5.3 服务器端设计5.4 客户端设计5.5 本地测试5.6 跨网络测试5.7 UDP小应用——客户端输入命令&#xff0c;服务器端执行 6. 地址…

DeepSeek 3FS 与 JuiceFS:架构与特性比较

近期&#xff0c;DeepSeek 开源了其文件系统 Fire-Flyer File System (3FS)&#xff0c;使得文件系统这一有着 70 多年历时的“古老”的技术&#xff0c;又获得了各方的关注。在 AI 业务中&#xff0c;企业需要处理大量的文本、图像、视频等非结构化数据&#xff0c;还需要应对…

Unity WebGL项目访问时自动全屏

Unity WebGL项目访问时自动全屏 打开TemplateData/style.css文件 在文件最下方添加红色框内的两行代码 使用vscode或者其他编辑器打开index.html 将按钮注释掉&#xff0c;并且更改为默认全屏

C# WPF编程-Menu

C# WPF编程-Menu 布局&#xff1a;代码&#xff1a;效果 在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;Menu控件用于创建下拉菜单或上下文菜单&#xff0c;它提供了丰富的定制选项来满足不同的应用需求。下面将介绍如何在WPF应用程序中使用Menu…

Docker和containerd之概览(Overview of Docker and Containerd)

Docker和containerd之概览 容器本质上就是一个进程。 Namespace是一种逻辑分组机制&#xff0c;允许您将集群资源划分为独立的虚拟环境。每个 Namespace 为资源提供了一个范围&#xff0c;使得不同的团队、应用程序或环境可以在同一集群中共存&#xff0c;而不会相互干扰。 C…

【多线程】线程不安全问题

文章目录 多线程不安全的原因大的层面->多线程是随机调度的容易产生死锁 小的层面->内存不可见性引入volatile关键字 指令重排序不是原子性带来的隐患 synchronized锁的互斥性及作用可重入性——解决死锁 wait()和notify()两个突然迸发出的疑问 多线程不安全的原因 大的…

【C++】树和二叉树的实现(下)

本篇博客给大家带来的是用C语言来实现数据结构树和二叉树的实现&#xff01; &#x1f41f;&#x1f41f;文章专栏&#xff1a;数据结构 &#x1f680;&#x1f680;若有问题评论区下讨论&#xff0c;我会及时回答 ❤❤欢迎大家点赞、收藏、分享&#xff01; 今日思想&#xff…

kafka指北

为自己总结一下kafka指北&#xff0c;会持续更新。创作不易&#xff0c;转载请注明出处。 目录 集群controller选举过程broker启动流程 主题创建副本分布ISRleader副本选举机制LEO 生产数据流程同步发送和异步发送 分区策略ack应答生产者发送消息的幂等性跨分区幂等性问题&…

7、vue3做了什么

大佬认为有何优点&#xff1a; 组合式api----逻辑集中、对ts有更好的支持RFC–开放了一个讨论机制&#xff0c;可以看到每一个api的提案&#xff0c;方便源码维护&#xff0c;功能扩展&#xff0c;大家一起讨论 官方rfc响应式独立&#xff0c;new Proxy&#xff0c;天生自带来…

基于大语言模型与知识图谱的智能论文生成工具开发构想

基于大语言模型与知识图谱的智能论文生成工具开发构想 一、研究背景与意义 1.1 学术写作现状分析 #mermaid-svg-FNVHG5EiEgVSCpHK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FNVHG5EiEgVSCpHK .error-icon{fil…

JUC大揭秘:从ConcurrentHashMap到线程池,玩转Java并发编程!

目录 JUC实现类 ConcurrentHashMap 回顾HashMap ConcurrentHashMap CopyOnWriteArrayList 回顾ArrayList CopyOnWriteArrayList: CopyOnWriteArraySet 辅助类 CountDownLatch 线程池 线程池 线程池优点 ThreadPoolExecutor 构造器各个参数含义&#xff1a; 线程…

4.3--入门知识扫盲,IPv4的头部报文解析,数据报分片,地址分类(包你看一遍全部记住)

IPv4协议&#xff1a;网络世界的快递包裹指南&#xff08;附拆箱说明书&#xff09; “IPv4就像一张明信片&#xff0c;既要写清楚地址&#xff0c;又要控制大小别超重” —— 某网络工程师的桌面铭牌 一、IPv4报头&#xff1a;快递面单的终极艺术 1.1 报头结构图&#xff08;…

苍穹外卖-阿里云OSS使用

第一步&#xff1a; package com.sky.properties;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Component ConfigurationProperties(prefix "sky.alioss") …

Vue生命周期_Vue生命周期钩子

一、生命周期介绍 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到 DOM&#xff0c;以及在数据改变时更新 DOM。 在此过程中&#xff0c;它也会运行被称为生命周期钩子的函数&#xff0c;让…

数据库设计实验(4)—— 数据更新实验

一、目的与要求 掌握用SQL语句实现数据的插入、修改和删除。 二、实验准备 1. 建立一个商店的数据库store&#xff0c;记录顾客及其购物情况&#xff0c;由下面三个表组成&#xff1a; 商品&#xff08;商品号&#xff0c;商品名&#xff0c;单价&#xff0c;商品类别&#x…

Apache DolphinScheduler:一个可视化大数据工作流调度平台

Apache DolphinScheduler&#xff08;海豚调度&#xff09;是一个分布式易扩展的可视化工作流任务调度开源系统&#xff0c;适用于企业级场景&#xff0c;提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。 Apache DolphinScheduler 旨在解决复杂的大数据…

再学:call与delegatecall、call转账 Bank合约

目录 1.call与delegatecall 2.transfer && call 3.若想内部传递abi编码 4.Bank合约 1.call与delegatecall call&#xff1a;切换上下文 delegatecall&#xff1a;不切换上下文 delegatecall可以理解为 A在调用B这个集成在A的方法 可升级合约&#xff0c;常用del…

关于解决新版本spring项目请求测试接口返回406的问题

目录 一、问题产生 二、问题排查 &#xff08;1&#xff09;首先是打断点debug进行排查 &#xff08;2&#xff09;网上查找相关资料排查 &#xff08;3&#xff09;老项目测试 三、问题解决 一、问题产生 使用Apifox对后端发送请求进行接口测试时返回状态码406&#xff0…

linux入侵排查_应急响应

1.实验目标 掌握linux系统中信息收集的方法 掌握linux系统中持久化操作方法及排查方式 掌握linux系统入侵排查思路 2.实验步骤 1.统计攻击者爆破次数 2.排查攻击者第一次使用恶意用户登录的时间 3.检查sudoer文件 4.排查计划任务 5.排查计划任务 6.排查恶意服务 7.排查…