2D变换的知识点

2D变化(位移、缩放、旋转、扭曲、多重变换、变换原点)

1.2D位移

2D 位移可以改变元素的位置,具体使用方式如下:

先给元素添加转换属性 transform

编写 transform 的具体值,相关可选值如下:

translateX 设置水平方向位移,需指定长度值;若指定的是百分比,是参考自身宽度的百分比.

translateY 设置垂直方向位移,需指定长度值;若指定的是百分比,是参考自身高度的百分比。

translate 一个值代表水平方向,两个值代表: 水平和垂直方向。

3.注意点

1、位移与相对定位很相似,都不脱离文档流,不会影响到其它元素。

2、与相对定位的区别: 相对定位的百分比值,参考的是其父元素,定位的百分比值,参考的是其自身。相对定位可以让一个元素变成另外一个元素的包含块

3、浏览器针对位移有优化,与定位相比,浏览器处理位移的效率更高。

transform 可以链式编写,例如:,

transform: translateX(38px) translateY(48px);

位移对行内元素无效

6、位移配合定位,可实现元素水平垂直居中

position : absolute: //必须要开启绝对定位

left: 50%;

top: 50%;

transform: translate(-50%,-50%);

transform:translateX(30px) translateY(30px); X和Y方向上的唯一都会显示

transform:translateX(30px);

transform:translateY(30px); //分开写的话,写在下面的会把写在上面的覆盖掉

下面的translateY会把translateX覆盖掉,就只有translateY没有translateX了

水平垂直居中的方法二:

inner2 (

width: 60px;

height:60px;

background-color:orange;

position: absolute; //必须要开启绝对定位

top: 50%;

left: 50%;

margin-left:-30px;

margin-top:-30px;

2D缩放

缩放是指:让元素放大或缩小,具体使用方式如下

1先给元素添加转换属性 transform

2编写transform 的具体值,相关可选值如下:

缩放不对行内元素起作用

缩放的书写方式和平移一样

店

scaleX 设置水平方向的缩放比例,值为一个数字,1 表示不缩放,大于 1 放大,小于 1 缩小

scaleY 设置垂直方向的缩放比例,值为一个数字,1 表示不缩放,大于 1 放大,小于1 缩小

scale

同时设置水平方向、重直方向的缩放比例

一个值代表同时设置水平和垂直缩放;两个值分别代表:水平缩放、垂直缩放。

注意点:

scale 的值,是支持写负数的,但几乎不用,因为容易让人产生误解.如果值是负数,会发生镜像翻转,本来是靠近左边的整正常的图像,会变成靠近右边的镜像翻转的图像。

借助缩放,可以实现小于12px的文字

translate 一个值代表水平方向,两个值代表: 水平和垂直方向。

2D旋转 rotate

transform:rotate(30deg) rotate写一个值的时候,默认是rotateZ

2D 旋转是指:让元素在二维平面内,顺时针旋转或逆时针旋转。

具体使用方式如下:

1先给元素添加转换属性 transform

2编写 transform 的具体值,相关可选值如下:

rotate 设置旋转角度,需指定一个角度值( deg ),正值顺时针,负值逆时针。

注意: rotateZ(20deg) 相当于 rotate(20deg),当然到了3D变换的时候,还能写: rotate(x,x,x)

4.2D扭曲(了解)

2D 扭曲是指: 让元素在二维平面内被"拉扯",进而"走形"实际开发几乎不用,了解即可,具体使用方式如下:

1,先给元素添加转换属性 transform

2、编写 transform 的具体值,相关可选值如下:

skewX 设置元素在水平方向扭曲,值为角度值,会将元素的左上角、右下角 拉扯。

skewY 设置元素在垂直方向扭曲,值为角度值,会将元索的左上角、右下角 拉扯。

skew 一个值代表 skewX,两个值分别代表: skewX 、 skewY

多重变换

transform:translate(100px,100px) scale(0.5);

transform:translate(100px,100px) rotate(30deg);

transform:rotate(30deg) translate(100px,100px);

//顺序不一样,导致最后旋转的中心点不一样

多重变换

多个变换,可以同时使用一个transform 来编写。

transform:translate(-50%,-50%) rotate(45deg);

注意点:多重变换时,建议最后旋转。

变换原点

位移一直是相对于坐标远点移动的。

元素变换时,默认的原点是元素的中心,使用 transform-origin 可以设置变换的原点。

修改变换原点对位移没有影响,对旋转和缩放会产生影响。

如果提供两个值,第一个用于横坐标,第二个用于纵坐标。

如果只提供一个,若是像素值,表示横坐标,纵坐标取 50%;

若是关键词,则另一个坐标取 50%

transform-origin:50% 50%;表示转换的原点位于元素中心。具体来说,第一个50%表示原点位于元素水平中线,第二个50%表示原点位于元素垂直中线。例如,当你对一个元素应用旋转转换时,该元素会围绕其中心点旋转。

如果是位移的话,百分比是相对于元素自身的百分比。

transform-origin: left top ,变换原点在元察的左上角。

transform-origin: 50px 50px ,变换原点距离元素左上角 50px 50px 的位置

transform-origin: 0,只写一个值的时候,第二个值默认为 50%。

变换原点的属性值可以写(关键字,像素值,百分比)。

变换原点的位置对旋转、缩放有影响,对位移没有影响

可以通过关键字、像素值、百分比来调整变换原点

transform-origin:top; //只给一个值

transform-origin:right top; //给两个值

相关推荐
卸任6 小时前
Vibe coding工具使用心得
前端·ai编程
brien96 小时前
为什么模型标称 1M,Google Antigravity 聊到 256K 却突然失忆?我们给它做了个原生行内监控圆环
前端
修炼的dance7 小时前
录屏关键帧间隔多少合适?六档实测,2秒到10秒小了75.6%
前端
Lank_M7 小时前
关键帧从1秒拉到10秒,录屏小87.3%,摄像头小10.8%
前端
补码缩写7 小时前
用 ffprobe 拆录屏,八成字节在 29 个关键帧上
前端
百思不得小李7 小时前
一个复杂的动态表单是如何实现的
前端·设计模式
陈随易7 小时前
Cmder 停更 17 个月,2.0 支持 Windows Terminal
前端·后端·程序员
风骏时光牛马7 小时前
前沿视界
前端
kyriewen7 小时前
我扫了 814 个依赖,97 个还敢要 Node 10
前端·javascript·程序员
陈随易8 小时前
3000 万人在用的翻译插件,重写一遍就是一门生意
前端·后端·程序员