web前端3D旋转相册(附完整代码)

效果图

当鼠标移动到目标时,外层的图片会张开,外面的图片修改透明度为0.5达到想要的效果。

完整代码

HTML部分

这里用的是绝对路径,一般建议使用相对路径(..代表上一级,.代表当前文件夹)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<link rel="stylesheet" href="rotate.css">
<body><main><div class="big"><div class="img1_1"><img src="D:\云计算\相片\006lmXQBgy1hr8ld3qw2dj30j60j6dv0.jpg" alt=""></div><div class="img2_2"><img src="D:\云计算\相片\eac47466820f6050608fe4e6ed17d47e.jpg" alt=""></div><div class="img3_3"><img src="D:\云计算\相片\18ff5fc7140d2cda24094e1895aaad2dcc969416.jpg" alt=""></div><div class="img4_4"><img src="D:\云计算\相片\32b963d28bc88541372f554334d99211a2810d88.jpg" alt=""></div><div class="img5_5"><img src="D:\云计算\相片\decb0351db3ae71a08caa6af2c658c3393696999.jpg" alt=""></div><div class="img6_6"><img src="D:\云计算\相片\f80113f1efc30b125b31faddcb706696399c2d7b.jpg" alt=""></div><span class="img1"><img src="D:\云计算\相片\006lmXQBgy1hr8ld3qw2dj30j60j6dv0.jpg" alt=""></span><span class="img2"><img src="D:\云计算\相片\eac47466820f6050608fe4e6ed17d47e.jpg" alt=""></span><span class="img3"><img src="D:\云计算\相片\18ff5fc7140d2cda24094e1895aaad2dcc969416.jpg" alt=""></span><span class="img4"><img src="D:\云计算\相片\32b963d28bc88541372f554334d99211a2810d88.jpg" alt=""></span><span class="img5"><img src="D:\云计算\相片\decb0351db3ae71a08caa6af2c658c3393696999.jpg" alt=""></span><span class="img6"><img src="D:\云计算\相片\f80113f1efc30b125b31faddcb706696399c2d7b.jpg" alt=""></span></div></main>
</body>
</html>

css部分

*{box-sizing: border-box;
}
body{margin: 0;padding: 0;background-color: #2f3542;
}
.big span {position: absolute;width: 150px;height: 150px;margin-left: 108px;margin-top: 112px;
}.big div{position: absolute;width: 300px;height: 300px;
}
.big{z-index: 2;height: 350px;width: 350px;margin: 200px auto;transform-style: preserve-3d;animation: roll 9s infinite;
}.big div img{opacity: 0.5;width: 100%;height: 100%;
}
.big span img{width: 100%;height: 100%;
}/* 左右前后上下 */.img3{transform:translateX(-75px) rotateY(90deg);
}
.img4{transform:translateX(75px) rotateY(90deg);
}
.img1{transform: translateZ(75px);
}
.img2{transform:  translateZ(-75px);
}
.img5{transform:translateY(-75px) rotateX(90deg);
}
.img6{transform:translateY(75px) rotateX(90deg);
}.img3_3{transform:translateX(-150px) rotateY(90deg);
}
.img4_4{transform:translateX(150px) rotateY(90deg);
}
.img1_1{transform: translateZ(150px);
}
.img2_2{transform:  translateZ(-150px);
}
.img5_5{transform:translateY(-150px) rotateX(90deg);
}
.img6_6{transform:translateY(150px) rotateX(90deg);
}
@keyframes roll{from {transform: rotateX(0deg) rotateY(0deg);}to{transform: rotateX(360deg) rotateY(360deg);}
} 
.big:hover .img1_1{transform: translateZ(300px);
}
.big:hover .img2_2{transform: translateZ(-300px);
}
.big:hover .img3_3{transform:rotateY(90deg) translateZ(-300px);
}  
.big:hover .img4_4{transform:rotateY(-90deg) translateZ(-300px);
}
.big:hover .img5_5{transform:rotateX(90deg) translateZ(300px);
}
.big:hover .img6_6{transform:rotateX(-90deg) translateZ(300px);
} 

部分代码介绍

在CSS中, translateZ 用于在3D空间中对元素进行变换。
 
