3D 旋转木马

在工作中我们常用到3D装换和3D位移

主要知识点

  • 3D位移:transale3d(x,y,z)
  • 3D旋转:rotate3d(x,y,z)
  • 透视:perspective
  • 3D呈现 transfrom-style

1、 transale3d

  • translform:
    • translform:translateX(100px):仅仅是在x轴上移动
    • translform:translateY(100px):仅仅是在Y轴上移动
    • translform:translateZ(100px):仅仅是在Z轴上移动(注意:translateZ一般用px单位)
    • transform:translate3d(x,y,z):其中x、y、z分别指要移动的轴的方向的距离
    • 语法:transform: translateX(100px) translateY(100px) translateZ(100px) ; 可以简写成 translform: translate3d(100px,100px,100px)

注意 transform:translateZ(100px) 需要借助透视才能看出效果。

设置转换中心点 transform-origin

transform-origin : left bottom; // 可以加方位名词
transform-origin :50% 50%; // 默认的
transform-origin :50px 50px;

透视 perspective

在2D平面产生近大远小视觉立体,但是只是效果二维的。如果想要在网页产生3D效果需要透视(理解成3D物体投影在2D平面内),模拟人类的视觉位置,可认为安排一只眼睛去看。透视我们也称为视距:视距就是人的眼睛到屏幕的距离距离视觉点越近的在电脑平面成像越大,越远成像越小,透视的单位是像素

透视写在被观察元素的父盒子上面的
d:就是视距,视距就是一个距离人的眼睛到屏幕的距离
z:就是z轴,物体距离屏幕的距离,轴越大(正值)我们看到的物体就越大

<style>div{width: 100px;height: 100px;background-color: aqua;transform: translate3d(500px,100px,100px);}body{perspective: 200px;}
</style>
<body><div>   </div>
</body>

3D旋转 rotate3d

3D旋转指可以让元素在三维平面内沿着x轴,y轴,轴或者自定义轴进行转
语法

  • transform:rotateX(45deg): 沿着x轴正方向旋转45度
  • transform:rotateY(45deg):沿着y轴正方向旋转45deg
  • transform:rotateZ(45deg):沿着Z轴正方向旋转45deg
  • transform:rotate3d(xy,z,deg):沿着自定义轴旋转deg为角度(了解即可)
