2D位移变换

2D位移变化

transform:translate(px,像素、%,相对于自身的高度来计算(包括内容区,边框,内边距)

transform移动的位置,不会影响其他元素的位置,但是原位置会保留位置

 transform作为子盒子,子绝父相,可以脱离文档流,不占位置

平移:

水平方向移动50px

transform: translateX(50px);

水平方向移动 移动的是相对于自身的百分比,等于移动一个自己

transform: translateX(100%);

如果translate里面只有一个的值的时候那么代表的是水平方向,两个值代表X,Y,需要用逗号隔开

链式执行:transform: translateX(50px) translateX(50px) translateY(50px);

  1. translate中的百分比单位是相对于自身元素的 translate:(50%,50%);

  2. translate类似定位,不会影响到其他元素的位置

  3. 对行内标签没有效果

给父盒子设置鼠标滑过时,在父盒子中加上transition-duraing : 2s/ transition: tranform 2s 样式变换的时间 ,在.box:hover{}加上需要变换的样式

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>2D位移变化</title>
        <style>
            .w{
                position: relative;
                margin: 50px;
                height: 300px;
                width: 300px;
                border: 1px solid #000;
            }
            .box{
                display: inline-block;
                /* position: absolute; */
                height: 100px;
                width: 100px;
                background-color: #369;
                /* transition-duration: 2s; */
                transition: transform 5s;
                /* 像素px */
                /* 百分比 */
                /* transform: translate(100%,100%); */
                /* 链式执行 */
                /* transform: translateX(50px) translateX(50px); */
            }
            .box:hover{
                transform: translate(100px,10px);

            }
            span{
                background-color: red;
                transform: translate(100px);
            }
        </style>
    </head>
    <body>
        <div class="w">
            <p>这是一个p标签</p>
            <div class="box"></div>
            <span>这是一个span标签</span>
            <p>Lorem ipsum dolor sit amet.</p>
        </div>
    </body>
</html>

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

使用2D旋转的步骤:

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

  2. 属性值为 rotate(角度)transform:rotate(30deg) 顺时针方向旋转30度

rotate() 设置旋转的角度;角度的单位是 deg,值越大,顺时针旋转的就越多,正负值都可以设置。

2D缩放:2D缩放指的是让元素在2维平面内大小发生变化

使用2D缩放的步骤:

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

  2. 转换的属性值为 scale(宽的倍数,高的倍数) 宽变为两倍,高变为3倍transform:scale(2,3)

scaleX(),scaleY(),scale(X,Y),scale()内只写一个值时,XY都应用,以中心为原点,向四周缩放 

倍数为0时,元素会消失不见

总结:

  • transform:scale(1,1) 放大一倍 相对于没有放大

  • transform:scale(2,2) 宽和高都放大了2倍

  • transform:scale(2) 只写一个参数 第二个参数则和第一个参数一样 相当于 scale(2,2)

  • transform:scale(0.5,0.5) 缩小

  • transform:scale(-2,-2) 反向放大2倍 很少用负数 容易让人产生误解

使用缩放实现小于12px的文字,对盒子设置字体属性值,等比缩放,未设置时按默认文字大小16px缩放

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .box01 {
            font-size: 12px;
        }

        .box02 {
            font-size: 24px;
            transform: scale(.5);
        }
    </style>
</head>
<body>
    <p class="box01">
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi impedit odit reiciendis molestias perspiciatis autem quam facere consequuntur perferendis neque nemo rerum fugit, illum est facilis doloribus deleniti magni fugiat.
    </p>
    <p class="box02">Lorem, ipsum dolor sit amet consectetur adipisicing elit. Obcaecati soluta, voluptatibus perspiciatis, unde vero excepturi sit culpa ut dignissimos rerum dolor neque quaerat explicabo voluptatem velit optio quasi cumque quia!</p>
</body>
</html>

2D扭曲

skewX()元素在水平方向扭曲。如果只为正数,元素的左上角和右下角将会被拉扯。如果值为负数,元素的右上角和左下角会被拉扯.(角度为正值时,左上尖角往左边走)

skewY()元素在垂直方向扭曲变形。如果只为正数,元素的左上、右下将会被拉扯。如果只为负数,元素的右上、左下将会被拉扯。(角度为正值时,左上尖角往右边走)

skew()

  • x 表示在x轴上的倾斜角度,单位为 deg。

  • y 表示在y轴上的倾斜角度,单位为 deg。

设置X轴扭曲时,Y轴的在盒子的高度范围内变化

设置Y轴扭曲时,X轴的在盒子的高度范围内变化 

XY轴都扭曲时,根据XY的扭曲程度改变范围

多重变化

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>

        .box {
            position: absolute;
            left: 50%;
            top: 50%;
            width: 200px;
            height: 200px;
            line-height: 200px;
            text-align: center;
            font-family: "楷体";
            font-size: 120px;
            background-color: red;

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

        .box span {
            display: inline-block;
            transform: rotate(135deg);
        }
    </style>
</head>
<body>
    <div class="box">
        <span>福</span>
    </div>
</body>
</html>

 

transform-origin

设置或检索对象以某个原点进行转换。

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

  • 如果只提供一个,该值将用于横坐标;纵坐标将默认为50%。

  • transform-origin:50% 50%; 默认值 元素的中心位置 百分比是相对于自身的宽度和高度

  • transform-origin:top left; 左上角 和 transform-origin:0 0;相同

  • transform-origin:50px 50px; 距离左上角 50px 50px 的位置

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

transform-origin设置的是元素在父盒子中的位置,

origin定义的位置不影响平移,在原位置变换样式

对旋转与缩放有影响,在origin设置位置的基础上进行旋转或着缩放

transform-origin:100% 100%,相等于往下走一个高度,往右走一个宽度

 从左上角0.0开始算起,x往右走多少,y往下走多少,那一个点就是旋转的中心点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值