1. 功能原理
- 它沿着Z轴(垂直于屏幕的轴)移动元素。当你使用 translateZ 时,会改变元素在3D空间中相对于观察者(用户视角)的深度位置。
- 语法为 translateZ(<length>) ,其中 <length> 通常是像素(px)等长度单位。正值会使元素向屏幕外(靠近观察者)移动,负值会使元素向屏幕内(远离观察者)移动。
2. 应用场景
- 创建3D效果:与 translateX 和 translateY 配合使用,可以将2D元素转换为3D元素,构建出如3D立方体、3D旋转等复杂的3D效果。例如,在构建一个3D立方体时,通过 translateZ 调整每个面在Z轴上的位置,来营造出立方体的立体感。
- 视觉层次:可以用来调整元素的视觉层次。比如,让一个重要的元素看起来像是悬浮在其他元素之上(通过 translateZ 正值),或者像是凹陷在背景之中(通过 translateZ 负值)。

在CSS中, animation 是一个缩写属性,用于设置动画相关的多个属性。它的完整语法如下:
 
 animation: name duration timing - function delay iteration - count direction fill - mode play - state; 
 
各部分取值如下:
 
name
 
- 用于指定要应用的动画名称,这个名称要与 @keyframes 规则定义的动画名称匹配。例如 animation - name: myAnimation; 中的 myAnimation 就是一个自定义的动画名称。
 
duration
 
- 表示动画完成一个周期所需的时间,单位是秒(s)或者毫秒(ms)。比如 animation - duration: 3s; 意味着动画持续3秒完成一个周期。
 
timing - function
 
- 定义动画的速度曲线,即动画在每个时间点的速度变化情况。常见取值如下:
- ease:默认值,动画开始和结束速度较慢,中间速度快,产生平滑的过渡效果。
- linear:动画以恒定的速度进行,从开始到结束速度不变。
- ease - in:动画开始速度慢,然后逐渐加快。
- ease - out:动画开始速度快,然后逐渐减慢。
- ease - in - out:结合了ease - in和ease - out的特点,动画开始和结束速度慢,中间速度快。
- 还有一些像 cubic - bezier() 这样的函数可以自定义速度曲线。
 
delay
 
- 用于设定动画开始之前的延迟时间,单位同样是秒(s)或者毫秒(ms)。例如 animation - delay: 1s; 表示动画会在1秒后开始。
 
iteration - count
 
- 指动画的播放次数。可以是具体的数字,如 animation - iteration - count: 3; 表示动画播放3次;也可以是 infinite ,代表动画无限循环播放。
 
direction
 
- 规定动画是否反向播放,主要取值有:
- normal:默认值,动画按正常顺序播放。
- reverse:动画反向播放。
- alternate:动画先正向播放,然后反向播放,如此反复。
- alternate - reverse:动画先反向播放,然后正向播放,如此反复。
 
fill - mode
 
- 用于定义在动画开始之前和结束之后,元素如何应用样式。常见取值如下:
- none:默认值,动画结束后元素回到初始状态。
- forwards:动画结束后,元素保持在动画结束时的状态。
- backwards:在动画延迟期间,元素应用动画第一帧的样式。
- both:结合了forwards和backwards的特点。
 
play - state
 
- 用来控制动画的播放状态,取值为:
- running:动画正常播放。
- paused:动画暂停播放。

在CSS中, transform - style 属性主要用于3D变换场景。
 
它有两个主要的值: flat 和 preserve - 3d 。
 
flat(默认值)
 
- 当设置为 flat 时,所有子元素都被视为在2D平面上进行变换,即使父元素应用了3D变换。这意味着子元素不会有3D空间的效果,就像它们只是在一个平面上被简单地放置和移动一样。
 
preserve - 3d
 
- 若设置为 preserve - 3d ,则允许父元素的子元素在3D空间中进行变换。这在构建3D场景时非常有用,例如3D立方体或其他复杂的3D物体。
- 例如,你想构建一个3D立方体,需要将父元素的 transform - style 设置为 preserve - 3d ,这样立方体的六个面(作为子元素)就可以在3D空间中进行定位和旋转等操作,从而呈现出3D的视觉效果。

在HTML(确切地说是CSS)中, box - sizing 是一个非常重要的属性。
 
它用于定义如何计算元素的总宽度和总高度。有两个主要的值:
 
content - box(默认值)
 
- 这种模式下,元素的宽度和高度( width 和 height 属性)只计算内容部分。
- 例如,对于一个设置了 width: 100px 、 height: 100px 的 div 元素,这里的100px只是内容区域的宽度和高度。如果该元素有边框( border )和内边距( padding ),这些会额外增加元素的实际尺寸。所以整个元素的实际宽度是 内容宽度 + 左右边框宽度 + 左右内边距宽度 ,实际高度是 内容高度 + 上下边框宽度 + 上下内边距宽度 。
 
border - box
 
