前端小练习:案例4.3D图片旋转展示(旋转木马)

news2024/10/7 16:20:35

一.效果预览图

二.实现思路 

1.实现旋转木马效果的第一步是先准备好自己需要的图片,创建html文件

2.旋转木马的实现,关键点在3D形变和关键帧动画。

3.步骤,定义一个div使其居中,,把图片放进div盒子里,因为图片需要3D形变,所以要给div设置3D环境,给图片设置定位或者使用弹性布局使其在相对的位置,要控制图片一定要在div中,否则关键帧动画旋转的时候整体会是倾斜的,根据图片的数量,合理控制图像的旋转角度,(通常使用 360度/图片数量=需要旋转的角度),最后设置z轴的移动距离和关键帧动画。

三.相关代码 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            perspective: 500000px;
            transform-style: preserve-3d;
        }
        .wp{
            width: 800px;
            height: 400px;
            perspective: 500000px;
            transform-style: preserve-3d;
            position: relative;
            margin: 200px auto;
            animation: xz 10s infinite linear;
        }
        img{
            width: 180px;
            height: 300px;
            position: absolute;
            left: 310PX;
        }
        .wp img:nth-child(1){
            transform: rotateY(0) translateZ(400px);
        }
        .wp img:nth-child(2){
            transform: rotateY(-30deg) translateZ(400px);
        }
        .wp img:nth-child(3){
            transform: rotateY(-60deg) translateZ(400px);
        }
        .wp img:nth-child(4){
            transform: rotateY(-90deg) translateZ(400px);
        }
        .wp img:nth-child(5){
            transform: rotateY(-120deg) translateZ(400px);
        }
        .wp img:nth-child(6){
            transform: rotateY(-150deg) translateZ(400px);
        }
        .wp img:nth-child(7){
            transform: rotateY(-180deg) translateZ(400px);
        }
        .wp img:nth-child(8){
            transform: rotateY(-210deg) translateZ(400px);
        }
        .wp img:nth-child(9){
            transform: rotateY(-240deg) translateZ(400px);
        }
        .wp img:nth-child(10){
            transform: rotateY(-270deg) translateZ(400px);
        }
        .wp img:nth-child(11){
            transform: rotateY(-300deg) translateZ(400px);
        }
        .wp img:nth-child(12){
            transform: rotateY(-330deg) translateZ(400px);
        }
        @keyframes xz{
            0%{
                transform: rotateX(-10deg);
            }
            100%{
             transform: rotateX(-10deg) rotateY(360deg);
            }
        }
    </style>
</head>
<body>
    <div class="wp">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
         <img src="./image/wallhaven-pkgkkp.png" alt="">
    </div>
</body>
</html>

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

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

相关文章

shell脚本自动打包部署

1、安装git 2、使用Git克隆代码 3、安装Maven &#xff08;1&#xff09; tar -zxvf ** 解压文件 &#xff08;2&#xff09;修改配置 &#xff08;3&#xff09;source /etc/profile 重新加载一下文件 &#xff08;4&#xff09;mvn -version 查看版本号 已经安装成…

Sencha Ext.NET Crack 快速应用程序的正确工具集

Sencha Ext.NET Crack 快速应用程序的正确工具集 Sencha Ext.NET是一个高级的ASP.NET核心组件框架&#xff0c;它包含了强大的跨浏览器Sencha Ext JS库。通过140多个预构建和专业测试的UI组件实现企业级性能和生产效率。Sencha Ext.NET使用尖端的Web技术创建功能强大的Web应用程…

Doris(四)-Rollup 使用

1&#xff0c;基本语法 1.1 新增 alter table user_landing_record_newadd rollup succ_login_count_index(user_id,day_succ_login_count); 1.2删除 alter table user_landing_record_newdrop rollup succ_login_count_index; 1.3其他操作&#xff0c;参考官网 传送门 …

vi 编辑器入门到高级

vi 编辑器的初级用法vi 编辑器的工作模式1. 命令模式2. 文本输入模式3. 状态行vi 工作模式切换存储缓冲区 vi 编辑器命令1. 启动 vi2. 文本输入3. 退出 vi4. 命令模式下的 光标移动5. 命令模式下的 文本修改6. 从 命令模式 进入 文本输入模式7. 搜索字符串8. vi 在线帮助文档 v…

2023下半年软考初级网络管理员报名入口-报名流程-备考方法

软考初级网络管理员2023下半年考试时间&#xff1a; 2023年下半年软考初级网络管理员的考试时间为11月4日、5日。考试时间在全国各地一致&#xff0c;建议考生提前备考。共分两科&#xff0c;第一科基础知识考试具体时间为9:00到11:30&#xff1b;第二科应用技术考试具体时间为…

Linux6.32 Kubernetes kubeadm部署

文章目录 计算机系统5G云计算第三章 LINUX Kubernetes kubeadm部署一、kubeadm搭建 Kubernetes v1.20&#xff08;一主两从&#xff09;1.环境准备2.所有节点安装docker3.所有节点安装kubeadm&#xff0c;kubelet和kubectl4.部署K8S集群 二、kubeadm搭建 Kubernetes v1.20&…

容器——2.Collection 子接口之 List

