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

Css动画:旋转相册动画效果实现

​🌈个人主页:前端青山
🔥系列专栏:Css篇
🔖人终将被年少不可得之物困其一生

依旧青山,本期给大家带来Css篇专栏内容:Css动画:旋转相册动画效果实现

前言

随着Web技术的发展,网页不再局限于静态展示,越来越多的动态效果被应用到网页设计中,以提升用户体验。本文将介绍如何利用HTML、CSS实现一个旋转相册动画效果。通过这个实例,读者可以学习到CSS3的3D变换、动画以及响应式设计的基本技巧。

实现思路

1. HTML结构

首先,我们需要构建基本的HTML结构。这里我们使用一个<div>元素作为相册容器,并在其内部放置多个<img>元素作为相册中的图片。每个图片都设置为绝对定位,以便后续通过CSS3进行3D变换。

<div class="huabu"><img src="img/1.jpg" alt=""><img src="img/1.jpg" alt=""><img src="img/1.jpg" alt=""><img src="img/1.jpg" alt=""><img src="img/1.jpg" alt=""><img src="img/1.jpg" alt=""><img src="img/1.jpg" alt=""><img src="img/1.jpg" alt=""><img src="img/1.jpg" alt=""><img src="img/1.jpg" alt="">
</div>

2. CSS样式

2.1 基本样式

首先,设置页面的基本样式,包括背景图片、宽度和高度等。这里使用了背景图片,并设置了不重复显示且自适应屏幕大小。

body {width: 100%;height: 100%;background: url(img/背景.jpg);background-repeat: no-repeat;background-size: inherit;
}
2.2 相册容器样式

相册容器.huabu设置了宽度、高度、居中对齐、3D变换样式以及动画效果。其中,transform-style: preserve-3d;确保子元素的3D变换效果得以保留。

.huabu {width: 80%;height: 700px;margin: 0 auto;transform-style: preserve-3d;position: relative;animation: lixiaofang 5s infinite alternate;
}
2.3 图片样式

每张图片都设置了固定尺寸,并使用绝对定位使其在容器内居中显示。同时,为图片添加了悬停效果,当鼠标悬停在图片上时,图片会放大。

.huabu > img {width: 200px;height: 350px;position: absolute;right: 0;left: 0;top: 0;bottom: 0;margin: auto;
}
​
.huabu > img:hover {width: 550px;
}

2.4 动画效果

定义了一个名为lixiaofang的关键帧动画,使相册容器在5秒内从一个角度旋转到另一个角度,然后返回原位,无限循环。

@keyframes lixiaofang {0% {transform: rotateX(20deg) rotateY(30deg);}50% {transform: rotateX(-30deg) rotateY(-70deg);}100% {transform: rotateX(20deg) rotateY(30deg);}
}
2.5 3D变换

为了让图片在3D空间中均匀分布,我们使用了rotateYtranslateZ属性。每个图片根据其索引值进行不同的旋转和平移,形成一个环形排列。

.huabu > img:nth-child(1) {transform: translateZ(400px);
}
.huabu > img:nth-child(2) {transform: rotateY(36deg) translateZ(400px);
}
.huabu > img:nth-child(3) {transform: rotateY(72deg) translateZ(400px);
}
.huabu > img:nth-child(4) {transform: rotateY(108deg) translateZ(400px);
}
.huabu > img:nth-child(5) {transform: rotateY(144deg) translateZ(400px);
}
.huabu > img:nth-child(6) {transform: rotateY(180deg) translateZ(400px);
}
.huabu > img:nth-child(7) {transform: rotateY(216deg) translateZ(400px);
}
.huabu > img:nth-child(8) {transform: rotateY(252deg) translateZ(400px);
}
.huabu > img:nth-child(9) {transform: rotateY(288deg) translateZ(400px);
}
.huabu > img:nth-child(10) {transform: rotateY(324deg) translateZ(400px);
}

3. 悬停效果

为了增强交互体验,当鼠标悬停在相册容器上时,动画会暂停,方便用户查看当前图片。

.huabu:hover {animation-play-state: paused;
}

代码解析

HTML部分

  • <div class="huabu">: 相册容器,包含所有图片。

  • <img src="img/1.jpg" alt="">: 每个图片元素,使用相同的图片路径,实际应用中可以根据需要替换为不同的图片。

