探索 HTML 和 CSS 实现的 3D旋转相册
效果演示
这段HTML与CSS代码创建了一个包含10张卡片的3D旋转效果,每张卡片都有自己的边框颜色和图片。通过CSS的3D变换和动画,实现了一个动态的旋转展示效果

HTML
<div class="wrapper"><div class="inner" style="--quantity: 10;"><div class="card" style="--index: 0;--color-card: 142, 249, 252;"><div class="img"><img src="../../static/3.jpg" alt=""></div></div><div class="card" style="--index: 1;--color-card: 142, 252, 204;"><div class="img"><img src="../../static/4.jpg" alt=""></div></div><div class="card" style="--index: 2;--color-card: 142, 252, 157;"><div class="img"><img src="../../static/5.jpg" alt=""></div></div><div class="card" style="--index: 3;--color-card: 215, 252, 142;"><div class="img"><img src="../../static/3.jpg" alt=""></div></div><div class="card" style="--index: 4;--color-card: 252, 252, 142;"><div class="img"><img src="../../static/4.jpg" alt=""></div></div><div class="card" style="--index: 5;--color-card: 252, 208, 142;"><div class="img"><img src="../../static/5.jpg" alt=""></div></div><div class="card" style="--index: 6;--color-card: 252, 142, 142;"><div class="img"><img src="../../static/4.jpg" alt=""></div></div><div class="card" style="--index: 7;--color-card: 252, 142, 239;"><div class="img"><img src="../../static/5.jpg" alt=""></div></div><div class="card" style="--index: 8;--color-card: 204, 142, 252;"><div class="img"><img src="../../static/3.jpg" alt=""></div></div><div class="card" style="--index: 9;--color-card: 142, 202, 252;"><div class="img"><img src="../../static/4.jpg" alt=""></div></div></div>
</div>
- .wrapper:最外层的容器,用于包裹整个3D效果。
- .inner:内部容器,用于包裹所有的卡片,并且设置了–quantity自定义属性,这个值表示卡片的总数,用于计算每个卡片的旋转角度。
- .card:单个卡片的容器,每个卡片都有一个–index属性,表示卡片的索引,用于计算旋转角度,以及–color-card属性,表示卡片的边框颜色。
- .img:图片容器,用于包裹img标签。
- img:图片元素,用于显示卡片上的图片。
CSS
.wrapper {width: 100%;height: 100%;position: relative;text-align: center;display: flex;align-items: center;justify-content: center;overflow: hidden;
}
.inner {--w: 150px;--h: 200px;--translateZ: calc((var(--w) + var(--h)) + 0px);--rotateX: -15deg;--perspective: 1000px;position: absolute;width: var(--w);height: var(--h);top: 25%;left: calc(50% - (var(--w) / 2) - 2.5px);z-index: 2;transform-style: preserve-3d;transform: perspective(var(--perspective));animation: rotating 20s linear infinite;
}@keyframes rotating {from {transform: perspective(var(--perspective)) rotateX(var(--rotateX)) rotateY(0);}to {transform: perspective(var(--perspective)) rotateX(var(--rotateX)) rotateY(1turn);}
}
.card {position: absolute;border: 2px solid rgba(var(--color-card));border-radius: 12px;overflow: hidden;inset: 0;transform: rotateY(calc((360deg / var(--quantity)) * var(--index))) translateZ(var(--translateZ));
}
.img {width: 100%;height: 100%;object-fit: cover;background: #0000 radial-gradient(circle,rgba(var(--color-card), 0.2) 0%,rgba(var(--color-card), 0.6) 80%,rgba(var(--color-card), 0.9) 100%);
}
.img img {width: 100%;height: 100%;
}
- .wrapper:设置为相对定位,并且使其充满整个视口(viewport),居中显示内容,并且隐藏溢出的内容。
- .inner:设置为绝对定位,并且定义了一些自定义属性,用于计算卡片的宽度、高度、Z轴的平移距离、X轴的旋转角度和透视效果。它还设置了transform-style为preserve-3d,这是实现3D效果的关键属性。此外,它还定义了一个无限循环的rotating动画。
- @keyframes rotating:定义了一个名为rotating的关键帧动画,使.inner容器围绕Y轴旋转。
- .card:设置为绝对定位,并且使用rotateY和translateZ变换来实现卡片的3D旋转效果。每个卡片的旋转角度由–index和–quantity属性计算得出。
- .img:设置图片容器的宽高、对象适应模式和背景渐变效果。
- .img img:设置图片的宽高以填满容器。
相关文章:
探索 HTML 和 CSS 实现的 3D旋转相册
效果演示 这段HTML与CSS代码创建了一个包含10张卡片的3D旋转效果,每张卡片都有自己的边框颜色和图片。通过CSS的3D变换和动画,实现了一个动态的旋转展示效果 HTML <div class"wrapper"><div class"inner" style"-…...
OpenJudge_ 简单英文题_04:0/1 Knapsack
题目 描述 Given the weights and values of N items, put a subset of items into a knapsack of capacity C to get the maximum total value in the knapsack. The total weight of items in the knapsack does not exceed C. 输入 First line: two positive integers N (…...
深入探索离散 Hopfield 神经网络
一、离散 Hopfield 神经网络的起源与发展 离散 Hopfield 神经网络由约翰・霍普菲尔德在 1982 年提出,这一创新性的成果在当时引起了广泛关注,成为早期人工神经网络的重要代表之一。 在那个时期,人工神经网络的发展还处于相对初级的阶段。霍…...
[智能车摄像头是一种安装在汽车上用于辅助驾驶和提高安全性的重要设备]
智能车摄像头是一种安装在汽车上用于辅助驾驶和提高安全性的重要设备。它们通常包括几个不同类型,如前视摄像头、环视摄像头、行车记录仪等。这些摄像头的主要功能有: 前视摄像头(Forward Camera):用于提供驾驶员前方…...
前端vue 列表中回显并下拉选择修改标签
1,vue数据列表中进行回显状态并可以在下拉框中选择修改,效果如下 2,vue 页面关键代码 <el-table-column label"审核" align"center" class-name"small-padding fixed-width" prop"status" >&…...
hbase未来的发展趋势
HBase 作为一个开源的分布式、可伸缩的 NoSQL 数据库,依托于 Hadoop 生态系统,以处理海量结构化数据为优势。随着大数据技术的发展,HBase 的发展趋势主要体现在以下几个方面: 1. 与云计算深度集成 随着企业向云迁移,HBase 也正在越来越多地部署在云环境中。云服务商(如 …...
Rust 语言学习笔记(二)
再继续快速学习一下 Rust 的以下几个知识点,就可以开始着手做点小工具了 基本数据类型复合数据类型基本的流程控制 Rust 设计为有效使用内存考虑的,它提供了非常细力度的数据类型,如整数分为有无符号,宽度从 8 位到 128 位&…...
【postman】怎么通过curl看请求报什么错
获取现成的curl方式: 1,拿别人给的curl 2,手机app界面通过charles抓包,点击接口复制curl 3,浏览器界面-开发者工具-选中接口复制curl 拿到curl之后打开postman,点击import,粘贴curl点击send&am…...
Python 编程入门指南(一)
1. Python 简介 Python是一种广泛使用的高级编程语言,因其简洁的语法和强大的功能而备受欢迎。Python由Guido van Rossum于20世纪90年代初设计,旨在提供易于阅读和编写的代码,适合从初学者到专业开发者的各个水平。它是一种解释型语言,这意味着在编写和执行代码之间不需要…...
macOS 设置固定IP
文章目录 以太网Wifi 基于 macOS 15.1 以太网 Wifi...
redis实现消息队列的几种方式
一、了解 众所周知,redis是我们日常开发过程中使用最多的非关系型数据库,也是消息中间件。实际上除了常用的rabbitmq、rocketmq、kafka消息队列(大家自己下去研究吧~模式都是通用的),我们也能使用redis实现消息队列。…...
debian 系统更新升级
系统升级能够有效避免漏洞导致的损害 不过需要做好提前和后续的测试,避免现有运行程序的错误。 debian安装参考:链接 一、清理过时和不再使用的源 1.清理源 vi /etc/apt/sources.list2.在下面的文件夹下清理不需要的 cd /etc/apt/sources.list.d二、…...
STM32学习笔记-----UART的概念
在 STM32 中,UART(Universal Asynchronous Receiver/Transmitter)是一种常用的串行通信接口,广泛应用于嵌入式系统中。STM32 提供了丰富的硬件资源来支持 UART 通信,可以通过标准库(STM32 HAL 或者标准外设…...
Pytest-Bdd-Playwright 系列教程(9):datatable 参数的使用
Pytest-Bdd-Playwright 系列教程(9):datatable 参数的使用 前言一、什么是 datatable 参数?Gherkin 表格示例 二、datatable 参数的基本使用feature文件:获取用户信息并执行相关操作的使用 datatable 处理表格数据Give…...
【408】SDN重点笔记
总特征:数据平面(负责转发)与控制平面(负责控制)分离 控制平面: 由服务器和软件组成。控制平面完成转发表,并分发。 路由器不再需要路由选择协议,不再交换信息,只负责收到…...
云运维基础
笔记内容侵权联系删除 云审计(CTS) 云审计云上资源变更均可被管控,实时系统性记录所有人的操作,无需手工统计。云审计服务支持将操作记录合并,周期性地生成事件文件实时同步转存到OBS存储桶,帮助用户实现…...
基于微信小程序的平安驾校预约平台的设计与实现(源码+LW++远程调试+代码讲解等)
摘 要 互联网发展至今,广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力…...
Rust开发一个命令行工具(一,简单版持续更新)
依赖的包 cargo add clap --features derive clap命令行参数解析 项目目录 代码 main.rs mod utils;use clap::Parser; use utils::{editor::open_in_vscode,fs_tools::{file_exists, get_file, is_dir, list_dir, read_file}, }; /// 在文件中搜索模式并显示包含它的行。…...
实战:深入探讨 MySQL 和 SQL Server 全文索引的使用及其弊端
在数据库中处理大量文本数据时,包含搜索(例如查找包含特定单词的文本)往往是必需的。然而,直接使用 LIKE %text% 的方式在大数据量中进行模糊查询会造成性能瓶颈。为了解决这一问题,MySQL 和 SQL Server 提供了全文索引(Full-Text Indexing)功能,可以显著加速文本数据的…...
情景2 虚拟化世界 自己答案的理解
1、什么是虚拟化? 答:版本很多,选了两个作为参考。 定义1:虚拟化是创造设备或者资源的虚拟版本,如服务器、存储设备、网络或者操作系统。 定义2:虚拟化是资源的逻辑表示,它不受物理限制的约束。 2、寄生…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