文章目录 2.1. Arraylist 和 Vector 的区别?2.2. Arraylist 与 LinkedList 区别?2.2.1. 补充内容:双向链表和双向循环链表2.2.2. 补充内容:RandomAccess 接口 2.3 ArrayList 的扩容机制 2.1. Arraylist 和 Vector 的区别? ArrayList 是 List 的主要实现类&#xff0c;底层使…

[CrackMe]Cabeca.exe的逆向及注册机编写

1. 逆向分析过程 又是Delphi的程序, 有了上次的经验这次顺利了很多。差不多花了70分钟的样子, 把这个东西逆出来了。 先运行一下, 看看基本的功能, 这个作者一直用dumb或者idiot来称呼破解者(无奈), 着实有点皮 填充不完全会出现如下对话框: 如果serial不对, 会出现如下对话…

提速Rust编译器!

Nethercote是一位研究Rust编译器的软件工程师。最近&#xff0c;他正在探索如何提升Rust编译器的性能&#xff0c;在他的博客文章中介绍了Rust编译器是如何将代码分割成代码生成单元&#xff08;CGU&#xff09;的以及rustc的性能加速。 他解释了不同数量和大小的CGU之间的权衡…

conda 环境 numpy 安装报错需要 Microsoft Visual C++ 14.0

到公司装深度学校环境。项目较旧&#xff0c;安装依赖&#xff0c;一堆报错&#xff08;基于 conda 环境&#xff09;&#xff1a; numpy 安装报需要 C 14.0 No module named numpy.distutils._msvccompiler in numpy.distutils; trying from distutilserror: Microsoft Visu…

高级web前端开发工程师工作的岗位职责(合集)

高级web前端开发工程师工作的岗位职责1 职责&#xff1a; 1、负责产品web端界面设计与用户体验&#xff0c;包括界面操作、用户交互设计; 2、负责基于Html5的web网页前端开发&#xff0c;要求适配主流浏览器; 3、与后端开发工程师合作&#xff0c;高效完成产品模型的展现及交…

MySql009——检索数据:过滤数据(WHERE子句结合AND、OR、IN、NOT操作符使用)

前提&#xff1a;使用《MySql006——检索数据&#xff1a;基础select语句》中创建的products表 一、AND操作符 通过AND操作符可以拼接多个过滤条件&#xff0c;表示且 SELECT vend_id, prod_name, prod_price FROMstudy.products WHEREvend_id 1001 AND prod_price > 3;…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK获取相机当前数据吞吐量(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK里函数来获取相机当前数据吞吐量&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的数据吞吐量的技术背景CameraExplorer如何查看相机吞吐量信息在BGAPI SDK里通过函数获取相机接口吞吐量 Baumer工业相机通过BGAPI SDK获取…

通过WiFi将ESP32与ROS集成

通过WiFi将ESP32与ROS集成 这篇博客介绍如何使用WiFi将ESP32开发板连接到机器人操作系统&#xff08;ROS&#xff09;。 该项目Github: https://github.com/Xiangyu-Fu/ESP32_ROS_wifi先决条件 在我们开始之前&#xff0c;请确保有以下开发环境&#xff1a; Ubuntu 20.04R…

Codejock Skin Framework Visual C++ MFC Crack

Codejock Skin Framework Visual C MFC Crack Codejock Visual CMFC皮肤框架为Windows开发人员提供了一种高度复杂的应用程序皮肤框架技术&#xff0c;该技术是在考虑Windows主题(视觉样式)的情况下开发的。只需几行代码就可以实现一个完全主题化的应用程序。 功能概述 Codejoc…

c++之STL详解

c之STL详解 泛型编程什么是STLSTL发展STL组件容器类型成员适配器STL迭代器STL算法顺序容器向量vector双端队列双端队列实现列表listc关联容器cmapmultimapsetmultiset迭代器函数对象集成函数对象自定义函数对象标准c库中算法STL算法头文件标准函数泛型算法例子自定函数作为算法…

在Linux中安装MySQL

在Linux中安装MySQL 检测当前系统中是否安装MySQL数据库 命令作用rpm -qa查询当前系统中安装的所有软件rpm -qa|grep mysql查询当前系统中安装的名称带mysql的软件rpm -qa | grep mariadb查询当前系统中安装的名称带mariadb的软件 RPM ( Red-Hat Package Manager )RPM软件包管理…

RCS-YOLO快速高精度的用于脑肿瘤检测的目标检测模型学习实践

最近看到了一篇有意思的论文&#xff0c;讲的是开发应用于医疗领域内的肿瘤检测的快速高精度的目标检测模型&#xff0c;论文地址在这里&#xff0c;如下所示&#xff1a; 凭借速度和准确性之间的良好平衡&#xff0c;尖端的YOLO框架已成为最有效的算法之一用于对象检测。然而&…

snmpget 和walk命令

要加.1&#xff0c;才能获取第一行 walk命令&#xff1a;

Python自动化测试框架中如何实现数据参数化?

1.数据参数化介绍 只要你是负责编写自动化测试脚本的&#xff0c;数据参数化这个思想你就肯定会用 &#xff0c;数据参数化的工具你肯定的懂一些 &#xff0c;因为它能大大的提高我们自动化脚本编写效率 。 1.1什么是数据参数化 所谓的数据参数化 &#xff0c;是指所执行的测…