2D及3D转换

news/2024/11/28 21:56:00/

转换 —— transform

目录

2D转换

移动 —— translate

旋转 —— rotate

缩放 —— scale

2D转换综合写法

设置转换中心点

3D转换

3D移动 —— translate3d

2D转换 —— rotate3d

透视 —— perspective

3D呈现 —— transform-style

练习

使盒子居中

旋转出内容框

盒子的两面


2D转换

  • 移动 —— translate

1.语法:

transform:translate(x,y);

或分开写:

transform:translateX(n);

transform:translateY(n);

2.重点:

  1. 可以沿X或Y轴移动; 注意:X/Y轴起点为左上角
  2. 其的移动不影响其它元素;
  3. .translate的百分比单位相对于自身元素的大小,translate:(50%,50%)自身的一半;
  4. 对行内标签无效果。
  • 旋转 —— rotate

1.语法:

transform:rotate(度数deg);

2.重点:

  1. 度数为正时,为顺时针转;度数为负时,为逆时针转;
  2. 默认旋转中心为元素中心点。
  • 缩放 —— scale

1.语法:

transform:scale(x,y);

x,y同时缩放:

transform:scale(n) ;

2.重点:

  1. x代表宽度缩放;y代表高度缩放。
  2. x,y没有单位,值为原来的倍数
  3. 默认缩放中心为元素中心点。
  4. 不影响其他元素。
  • 2D转换综合写法

1.同时使用多个转换格式

transform:  translate()   rotate()   scale() ;

2.顺序影响转换效果举例

  先旋转会改变坐标轴方向

3.同时有多个属性,位移放在最前面。

  • 设置转换中心点

  1. transform-origin: x y;
  2. 默认:(50% 50%)== (center center) ;
  3. x,y可设置 像素  ( 上距 左距 ) 或 方位名词 (top bottom left ) ;

3D转换

由三维坐标系组成,x轴向右为正,y轴向下为正,z轴向外为正

  • 3D移动 —— translate3d

1.语法:

transform:translateX(100px);    仅在x轴上移动

transform:translateY(100px);    仅在y轴上移动

transform:translateZ(100px);    仅在z轴上移动

统一表示:transform: translate3d(x,y,z);

2.注意:

(1)在z轴上单位一般用px ;

(2)x,y,z轴没有时不可省略其位置,要写成 0 px ;

  • 2D转换 —— rotate3d

1.语法:

transform:rotateX(45deg);   沿x轴正方向旋转45度

transform:rotateY(45deg);   沿y轴正方向旋转45度

transform:rotateZ(45deg);   沿z轴正方向旋转45度--形同与2d旋转

统一表示:transform:rotate3d(x,y,z,deg) ;

2.判断旋转方向方法:

左手螺旋准则:角度为正,大拇指为轴正向,四指指向为旋转方向。

3.注意:

(1)x,y,z轴统一书写时,其内容不可省略,有的写1,没有的写0;

(2)沿各轴旋转时,其他轴方向可能会改变。

  • 透视 —— perspective

  1. 效果:在2d平面生成近大远小的视觉立体。
  2. 语法:perspective:500px;
  3. 理解:透视表示为视距,指人眼到物体的距离,当距离越小,物体的像越大。
  4. 注意

(1)透视要写在被观察元素的父辈元素的盒子上;

(2)其距离是表示在z轴上的;

(3)视距大小及父元素内子元素排布影响物体角度。

  • 3D呈现 —— transform-style

1.意义:在父元素开启三维的情况下,控制子元素是否开启三维空间;

2.取值:

transform-style:flat ——不开启三维空间;(默认)

transform-style:preserve-3d ——开启三维空间;

3.注意:代码要写给父级元素,但影响的为子级元素。

