CSS3 2D转换

CSS3 2D转换

1、CSS3 转换

​ 转换(transform)是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、变形、缩放……等。

在这里插入图片描述

2、工作原理

​ 转换的效果是让某个元素改变形状、大小、位置……等,可以使用2D3D转换来转换我们的元素。

3、2D 转换

  • 2D 转换是改变元素在二维平面上位置和形状的一种技术
  • 移动:translate
  • 旋转:rotate
  • 缩放:scale
  • 倾斜:skew

4、2D转换—移动(translate)

​ translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。

在这里插入图片描述

4.1 translate语法

  • X就是在X轴上水平移动
  • Y就是在Y轴上水平移动
transform:translate(x, y);
transform:translateX(n);
transform:translateY(n);
transform:translateX(n) translateY(n); 
/*注意:如果translate(n)只有一个参数,则默认是对X轴进行平移*/

4.2 重点知识点

  • 2D的移动主要是指水平、垂直方向上的移动
  • translate最大的优点就是。不影响其他元素的位置
  • translate中的100%单位,是相对于本身的宽度和高度来进行计算的
  • 平移单位为px
  • 如果给的是一个负值,则是向X轴或Y轴负方向移动,也就是反方向

4.3 试一试

​ 实现盒子水平垂直居中?

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>盒子水平垂直居中</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        
        header {
            position: relative;
            width: 800px;
            height: 500px;
            background-color: pink;
            margin: 0 auto;
        }
        
        div {
            width: 200px;
            height: 200px;
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translateX(-50%) translateY(-50%);
            background-color: blue;
        }
    </style>
</head>

<body>
    <header>
        <div></div>
    </header>
</body>

</html>

5、2D转换—旋转(rotate)

2D旋转指的是让元素在二维平面上顺时针旋转或者逆时针旋转。rotate()方法,在一个给定度数顺时针旋转元素。负数是允许的,这样就是元素逆时针旋转。

在这里插入图片描述

5.1 使用步骤

  1. 给元素添加转换属性transform
  2. 属性值为rotate(角度deg),如transform:rotate(45deg) 顺时针方向旋转45度
  3. 单位:deg
div {
	transform:roate(0deg);
}

5.2 设置元素旋转中心点

  1. transform-origin基础语法
transform-origin: x y;

​ 2. 重点知识点

  • 注意后面的参数x和y用空格隔开
  • x y 默认旋转的中心点是元素的中心(50% 50%),等价于(center center)
  • 还可以给x y 设置像素或者方位名词(topbottomleftrightcenter)

5.3试一试

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>旋转</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: blue;
            margin: 100px auto;
            overflow: hidden;
        }
        
        div::after {
            display: block;
            content: "传媒";
            width: 100px;
            height: 100px;
            font-size: 30px;
            text-align: center;
            line-height: 100px;
            background-color: skyblue;
            transform: rotate(180deg);
            /* 旋转中心为左下角 */
            transform-origin: left bottom;
            /* 开启过渡,所需时间为1s */
            transition: transform 1s;
        }
        /* 鼠标悬停在父元素上,伪元素顺时针旋转回原来的位置,即原点 */
        
        div:hover::after {
            transform: rotate(0deg);
        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

6、2D转换—缩放(scale)

scale()方法,该元素增加或减小的大小,取决于宽度 (X轴) 和 高度 (Y轴)的参数。主要是用来控制元素的放大与缩小。

在这里插入图片描述

6.1 语法

transform:scale(x, y);
/*解释:转变宽度为原来的x倍,和其元素大小y倍的高度*/

6.2 知识要点

  • 注意:x与y之间使用,逗号进行分隔
  • transform:scale(1, 1);宽高都放大一倍,相当于没有放大
  • transform:scale(2, 2);宽和高都放大了二倍
  • transform:scale(2);如果只写一个参数,则宽高放大的倍数一致
  • transform:scae(0.5,0.5);如果参数小于1则就是缩小
  • scale最大的优势:可以设置中心点缩放,默认以中心点缩放,而且不影响其他盒子

6.3 试一试

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>缩放</title>
    <style>
        div {
            width: 200px;
            height: 300px;
            margin: 100px auto;
            border: 2px solid rgba(0, 0, 0, .2);
            overflow: hidden;
        }
        
        img {
            width: 100%;
            height: 100%;
            /* 设置过渡 */
            transition: transform 0.1s;
        }
        
        div:hover img {
            /* 宽高都放大1.03倍 */
            transform: scale(1.03);
        }
    </style>
</head>

<body>
    <div>
        <img src="./images/260.png" alt="好想和你在一起" title="点击立即观看">
    </div>
</body>

</html>

7、2D转换—倾斜(skew)

7.1 语法

transform:skew(x, y);
transform:skewX(x) skewY(y);

7.2 知识重点

  • skew包含两个参数,分别表示x轴和y轴倾斜的角度
  • 如果第二个参数为空,则默认为0
  • 参数为负数表示向相反方向倾斜
  • skewX(x):表示只在X轴(水平方向)倾斜
  • skewY(y):表示只在Y轴(垂直方向)倾斜
  • 单位也是deg

7.3 案例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>倾斜(skew)</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: blue;
            margin: 100px auto;
            /* 设置过渡 */
            transition: all 1s;
        }
        /* 鼠标悬停后触发的事件 */
        
        div:hover {
            /* x轴倾斜20°,y轴倾斜20° */
            transform: skew(20deg, 20deg);
        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

8、2D转换综合写法

8.1 知识点

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

  • 顺序会影响到转换的效果(先旋转会改变坐标方向)

  • 但我们同时有设置位置或者其他属性的时候,所有要将位移放到最前面

8.2案例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2D转换综合写法</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            margin: 100px auto;
            background-color: skyblue;
            /* 过渡 */
            transition: all 2s;
        }
        
        div:hover {
            /* 先位移,再旋转,然后再倾斜,再缩放 */
            transform: translate(100px, 100px) rotate(45deg) skew(20deg, 20deg) scale(2);
        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

9、2D转换常用属性

Property描述CSS
transform适用于2D或3D转换的元素3
transform-origin允许您更改转化元素位置3

10、2D转换常用方法

函数描述
matrix(n,n,n,n,n,n)定义 2D 转换,使用六个值的矩阵。
translate(x,y)定义 2D 转换,沿着 X 和 Y 轴移动元素。
translateX(n)定义 2D 转换,沿着 X 轴移动元素。
translateY(n)定义 2D 转换,沿着 Y 轴移动元素。
scale(x,y)定义 2D 缩放转换,改变元素的宽度和高度。
scaleX(n)定义 2D 缩放转换,改变元素的宽度。
scaleY(n)定义 2D 缩放转换,改变元素的高度。
rotate(angle)定义 2D 旋转,在参数中规定角度。
skew(x-angle,y-angle)定义 2D 倾斜转换,沿着 X 和 Y 轴。
skewX(angle)定义 2D 倾斜转换,沿着 X 轴。
定义 2D 缩放转换,改变元素的宽度和高度。
scaleX(n)定义 2D 缩放转换,改变元素的宽度。
scaleY(n)定义 2D 缩放转换,改变元素的高度。
rotate(angle)定义 2D 旋转,在参数中规定角度。
skew(x-angle,y-angle)定义 2D 倾斜转换,沿着 X 和 Y 轴。
skewX(angle)定义 2D 倾斜转换,沿着 X 轴。
skewY(angle)定义 2D 倾斜转换,沿着 Y 轴。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御弟謌謌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值