CSS部分

  • body: 设置页面的基本样式,包括背景图片、宽度和高度。

  • .huabu: 相册容器的样式,包括宽度、高度、居中对齐、3D变换样式以及动画效果。

  • .huabu > img: 图片的基本样式,包括尺寸、绝对定位以及悬停效果。

  • @keyframes lixiaofang: 定义动画的关键帧,使相册容器在5秒内从一个角度旋转到另一个角度,然后返回原位,无限循环。

  • .huabu > img:nth-child(n): 使用nth-child选择器为每个图片设置不同的3D变换,形成环形排列。

  • .huabu:hover: 当鼠标悬停在相册容器上时,动画暂停。

结尾

通过上述步骤,我们成功实现了一个旋转相册动画效果。这个效果不仅美观,还能增强用户的互动体验。希望本文能帮助读者更好地理解和应用CSS3的3D变换和动画技术,为网页设计带来更多创意和可能性。

如果你有任何问题或建议,欢迎在评论区留言交流。感谢阅读!

相关文章:

Css动画:旋转相册动画效果实现

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Css篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Css篇专栏内容:Css动画:旋转相册动画效果实现 前言 随着Web技术的发展&#xff0c;网页不再局限于静态展示&#…...

Unity 基于Collider 组件在3D 物体表面放置3D 物体

实现 从鼠标点击的屏幕位置发送射线&#xff0c;以射线监测点击到的物体&#xff0c;根据点击物体的法线向量调整放置物体的位置及朝向。 Ray ray Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit, 100)) {obj.transform.…...

Hbase整合Mapreduce案例1 hdfs数据上传至hbase中——wordcount

目录 整合结构准备java API 编写pom.xmlMain.javaMap.javaReduce 运行 整合结构 准备 上传hdfs data.txt数据 data.txt I am wunaiieq QAQ 123456 Who I am In todays interconnected world the role of technology cannot be overstated It has revolutionized the way we …...

PyQt 中的无限循环后台任务

在 PyQt 中实现一个后台无限循环任务&#xff0c;需要确保不会阻塞主线程&#xff0c;否则会导致 GUI 无响应。常用的方法是利用 线程&#xff08;QThread&#xff09; 或 任务&#xff08;QRunnable 和 QThreadPool&#xff09; 来运行后台任务。以下是一些实现方式和关键点&a…...

5G CPE核心器件-基带处理器(三)

5G CPE 核心器件 -5G基带芯片 基带芯片简介基带芯片组成与结构技术特点与发展趋势5G基带芯片是5G CPE中最核心的组件,负责接入5G网络,并进行上下行数据业务传输。移动通信从1G发展到5G,终端形态产生了极大的变化,在集成度、功耗、性能等方面都取得巨大的提升。 基带芯片简…...

鸿蒙next版开发:拍照实现方案(ArkTS)

文章目录 拍照功能开发步骤1. 导入相关接口2. 创建会话3. 配置会话4. 触发拍照5. 监听拍照输出流状态 结语 在HarmonyOS 5.0中&#xff0c;ArkTS提供了一套完整的API来管理相机功能&#xff0c;特别是拍照功能。本文将详细介绍如何在ArkTS中实现拍照功能&#xff0c;并提供代码…...

C++面试突破---C/C++基础

1.C特点 1. C在C语言基础上引入了面对对象的机制&#xff0c;同时也兼容C语言。 2. C有三大特性&#xff08;1&#xff09;封装。&#xff08;2&#xff09;继承。&#xff08;3&#xff09;多态&#xff1b; 3. C语言编写出的程序结构清晰、易于扩充&#xff0c;程序可读性好。…...

项目搭建+修改

