CSS3 transform 2D转换之移动 旋转 缩放(详细讲解看完就会)

简介: CSS3 transform 2D转换之移动 旋转 缩放(详细讲解看完就会)

通过transform2D转换我么可以做一些简单的动画效果 以及让页面更规整


移动:translate

旋转:rotate

缩放:scale

本篇文章将会讲解上面这三个属性,文章包含个人理解(错误请指出)


位移 translate

移动元素位置的方法,再2D平面中进行移动,有两个值,第一个值是x轴移动,第二个值是y轴移动,正数向右向下移动,负数向左向上移动。


transform: translate(x, y);


或者分开写


transform: translateX(n);


transform: translateY(n);


注意:


1.translate的移动对行内元素没有效果 像a标签,span标签等行内元素。


2.translate的移动是相对于自身移动的,类似定位中的relative。


3.translate不会脱离标准流,并且不会影响其他元素的位置。


</div><div>        div:first-child {</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            background-color: beige;</div><div>            transform: translate(100px, 100px);</div><div>        }</div><div>        div:last-child {</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            background-color: aquamarine;</div><div>        }</div><div>    

 

 




也可以写百分比的方式改变位置 根据自己的长宽计算的百分比transform: translate(50%, 50%);


棕绿色的位置 根据自己的长宽进行位置移动,绿色的位置没有变化(不会影响其他的元素)


相对定位


</div><div>        div:first-child {</div><div>            position: relative;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            background-color: beige;</div><div>            top: 100px;</div><div>            left: 100px;</div><div>            /* transform: translate(50%, 50%); */</div><div>        }</div><div>        div:last-child {</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            background-color: aquamarine;</div><div>        }</div><div>    

 

 


跟相对定位很相似,会根据自己原来的位置进行移动,移动后原来位置的占有并不会消失,所以不会影响其他元素,同样都是没有脱离标准流。


不同是相对定位的百分比值不是根据自己计算的而是根据父级计算的


旋转 rotate

transform: rotate(度数)

度数是正数时顺时针旋转,负数时逆时针旋转,单位是deg,默认的中心点是元素本身的中心点。


</div><div>        /* div:first-child {</div><div>            position: relative;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            background-color: beige;</div><div>            top: 100px;</div><div>            left: 100px; */</div><div>        /* transform: translate(50%, 50%); */</div><div>        /* } */</div><div>        /* </div><div>        div:last-child {</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            background-color: aquamarine;</div><div>        } */</div><div>        #div1 {</div><div>            height: 250px;</div><div>            width: 250px;</div><div>            border: 1px solid;</div><div>        }</div><div>        #div2 {</div><div>            height: 150px;</div><div>            transform: translate(80px, 80px) rotate(-45deg);</div><div>            width: 150px;</div><div>            border-bottom: 1px solid;</div><div>            border-left: 1px solid;</div><div>            background-color: blueviolet;</div><div>        }</div><div>    

 

     

 




中心点是可以变化的的


transform-origin

属性值可以是百分比、em、px等具体的值,也可以是top、right、bottom、left和center这样的关键词。


top left等方位名词表示的是顶部左角


transform-origin: top;


比如top  就是红点位置




你可以设置具体的值


transform-origin:50% 0%;


跟top一样  它是从左上角开始的计算  第一个是x轴第二个是y轴     所以跟top一样




例子


</div><div>        /* div:first-child {</div><div>            position: relative;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            background-color: beige;</div><div>            top: 100px;</div><div>            left: 100px; */</div><div>        /* transform: translate(50%, 50%); */</div><div>        /* } */</div><div>        /* </div><div>        div:last-child {</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            background-color: aquamarine;</div><div>        } */</div><div>        #div1 {</div><div>            height: 250px;</div><div>            width: 250px;</div><div>            border: 1px solid;</div><div>        }</div><div>        #div2 {</div><div>            height: 150px;</div><div>            transform: translate(80px, 80px);</div><div>            transform-origin: top;</div><div>            width: 150px;</div><div>            border-bottom: 1px solid;</div><div>            border-left: 1px solid;</div><div>            background-color: blueviolet;</div><div>            transition: transform 1s;</div><div>        }</div><div>        #div2:hover {</div><div>            transform: translate(80px, 80px) rotate(-45deg);</div><div>        }</div><div>    

 

     

 