<style>img {dispaly:block;margin:100px auto;transition: all 1s;}img:hover {// transform:rotateX(180deg)  ==> transform:rotate3d(1,0,0, 180deg)//  transform:rotateY(180deg) ==>  transform:rotate3d(0,1,0, 180deg)// transform:rotateZ(180deg)  ==>  transform:rotate3d(0,0,1, 180deg)transform:rotate3d(1,1,0, 80deg) // 沿着对角线旋转80度}body{perspective: 200px;}
</style>
<body><img src="../i.jpg" alt="" />
</body>

transform-style

  • 控制子元素是否开启三维立体环境。
  • transform-style:flat子元素不开启3d立体空间(默认的)
  • transform-style:preserve-3d;子元素开启立体空间
  • 代码写给父级,但是影响的是子盒子 这个属性很重要,后面必用

案例

两面盒子

在这里插入图片描述

<!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>
<style>body{perspective: 350px;}.box{position: relative;width: 300px;height: 300px;margin: 100px auto;transition: all .6s;/* 让背面盒子保留立体空间 */transform-style: preserve-3d;transform-style: preserve-3d;}.box:hover{transform: rotateY(180deg);}.front,.back{position: absolute;top: 0;left: 0;width: 100%;height: 100%;border-radius: 50%;font-size: 30px;color: #fff;text-align: center;line-height: 300px;}.front{background-color: coral;}.back{background-color: aqua;transform: rotateY(180deg) translateZ(25px);  }
</style>
<body><div class="box"><div class="front">前面的盒子</div><div class="back">后面的盒子</div></div>
</body>
</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>
<style>body{perspective: 1000px;}section{width: 300px;height: 200px;margin: 150px auto;transform-style: preserve-3d;/* 添加动画效果 */animation: rotate 10s linear infinite;background: url("https://img2.baidu.com/it/u=611871399,1204008993&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500") no-repeat;background-size: contain;}section:hover{/* 鼠标放入停止动画 */animation-play-state: paused;}@keyframes rotate {0%{transform: rotateY(0);}100%{transform: rotateY(360deg);}}section div{position: absolute;left: 0;top: 0;width: 100%;height: 100%;background: url("https://img0.baidu.com/it/u=2669442330,2110216600&fm=253&fmt=auto&app=138&f=JPEG?w=667&h=500") no-repeat;background-size: contain;}section div:nth-child(1){transform: translateZ(300px);}section div:nth-child(2){transform: rotateY(60deg) translateZ(300px);}section div:nth-child(3){transform: rotateY(120deg) translateZ(300px);}section div:nth-child(4){transform: rotateY(180deg) translateZ(300px);}section div:nth-child(5){transform: rotateY(240deg) translateZ(300px);}section div:nth-child(6){transform: rotateY(300deg) translateZ(300px);}
</style>
<body><section><div></div><div></div><div></div><div></div><div></div><div></div></section></body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HBuilder:开发者之梦的实现

目录 引言关于HBuilderHBuilder的优点&#xff1a;HBuilder的缺点&#xff1a;HBuilder使用的简单示例总结 Hbuilder 官网 引言 在当今数字化时代&#xff0c;移动应用程序开发已经成为了一个全球热门的领域。伴随着智能手机和移动设备的普及&#xff0c;人们对于移动应用的需求…

python使用代理ip——案例

python爬虫是指使用Python编写的程序&#xff0c;通过网络爬取信息并提取有效数据。它通过模拟浏览器请求&#xff0c;获取网页数据&#xff0c;并通过解析HTML/XML等文档结构&#xff0c;从中提取数据。 Python爬虫常用的库和工具包括&#xff1a; Requests&#xff1a;用于…

UE4/5 GAS技能系统入门

Unreal的GAS技能系统是针对游戏技能管理的一套逻辑封装方案&#xff0c;这套方案考虑面较广&#xff0c;包括了Cooldowns技能冷却、允许多技能同时释放、GameplayTags的使用、特殊的事件触发等&#xff0c;今天就来学习一下。 1.激活插件与C部分配置 1.1 创建测试工程&#x…

【简单认识LVS及LVS-NAT负载均衡群集的搭建】

文章目录 一、LVS群集简介1、群集的含义2、性能扩展方式3、群集的分类4、负载均衡群集架构1、负载均衡的结构 5、三种负载调度工作模式1、NAT模式2、TUN模式3、DR模式 二、LVS虚拟服务器1、Linux Virtual Server简介2、启用LVS虚拟服务3、LVS调度算法&#xff08;1&#xff09;…

基于单片机的教室智能照明台灯控制系统的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;LCD1602液晶显示当前时间、年月日、时分秒、前教室人数&#xff1b;2路红外探头用来感应当前教室进出人数&#xff1b;按键可以设置当前时间、自动手动模式、开启和关闭教室灯光时间&#xff1b;在手动模式下&#xff0c;可以通过按…

【网络】HTTPS协议原理

目录 “加密”相关概念 为什么要加密 常见加密方式 对称加密 非对称加密 HTTPS工作过程探究 方案1-只使用对称加密 方案2-只使用非对称加密 方案3-客户端和服务端双方都使用非对称加密 方案4-非对称加密 对称加密 上述方案问题分析 方案5-证书认证 非对称加密对…

GWIN入门-完整一个程序

GWIN入门-完整一个程序 新建工程 右击工程名,添加.v文件 编写功能文件 /* timescale是Verilog HDL 中的一种时间尺度预编译指令,它用来定义模块的仿真时的时间单位和时间精度。 */`timescale 1ns/1ps module LED(input wire clk

gitlab【安装部署、备份与恢复】

【1】安装依赖 [rootgit ~]# yum -y install install curl opessh-server postfix wget【2】安装软件包 [rootgit ~]# yum -y localinstall gitlab-ce-11.2.3-ce.0.el7.x86_64.rpm 【3】修改配置 [rootgit ~]# grep "^[a-Z]" /etc/gitlab/gitlab.rb external_ur…

JavaWeb学习路线(11)—— Maven延伸

一、分模块设计 &#xff08;一&#xff09;概念&#xff1a; 将项目按功能拆分出若干个子模块。 &#xff08;二&#xff09;作用&#xff1a; 方便项目管理维护、扩展&#xff0c;也方便模块间相互调用&#xff0c;资源共享。 &#xff08;三&#xff09;具体实现 1、抽取…

运维开发面试题第一期

1.tail -f和tail -F的区别是什么? tail -f 根据文件描述符进行追踪&#xff0c;当文件改名或被删除&#xff0c;追踪停止。 tail -F 根据文件名进行追踪&#xff0c;并保持重试&#xff0c;即该文件被删除或改名后&#xff0c;如果再次创建相同的文件名&#xff0c;会继续…

es8.8 集群安装笔记

es8.8 集群安装笔记 配置集群第一步 修改配置文件 本次安装使用centos8 3节点安装&#xff1a; 192.168.182.142 192.168.182.143 192.168.182.144 官网 可以查看详细的安装&#xff0c;安装步骤比较简单 https://www.elastic.co/guide/en/elasticsearch/reference/8.8/rpm.htm…

MySQL练习题(3)

创建数据库插入数据 CREATE TABLE emp ( empno int(4) NOT NULL, ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, mgr int(4) NULL DEFAULT N…