一 : 在列表成功回调函数,追加数据中,添加修改的按钮 for (let x of res) {//追加数据$("#table").append(<tr><td><input type"checkbox" class"ck" value"\${x.uid}"></td><td>\${x.uid}</td>…...

每日算法一练:剑指offer——树篇(4)

1.计算二叉树的深度 某公司架构以二叉树形式记录&#xff0c;请返回该公司的层级数。 示例 1&#xff1a; 输入&#xff1a;root [1, 2, 2, 3, null, null, 5, 4, null, null, 4] 输出: 4 解释: 上面示例中的二叉树的最大深度是 4&#xff0c;沿着路径 1 -> 2 -> 3 -&…...

Nginx静态资源配置

基本配置原则 明确资源目录&#xff1a;为不同类型的静态资源指定不同的路径&#xff0c;这样可以避免路径冲突&#xff0c;并且便于管理。正确设置文件权限&#xff1a;确保 Nginx 具有读取静态资源的权限。缓存优化&#xff1a;为静态资源设置缓存头&#xff08;如 expires&…...

困扰解决:mfc140u.dll丢失的解决方法,多种有效解决方法全解析

当电脑提示“mfc140u.dll丢失”时&#xff0c;这可能会导致某些程序无法正常运行&#xff0c;给用户带来不便。不过&#xff0c;有多种方法可以尝试解决这个问题。这篇文章将以“mfc140u.dll丢失的解决方法”为主题&#xff0c;教大家有效解决mfc140u.dll丢失。 判断是否是“mf…...

D3.js 初探

文章目录 D3.js 简单介绍选择集与方法数据绑定方法选择集添加DOM元素以及删除元素理解update enter 以及 exit关于比例尺layout 布局force layout 坐标轴元素添加动态效果demo1: 绘制简单柱状图 #D3.js 初探 最近在做一个Data Visualization 的项目&#xff0c;由于对最终呈现的…...

linux常用指令 | 适合初学者

linux常用指令 1.ls: 列出当前&#xff0c;目录中的文件和子目录 ls 2.pwd: 显示当前工作目录的路径 pwd3.cd切换工作目录 cd /path/to/director4.mkdir:创建新目录 mkdir directory_name5.rmdir:删除空目录 rmdir directory_name6.rm: 删除文件或目录 rm file_name r…...

用 NotePad++ 运行 Java 程序

安装包 网盘链接 下载得到的安装包: 安装步骤 双击安装包开始安装. 安装完成: 配置编码 用 NotePad 写 Java 程序时, 需要设置编码. 在 设置, 首选项, 新建 中进行设置, 可以对每一个新建的文件起作用. 之前写的文件不起作用. 在文件名处右键, 可以快速打开 CMD 窗口, 且路…...

在 Linux 环境下搭建 OpenLab Web 网站并实现 HTTPS 和访问控制

实验要求 综合练习&#xff1a;请给openlab搭建web网站 ​ 网站需求&#xff1a; ​ 1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! ​ 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c…...

微信小程序wx.showShareMenu配置全局分享功能

在app.js文件中配置如下即可&#xff1a; onLaunch() {//开启分享功能this.overShare()},/*** 开启朋友圈分享功能* 监听路由切换/自动执行*/overShare() {wx.onAppRoute((res) > {// console.log(route, res)let pages getCurrentPages()let view pages[pages.length - …...

机器学习面试八股总结

下面是本人在面试中整理的资料和文字&#xff0c;主要针对机器学习面试八股做浅显的总结&#xff0c;大部分来源于ChatGPT&#xff0c;中间有借鉴一些博主的优质文章&#xff0c;已经在各文中指出原文。有任何问题&#xff0c;欢迎随时不吝指正。 文章系列图像使用动漫 《星游…...

南京邮电大学《2024年812自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《南京邮电大学812自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题...

大数据新视界 -- Hive 数据湖集成与数据治理(下)(26 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

Android EventBus最全面试题及参考答案

目录 什么是 EventBus&#xff1f; 请解释 EventBus 是什么&#xff0c;以及它的工作原理。 简述 EventBus 的工作原理。 EventBus 的主要组成部分有哪些&#xff1f; EventBus 是如何实现发布订阅模式的&#xff1f; EventBus 与观察者模式有什么区别&#xff1f; Even…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...

麒麟系统使用-进行.NET开发

文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的&#xff0c;如果需要进行.NET开发&#xff0c;则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET&#xff0c;所以要进…...

ubuntu清理垃圾

windows和ubuntu 双系统&#xff0c;ubuntu 150GB&#xff0c;开发用&#xff0c;基本不装太多软件。但是磁盘基本用完。 1、查看home目录 sudo du -h -d 1 $HOME | grep -v K 上面的命令查看$HOME一级目录大小&#xff0c;发现 .cache 有26GB&#xff0c;.local 有几个GB&am…...