一、transform-origin的作用

transform-origin改变元素基点

(transform-origin是变形原点,原点就是元素绕着旋转或变形的点)

注意:该属性只有在设置了transform属性的时候才起作用;

如果在不设置的情况下,元素的基点默认的是其中心位置。

在没有使用  transform-origin 属性的情况下 transformrotate , translate , scale , skew , matrix  这些操作都是以自身在中心位置为原点的。

 

二、transform-origin的用法

语法:

-moz-transform-origin: [ |  | left | center | right ][ |  | top | center | bottom ] 

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

2D的变形  中的 transform-origin 属性可以是一个参数值,也可以是两个参数值。如果是两个参数值时,第一值设置水平方向X轴的位置,第二个值是用来设置垂直方向Y轴的位置。

3D的变形  中的 transform-origin 属性还包括了Z轴的第三个值。其各个值的取值简单说明如下:

  • top = top center = center top  等价于 50% 0
  • right = right center = center right 等价于 100%或(100% 50%)
  • bottom = bottom center = center bottom 等价于 50% 100%
  • left = left center = center left 等价于 0或(0 50%)
  • center = center center 等价于 50%或(50% 50%)
  • top left = left top 等价于 0 0
  • right top = top right 等价于 100% 0
  • bottom right = right bottom 等价于 100% 100%
  • bottom left = left bottom 等价于 0 100%

left,center right  是水平方向取值,对应的百分值为left=0%;center=50%;right=100%

top center bottom  是垂直方向的取值,其中top=0%;center=50%;bottom=100%;


 

演示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>中心原点</title>
    <style>
    .box{
        width:100px;height: 160px;
        border:2px solid #faa;
        margin: 50px 150px;
        /*padding:30px;*/
        box-shadow: 5px 5px 5px #ddd;
    }
    .bo{
        width:100px;height:160px;
        background-color:rgba(0,22,255,0.3);
        border:2px solid red; 
        margin:auto;
        transform:rotate(45deg);
    }
    .box12{
        /*transform-origin:0 0;*/
        transform-origin:top left;
    }
    .box22{
        transform-origin:50% 0;
        /*transform-origin:top;*/
    }
    .box32{
        transform-origin:0 50% ;
        /*transform-origin:left;*/
    }
    .box42{
        transform-origin:100% 50% ;
        /*transform-origin:right;*/
    }
    .box52{
        transform-origin:50% 100%;
        /*transform-origin:bottom;*/
    }
    .box62{
        /*transform-origin:50% 50%;*/
        transform-origin:center;
    }
    .box72{
        transform-origin:100% 0;
        /*transform-origin:top right;*/
    }
    .box82{
        transform-origin:0 100% ;
        /*transform-origin:bottom left;*/
    }
    .box92{
        transform-origin:100% 100%;
        /*transform-origin:bottom right;*/
    }
    </style>
</head>
<body>
1
    <div class="box">
        <div class="box12 bo">测试目标1(左上角顶点)</div>
    </div>
    2
    <div class="box">
        <div class="box22 bo">测试目标2(顶边中点)</div>
    </div>
    3
    <div class="box">
        <div class="box32 bo">测试目标3(左边中点)</div>
    </div>
    4
    <div class="box">
        <div class="box42 bo">测试目标4(右边中点)</div>
    </div>
    5
    <div class="box">
        <div class="box52 bo">测试目标5(底边中点)</div>
    </div>
    6
    <div class="box">
        <div class="box62 bo">测试目标6(中心点)</div>
    </div>
    7
    <div class="box">
        <div class="box72 bo">测试目标7(右上角顶点)</div>
    </div>
    8
    <div class="box">
        <div class="box92 bo">测试目标9(右下角顶点)</div>
    </div>
    9
    <div class="box">
        <div class="box82 bo">测试目标8(左下角顶点)</div>
    </div>
</body>
</html>

实现效果:

 

 

 

 

posted on 2019-10-19 21:57  Cloud%  阅读(13805)  评论(0编辑  收藏  举报