缩放 scale

transform: scale(x, y);

围绕默认中心点(可修改)进行的缩放,不会影响其他周边元素(优于width和height的地方)


缩小和放大选择对象,x,y理解成宽度和高度即可,里面添加的是要放大的倍数。


transform: scale(1, 1);没有变化


transform: scale(2,,2);放大两倍


transform: scale(0.5, 0.5)缩小一半


</div><div>        /* div:first-child {</div><div>            position: relative;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            background-color: beige;</div><div>            top: 100px;</div><div>            left: 100px; */</div><div>        /* transform: translate(50%, 50%); */</div><div>        /* } */</div><div>        /* </div><div>        div:last-child {</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            background-color: aquamarine;</div><div>        } */</div><div>        #div1 {</div><div>            height: 250px;</div><div>            width: 250px;</div><div>            border: 1px solid;</div><div>        }</div><div>        #div2 {</div><div>            height: 150px;</div><div>            transform: translate(80px, 80px);</div><div>            transform-origin: top;</div><div>            width: 150px;</div><div>            border-bottom: 1px solid;</div><div>            border-left: 1px solid;</div><div>            background-color: blueviolet;</div><div>            transition: transform 1s;</div><div>        }</div><div>        #div2:hover {</div><div>            transform: translate(80px, 80px) rotate(-45deg) scale(1.5, 1.5);</div><div>        }</div><div>    

 

     

 




注意:


同时使用多个转换,格式为:transform: translate() rotate() scale()

其顺序会影转换的效果。(比如先旋转会改变坐标轴方向所以要先位移)


相关文章
|
11月前
CSS3 transform 文字切斜展开动画
CSS3 transform 文字切斜展开动画
69 0
|
6天前
|
前端开发
如何使用 CSS object-fit 进行图片的缩放和裁剪
如何使用 CSS object-fit 进行图片的缩放和裁剪
15 0
如何使用 CSS object-fit 进行图片的缩放和裁剪
|
2月前
|
前端开发 开发者
CSS进阶-2D变换:translate, rotate, scale
【6月更文挑战第15天】CSS 2D变换如`translate`、`rotate`和`scale`赋予了网页设计灵活性,无需改动HTML即可实现元素移动、旋转和缩放。本文详解这三个属性,讨论使用中的问题和解决方案,并提供代码示例。例如,`translate(50px, 100px)`平移元素,`rotate(45deg)`顺时针旋转45度,`scale(1.5, 1)`水平放大1.5倍。理解百分比、旋转中心和缩放影响,结合transform-origin和注释,能帮助开发者更好地掌握这些技巧。
|
3月前
|
前端开发
echarts使用transform缩放后导致图标模糊
echarts使用transform缩放后导致图标模糊
|
8月前
|
前端开发
CSS改变图标颜色(filter一行代码解决hover变换颜色问题)
CSS改变图标颜色(filter一行代码解决hover变换颜色问题)
160 0
|
前端开发
CSS transform实现按钮边框旋转效果
CSS transform实现按钮边框旋转效果
118 1
|
人工智能 前端开发 图形学
CSS3 转换动画transform
通过 CSS3 转换,我们能够对元素进行移动、缩放、转动、拉长或拉伸。 您可以使用 2D 或 3D 转换来转换您的元素。
78 1
|
前端开发
css-transform2D变换
css-transform2D变换
93 0
|
Web App开发 前端开发 JavaScript
基于 CSS 的变换与动画技术
本文介绍基于 CSS 的变换与动画技术
86 0
CSS3 transform 2D转换之移动 旋转 缩放(详细讲解看完就会)
CSS3 transform 2D转换之移动 旋转 缩放(详细讲解看完就会)
138 0
CSS3 transform 2D转换之移动 旋转 缩放(详细讲解看完就会)