练习

  • 使盒子居中

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=, initial-scale=1.0"><title>使盒子垂直居中</title>
</head>
<style>.container{width: 400px;height: 300px;background-color: cadetblue;position: relative;}.main{width: 150px;height: 100px;background-color: cornflowerblue;position: absolute;left: 50%;top: 50%;transform:translate(-50%,-50%);}</style>
<body><div class="container"><div class="main"></div></div> 
</body>
</html>
  • 旋转出内容框

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>图片旋转问题</title>
</head>
<style>.box{width: 100px;height: 100px;border: 1px solid cornflowerblue;margin: 50px 50px;overflow: hidden;float: left;}.box::after{content: "我是图图小淘气,面对世界很好奇";display: block;font-family: 翩翩体-简;width: 100px;height: 100px;padding: 8px 0 0 13px;background-color: rgba(95, 158, 160, 0.699); border: 1px solid rgba(58, 30, 216, 0.555);box-sizing: border-box;border-radius: 50% 0 0 0;transform: rotate(180deg);transform-origin: left bottom;transition: all .2s;}.box:hover::after{transform: rotate(0deg);}
</style>
<body><div class="box"></div><div class="box"></div><div class="box"></div>
</body>
</html>
  • 盒子的两面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<style>body{perspective: 600px;}.box{height: 200px;width: 300px;margin: 200px auto;background-color: darkgray;position: relative;transform-style: preserve-3d;transition:all .5s;}.box:hover{transform: rotateX(90deg);}.main,.back{height: 200px;width: 300px;position:absolute;right: 0;top: 0;text-align: center;line-height: 200px;font-size: 30px;font-style: italic;}.main{background-color: darkkhaki;transform: translateZ(100px);}.back{background-color: darkorange;transform:translateY(100px) rotateX(-90deg);}
</style>
<body><div class="box"><div class="main">Time and tide</div><div class="back">Waits for no man!</div></div>
</body>
</html>

就到这里啦!


http://www.ppmy.cn/news/249759.html

相关文章

3D与2D

十二月二十三 1.文本效果 1.1文本阴影 1.2盒子阴影 box-shadow 1.3为元素添加阴影 1.4卡片效果 1.5文本溢出 css3文本溢出属性指定向客户如何显示溢出内容 2.2d转换 .1.css转换允许移动旋转缩放和倾斜元素 translate从当前位置移动元素 rotate根据定的角度顺时针或者你是在旋转…

不要为3d而3d

和以前的几个朋友聊天&#xff0c;也有做game的。 发现大家对3D技术都非常热衷&#xff0c;但是这种热衷显得刻意的 为3d而3d&#xff0c;就有点舍本逐末。 1 游戏最重要的是策划&#xff0c;需要具体的满足人心底的某种需求&#xff0c; 2 3d需要 好显卡的支持&#x…

2D旋转与3D转换

文章目录 一、2D转换1.移动&#xff1a; translate2.旋转&#xff1a; rotate3.缩放&#xff1a; scale4.2D 转换综合写法以及顺序问题5.动画(animation)5.1.定义动画5.2.使用动画5.3.动画常见属性5.4.动画简写方式 二、3D转换1.3D位移&#xff1a;translate3d(x, y, z)2.3D旋转…

02[并非3D的3D]

第二集 并非3D的3D 我们开始展示3D的世界了&#xff0c; 好好复习一下几何吧。 2.1 从来都没有3D的游戏 2.1.1 3D pipeline 3D pipeline, 应该翻译成3D流水线比较能让大家清楚, 它和汽车制造厂的流水线是有共性的. 在我们编写演示3D的例子前, 我们简单的了解一下3D pipeline, 如…

3d位移效果

前言&#xff1a;3d坐标系 X 轴 往右为正值&#xff0c; 否则反之 Y 轴 往下为正值&#xff0c;否则反之 Z轴 指向我们为正值&#xff0c;否则反之 3d位移 1、X轴正值位移&#xff08;向右&#xff09;&#xff1a; transform: translateX(100px); 示例&#xff1a; 设置一个…

3D视觉

我们生活在三维空间中&#xff0c;如何智能地感知和探索外部环境一直是个热点难题。2D视觉技术借助强大的计算机视觉和深度学习算法取得了超越人类认知的成就&#xff0c;而3D视觉则因为算法建模和环境依赖等问题&#xff0c;一直处于正在研究的前沿。近年来&#xff0c;3D视觉…

Daydream播放3D视频(视频左右分屏3D效果)

需求分析&#xff1a; 因为VR项目需求&#xff0c;要实现3D视频的播放&#xff0c;即左右分屏视频播放。如下图所示类型视频。 使用GoogleVRForUnity插件实现VR功能效果。项目刚开始使用的是0.8的老版本插件&#xff0c;可以轻松实现3D视频的播放效果&#xff0c;但升级GoogleV…

[乐意黎原创] 左右格式的3D电影怎么播放

播放左右分屏显示的影片时&#xff0c;此时影片是属于3D格式&#xff0c; 了解决“左右格式的3D电影怎么看”这个问题&#xff0c;我们需要先来说明一下什么是左右格式。 左右格式和上下格式只是3D立体电影的一种存储方式&#xff0c;和拍摄方式&#xff0c;播放设备无关。如果…