- 此模式下,元素的 width 和 height 属性计算的是内容、边框和内边距的总和。
- 例如,同样是 width: 100px 、 height: 100px 的 div 元素,这100px是包括了边框和内边距后的总宽度和总高度。不管边框和内边距怎么设置,内容区域的大小会自动调整,以适应给定的总宽度和总高度。

在CSS中,设置图片透明度主要有以下两种方式:
 
使用 opacity 属性

 
- 语法及效果: opacity 属性用于设置元素(包括图片)的透明度,取值范围是从 0 (完全透明)到 1 (完全不透明)。例如, opacity:0.5; 会使图片呈现半透明状态。
- 示例代码:
 
css   
img {
    opacity: 0.5;
}
 
 
- 对元素内部内容的影响:当为图片设置 opacity 属性后,图片及其内部所有内容(如可能存在的文本等)都会一起变透明。
 
使用 rgba() 颜色值
 
- 语法及效果:在设置图片背景或者对包含图片的元素背景进行设置时,可以使用 rgba() 颜色值。其中, rgba() 中的 a 代表透明度,取值范围是从 0 (完全透明)到 1 (完全不透明)。
- 示例代码:
假设图片是放在一个 div 元素中,想让这个 div 背景透明从而间接影响图片的视觉效果,可以这样设置:
 
css   
div {
    background - color: rgba(255,255,255,0.5); 
    /* 白色半透明背景 */
}
 
 
- 应用场景区别:如果只想让图片所在的背景透明,而不影响图片本身的清晰度和可见度,使用 rgba() 颜色值设置背景透明度是更好的选择;如果是想让图片整体包括其内容都变透明,就可以使用 opacity 属性。

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

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

相关文章

新老项目不同node版本,使用nvm控制node版本切换(mac、window)

window系统电脑的链接&#xff1a;https://blog.csdn.net/qq_40269801/article/details/136450961 以下是mac版本的操作方式&#xff1a; 1、打开终端 克隆 NVM 仓库&#xff1a; git clone https://github.com/nvm-sh/nvm.git ~/.nvm 2、运行安装脚本&#xff1a; cd ~/.n…

2024双11买什么东西比较好?2024年双十一必买清单大全!

2024年双十一到底哪些东西值得入手&#xff1f;今天总结了超全双十一值得入手的单品汇总&#xff01;随着一年一度的双十一购物狂欢节临近&#xff0c;各大电商平台纷纷推出各种促销活动&#xff0c;吸引了无数消费者的关注。在这场全民参与的购物盛宴中&#xff0c;如何在众多…

vi —— 终端中的编辑器

目标 vi 简介打开和新建文件三种工作模式常用命令分屏命令常用命令速查图 01. vi 简介 1.1 学习 vi 的目的 在工作中&#xff0c;要对 服务器 上的文件进行 简单 的修改&#xff0c;可以使用 ssh 远程登录到服务器上&#xff0c;并且使用 vi 进行快速的编辑即可常见需要修改…

安装fpm,解决*.deb=> *.rpm

要从生成 .deb 包转换为 .rpm 包&#xff0c;可以按照以下步骤修改打包脚本 1. 使用 fpm 工具 fpm 是一个强大的跨平台打包工具&#xff0c;可以将 .deb 包重新打包成 .rpm&#xff0c;也可以直接从源文件打包成 .rpm。 安装 fpm sudo apt-get install ruby-dev sudo gem in…

web文件包含include

php伪协议 在 PHP 中&#xff0c;伪协议&#xff08;Pseudo Protocols&#xff09; 也被称为 流包装器&#xff0c;这些伪协议以 php:// 开头&#xff0c;后面跟着一些参数&#xff0c;用于指定 要执行的操作 或 需要访问的资源。 伪协议表明这些协议并不是一个 真实的外部协议…

QChart中柱形图的简单使用并实现【Qt】

预备工作 如果qt没下载去下载一个&#xff0c;下载太慢了可以试试它[点击跳转]  (https://blog.csdn.net/qq_19319481/article/details/131655379)。   如果已经下载了qt发现自己的组件中没有QCharts&#xff0c;可以去试试它点击跳转。 都搞定了以后在pro文件里面添加QT …

视频点播系统扩展示例

更多的前端页面&#xff08;如视频详情页、用户注册页等&#xff09;。更复杂的业务逻辑&#xff08;如视频评论、搜索功能等&#xff09;。安全性和权限管理&#xff08;如用户角色管理、权限控制等&#xff09;。其他技术细节&#xff08;如文件上传、分页查询等&#xff09;…

KVM虚拟机迁移:无缝迁徙,重塑云上未来

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#…

继续开始更新AI学习笔记——RAG技术

