当前位置: 首页 > news >正文

探索 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旋转效果&#xff0c;每张卡片都有自己的边框颜色和图片。通过CSS的3D变换和动画&#xff0c;实现了一个动态的旋转展示效果 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 年提出&#xff0c;这一创新性的成果在当时引起了广泛关注&#xff0c;成为早期人工神经网络的重要代表之一。 在那个时期&#xff0c;人工神经网络的发展还处于相对初级的阶段。霍…...

[智能车摄像头是一种安装在汽车上用于辅助驾驶和提高安全性的重要设备]

智能车摄像头是一种安装在汽车上用于辅助驾驶和提高安全性的重要设备。它们通常包括几个不同类型&#xff0c;如前视摄像头、环视摄像头、行车记录仪等。这些摄像头的主要功能有&#xff1a; 前视摄像头&#xff08;Forward Camera&#xff09;&#xff1a;用于提供驾驶员前方…...

前端vue 列表中回显并下拉选择修改标签

1&#xff0c;vue数据列表中进行回显状态并可以在下拉框中选择修改&#xff0c;效果如下 2&#xff0c;vue 页面关键代码 <el-table-column label"审核" align"center" class-name"small-padding fixed-width" prop"status" >&…...

hbase未来的发展趋势

HBase 作为一个开源的分布式、可伸缩的 NoSQL 数据库,依托于 Hadoop 生态系统,以处理海量结构化数据为优势。随着大数据技术的发展,HBase 的发展趋势主要体现在以下几个方面: 1. 与云计算深度集成 随着企业向云迁移,HBase 也正在越来越多地部署在云环境中。云服务商(如 …...

Rust 语言学习笔记(二)

再继续快速学习一下 Rust 的以下几个知识点&#xff0c;就可以开始着手做点小工具了 基本数据类型复合数据类型基本的流程控制 Rust 设计为有效使用内存考虑的&#xff0c;它提供了非常细力度的数据类型&#xff0c;如整数分为有无符号&#xff0c;宽度从 8 位到 128 位&…...

【postman】怎么通过curl看请求报什么错

获取现成的curl方式&#xff1a; 1&#xff0c;拿别人给的curl 2&#xff0c;手机app界面通过charles抓包&#xff0c;点击接口复制curl 3&#xff0c;浏览器界面-开发者工具-选中接口复制curl 拿到curl之后打开postman&#xff0c;点击import&#xff0c;粘贴curl点击send&am…...

Python 编程入门指南(一)

1. Python 简介 Python是一种广泛使用的高级编程语言,因其简洁的语法和强大的功能而备受欢迎。Python由Guido van Rossum于20世纪90年代初设计,旨在提供易于阅读和编写的代码,适合从初学者到专业开发者的各个水平。它是一种解释型语言,这意味着在编写和执行代码之间不需要…...

macOS 设置固定IP

文章目录 以太网Wifi![请添加图片描述](https://i-blog.csdnimg.cn/direct/65546e966cae4b2fa93ec9f0f87009d8.png) 基于 macOS 15.1 以太网 Wifi...

redis实现消息队列的几种方式

一、了解 众所周知&#xff0c;redis是我们日常开发过程中使用最多的非关系型数据库&#xff0c;也是消息中间件。实际上除了常用的rabbitmq、rocketmq、kafka消息队列&#xff08;大家自己下去研究吧~模式都是通用的&#xff09;&#xff0c;我们也能使用redis实现消息队列。…...

debian 系统更新升级

系统升级能够有效避免漏洞导致的损害 不过需要做好提前和后续的测试&#xff0c;避免现有运行程序的错误。 debian安装参考&#xff1a;链接 一、清理过时和不再使用的源 1.清理源 vi /etc/apt/sources.list2.在下面的文件夹下清理不需要的 cd /etc/apt/sources.list.d二、…...

STM32学习笔记-----UART的概念

在 STM32 中&#xff0c;UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;是一种常用的串行通信接口&#xff0c;广泛应用于嵌入式系统中。STM32 提供了丰富的硬件资源来支持 UART 通信&#xff0c;可以通过标准库&#xff08;STM32 HAL 或者标准外设…...

Pytest-Bdd-Playwright 系列教程(9):datatable 参数的使用

Pytest-Bdd-Playwright 系列教程&#xff08;9&#xff09;&#xff1a;datatable 参数的使用 前言一、什么是 datatable 参数&#xff1f;Gherkin 表格示例 二、datatable 参数的基本使用feature文件&#xff1a;获取用户信息并执行相关操作的使用 datatable 处理表格数据Give…...

【408】SDN重点笔记

总特征&#xff1a;数据平面&#xff08;负责转发&#xff09;与控制平面&#xff08;负责控制&#xff09;分离 控制平面&#xff1a; 由服务器和软件组成。控制平面完成转发表&#xff0c;并分发。 路由器不再需要路由选择协议&#xff0c;不再交换信息&#xff0c;只负责收到…...

云运维基础

笔记内容侵权联系删除 云审计&#xff08;CTS&#xff09; 云审计云上资源变更均可被管控&#xff0c;实时系统性记录所有人的操作&#xff0c;无需手工统计。云审计服务支持将操作记录合并&#xff0c;周期性地生成事件文件实时同步转存到OBS存储桶&#xff0c;帮助用户实现…...

基于微信小程序的平安驾校预约平台的设计与实现(源码+LW++远程调试+代码讲解等)

摘 要 互联网发展至今&#xff0c;广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#xff0c;劳动强度大&#xff0c;费时费力…...

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、什么是虚拟化&#xff1f; 答:版本很多&#xff0c;选了两个作为参考。 定义1&#xff1a;虚拟化是创造设备或者资源的虚拟版本&#xff0c;如服务器、存储设备、网络或者操作系统。 定义2&#xff1a;虚拟化是资源的逻辑表示&#xff0c;它不受物理限制的约束。 2、寄生…...

【国产操作系统对Qt支持有哪些?】

国产操作系统 鸿蒙操作系统:由华为开发,主要用于智能设备和物联网领域。 深度操作系统:基于Linux的操作系统,适用于个人电脑和服务器。 中标麒麟:由中国电子科技集团公司研发,适用于服务器和桌面环境。 悠然操作系统:面向教育和个人用户的Linux发行版。 红旗Linux:早期…...

深度学习--正则化

笔记内容侵权联系删 过拟合问题 过拟合问题描述:模型在训练集表现优异&#xff0c;但在测试集上表现较差。 根本原因:特征维度过多&#xff0c;模型假设过于复杂&#xff0c;参数过多&#xff0c;训练数据过少&#xff0c;噪声过多导致拟合出的函数几乎完美的对训练集做出预…...

PHP反序列化_1

目录 一、基本概念 1. 序列化 2. 反序列化 二、反序列化漏洞 1. 漏洞产生原因 2. 魔术方法 3.利用魔术方法进行攻击的示例&#xff1a; 一、基本概念 什么是 PHP 反序列化 PHP 反序列化是将序列化后的字符串恢复为原始 PHP 数据类型&#xff08;如对象、数组等&#x…...

深度学习在图像识别中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 深度学习在图像识别中的应用 深度学习在图像识别中的应用 深度学习在图像识别中的应用 引言 深度学习概述 定义与原理 发展历程 …...

SQL面试题——奔驰SQL面试题 车辆在不同驾驶模式下的时间

SQL面试题——奔驰SQL面试题 我们的表大致如下 CREATE TABLE signal_log( vin STRING COMMENTvehicle frame id, signal_name STRING COMMENTfunction name, signal_value STRING COMMENT signal value , ts BIGINT COMMENTevent timestamp, dt STRING COMMENTformat yyyy-mm…...

Leecode刷题C语言之统计好节点的数目

执行结果:通过 执行用时和内存消耗如下&#xff1a; 题目&#xff1a;统计好节点的数目 现有一棵 无向 树&#xff0c;树中包含 n 个节点&#xff0c;按从 0 到 n - 1 标记。树的根节点是节点 0 。给你一个长度为 n - 1 的二维整数数组 edges&#xff0c;其中 edges[i] [ai,…...

webpack5 + vue3 从零配置项目

前言 虽然在实际项目当中很少会从 0 到 1 配置一个项目&#xff0c;毕竟很多重复工作是没有必要的&#xff0c;脚手架将这些重复性的工作进行了整合&#xff0c;方便开发者使用。也正因如此&#xff0c;导致部分开发者过于依赖脚手架&#xff0c;却不清楚其内部的实现流程&…...

Queuing 表(buffer表)的优化实践 | OceanBase 性能优化实践

案例问题描述 该案例来自一个金融行业客户的问题&#xff1a;他们发现某个应用对一个数据量相对较小的表&#xff08;仅包含数千条记录&#xff09;访问时&#xff0c;频繁遇到性能下降的情况。为解决此问题&#xff0c;客户向我们求助进行分析。我们发现这张表有频繁的批量插…...

./mysqld: error while loading shared libraries: libaio.so.1: cannot open sha

mysql:5.6 使用离线方式安装&#xff1a;rpm -ivh --nodeps mysql* &#xff0c;执行 systemctl start mysqld.service发现启动不了&#xff0c;通过vi /var/log/mysql.log看到如下关键字&#xff1a;libraries: libaio.so.1&#xff0c;之前也是按照网上帖子各种修改都没有解决…...

Qt主线程把数据发给子线程,主线程会阻塞吗

演示&#xff1a; #include <QCoreApplication> #include <QThread> #include <QObject> #include <QDebug>// 子线程类 class Worker : public QObject {Q_OBJECT public slots:void processData(int data) {qDebug() << "Processing dat…...