RAG技术&#xff1a; 1&#xff0c;读取文章&#xff0c;获得内容 2&#xff0c;分段成为chunks 3&#xff0c;向量化&#xff0c;形成向量数据库 4&#xff0c;用户问题&#xff0c;同样向量化 5&#xff0c;在向量库内部进行检索 6&#xff0c;检索获得有效文档&#x…

使用Netty实现一个简单的聊天服务器

✅作者简介&#xff1a;热爱Java后端开发的一名学习者&#xff0c;大家可以跟我一起讨论各种问题喔。 &#x1f34e;个人主页&#xff1a;Hhzzy99 &#x1f34a;个人信条&#xff1a;坚持就是胜利&#xff01; &#x1f49e;当前专栏&#xff1a;Netty &#x1f96d;本文内容&a…

链栈的基本操作实现

链栈的结构体定义 /*定义*/ typedef struct stacklnode{char data;struct stacklnode *next; }stacklnode,*linkstack; 初始化 /*初始化*/ void f1(linkstack *q){*qNULL; } 入栈 /*入栈*/ void f2(linkstack *q,char e ){linkstack p(linkstack)malloc(sizeof(stacklno…

c语言-常量和变量

文章目录 一、常量是什么&#xff1f;&#xff08;1&#xff09;整型常量&#xff1a;&#xff08;2&#xff09;实型常量&#xff1a;&#xff08;3&#xff09;字符常量&#xff1a;&#xff08;4&#xff09;字符串常量&#xff08;5&#xff09;地址常量 二、define 和 con…

UI设计软件全景:13款工具助力创意实现

选择恰当的UI设计工具对于创建美观且用户体验良好的应用程序界面至关重要。不同的APP功能可能需要不同的界面设计软件&#xff0c;但并非所有工具都需要精通&#xff0c;熟练掌握几个常用的就足够了。以下是13款APP界面设计软件&#xff0c;它们能够为你的团队提供绘制APP界面所…

mysql 8.0.39 Caused by: java.sql.SQLException: Illegal mix of collations 异常解决

java服务可以正常启动&#xff0c;页面发现查询报错Illegal mix of collations 报错信息&#xff1a; ### Cause: java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,COERCIBLE) and (utf8mb4_0900_ai_ci,COERCIBLE) for operation ; uncategorized SQ…

C++友元类的分文件编写

在学习C的关于友元类的知识时&#xff0c;网课例程中是在main函数文件中编写实现&#xff0c;但是我们知道&#xff0c;一般情况下&#xff0c;类以及类的成员函数实现都是在不同文件中实现的&#xff0c;因此&#xff0c;我们会自然的想到友元类是如何在不同文件下编写实现的&…

vue2与vue3生命周期差异整理

1、vue3 与 vue2 生命周期对比 生命周期整体分为四个阶段&#xff0c;分别是&#xff1a;创建、挂载、更新、销毁&#xff0c;每个阶段都有两个钩子&#xff0c;一前一后。 生命周期Vue 2Vue 3说明创建阶段beforeCreatesetup开始创建组件之前,实例被创建&#xff0c;还没有初…

c语言之在结构体里面定义函数指针

还是在看redis3.0源码的时候&#xff0c;遇到如下问题&#xff1a; 这个时候我们回到list这个结构体的设计上面 首先我们必须要注意的是函数名字就可以看成指针地址。 所以下面我们写一个简单的实例看一下具体的用法&#xff1a; #include <stdio.h> #include <stdl…

代码随想录一刷——1.两数之和

当我们需要查询一个元素是否出现过&#xff0c;或者一个元素是否在集合里的时候&#xff0c;就要第一时间想到哈希法。 C&#xff1a; unordered_map class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int…

EDA二维码生成工具 V1.2

EDA二维码生成工具用于在原理图、PCB环境中生成矢量二维码&#xff0c;具有生成速度快、生成效率高的特点&#xff0c;支持中文字符、英文字符生成。 此工具可直接输出在原理图、原理图库文档、PCB、PCB库文档中&#xff0c;可同时输出多种格式&#xff0c;可在Altium …

鸿蒙生态崛起带来的机遇与挑战

目录 1.概述 2.生态崛起 2.1.鸿蒙生态的认知和了解 2.2.鸿蒙生态的崛起分析 2.3.开发者的机遇 2.4.华为开发者大会 3.鸿蒙生态开发的挑战 3.1.开发工具 3.2.技术难度 3.3.生态竞争 3.4.抓住机遇、应对挑战 4.鸿蒙生态未来发展趋势 4.1.发展趋势 4.2.18N 4.3.开发…