zoukankan      html  css  js  c++  java
  • CSS3 transform

    部分内容转载自 https://www.w3cplus.com/content/css3-transform

    Transform字面上就是变形,改变的意思。在CSS3transform主要包括以下几种:旋转rotate扭曲skew缩放scale移动translate以及矩阵变形matrix
    一、Rotate(旋转)

    2D旋转,需要先有旋转的基点(transform-origin)的定义,

    二、Translate平移

    基点默认为元素中心点。Translate(X,Y)   translateX(X)   translateY(Y) .

    示例:不知道DIV的高宽,实现文本水平 垂直居中。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>CSS 动画</title>
        <style type="text/css">
            .demo{
               padding:20px;
                background:orange;
                color:#fff;
                position: absolute;
                top:50%;
                left:50%;
                border-radius: 5px;
                -webkit-transform:translate(-50%,-50%);
                -moz-transform:translate(-50%,-50%);
                transform:translate(-50%,-50%);
            }
        </style>
    </head>
    <body>
    <div class="demo">我不知道自己的高度和宽度是多少,我要实现水平居中!</div>
    </body>
    </html>
    

      

    三、Scale(缩放)

    缩放中心是元素的中心。缩放基数为1,缩放值大于1就是放大,小于1就是缩小。scale(X,Y)   scaleX(X)  scaleY(Y) 若是scale(只有一个值)那意思就是X=Y。

    四、Skew(扭曲)

    扭曲中心是元素中心。扭曲单位为deg。语法为skew(X,Y);skewX(X);skewY(Y)。如:transform:skew(30deg,10deg)

    五、Matrix(矩阵)

    matrix(<number>, <number>, <number>, <number>, <number>, <number>) : 以一个含六值的(a,b,c,d,e,f)变换矩阵的形式指定一个2D变换,相当于直接应用一个[a b c d e f]变换矩阵。就是基于水平方向(X轴)和垂直方向(Y轴)重新定位元素,此属性值使用涉及到数学中的矩阵,我在这里只是简单的说一下CSS3中的transform有这么一个属性值,如果有感兴趣的朋友可以去了解更深层次的martix使用方法,这里就不多说了。 

    也可以理解为:matrix(scaleX(),skewY(),skewX(),scaleY(),translateX(),translateY());

    http://www.zhangxinxu.com/wordpress/2012/06/css3-transform-matrix-%E7%9F%A9%E9%98%B5/

    https://www.cnblogs.com/Ivy-s/p/6786622.html

    六、改变元素基点(tansform-origin)

    transform-origin就是更改元素的基点,而元素基点默认为其中心位置,换句话说我们没有使用transform-origin改变元素基点位置的情况下,transform进行的rotate,translate,scale,skew,matrix等操作都是以元素自己中心位置进行变化的。但是有时候我们需要在不同的位置对元素进行操作,那就需要改变元素基点,使元素基点不在中心位置,达到需要的要求。

    transform-origin(X,Y):用来设置元素的运动的基点(参照点)。默认点是元素的中心点。其中X和Y的值可以是百分值,em,px,其中X也可以是字符参数值left,center,right;Y和X一样除了百分值外还可以设置字符值top,center,bottom,这个看上去有点像我们background-position设置一样;下面我列出他们相对应的写法:

    1、top left | left top 等价于 0 0 | 0% 0%

    2、top | top center | center top 等价于 50% 0

    3、right top | top right 等价于 100% 0

    4、left | left center | center left 等价于 0 50% | 0% 50%

    5、center | center center 等价于 50% 50%(默认值)

    6、right | right center | center right 等价于 100% 50%

    7、bottom left | left bottom 等价于 0 100% | 0% 100%

    8、bottom | bottom center | center bottom 等价于 50% 100%

    9、bottom right | right bottom 等价于 100% 100%

    其中 left,center right是水平方向取值,对应的百分值为left=0%;center=50%;right=100%而top center bottom是垂直方向的取值,其中top=0%;center=50%;bottom=100%;如果只取一个值,表示垂直方向值不变,但是background-position不需要做浏览器兼容,而transform-origin需要做浏览器兼容。

     //Mozilla内核浏览器:firefox3.5+
      -moz-transform-origin: x y;
      //Webkit内核浏览器:Safari and Chrome
      -webkit-transform-origin: x y;
      //Opera
      -o-transform-origin: x y ;
      //IE9
      -ms-transform-origin: x y;
      //W3C标准
      transform-origin: x y ;
    它在不同浏览器内核下的书写规则:
      //Mozilla内核浏览器:firefox3.5+
      -moz-transform: rotate | scale | skew | translate ;
     //Webkit内核浏览器:Safari and Chrome
      -webkit-transform: rotate | scale | skew | translate ;
     //Opera
      -o-transform: rotate | scale | skew | translate ;
     //IE9
      -ms-transform: rotate | scale | skew | translate ;
     //W3C标准
      transform: rotate | scale | skew | translate ;
    来自W3C plus的示例:
      HTML Code:
    <div class="menu"> <ul class="clearfix"> <li class="item translate"><a href="#">Translate</a></li> <li class="item translate-x"><a href="#">TranslateX</a></li> <li class="item translate-y"><a href="#">TranslateY</a></li> <li class="item rotate"><a href="#">Rotate</a></li> <li class="item scale"><a href="#">Scale</a></li> <li class="item scale-x"><a href="#">ScaleX</a></li> <li class="item scale-y"><a href="#">ScaleY</a></li> <li class="item skew"><a href="#">Skew</a></li> <li class="item skew-x"><a href="#">SkewX</a></li> <li class="item skew-y"><a href="#">SkewY</a></li> <li class="item matrix"><a href="#">Matrix</a></li> </ul> </div> 著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 原文: https://www.w3cplus.com/content/css3-transform © w3cplus.com
    CSS code:
    .menu ul {
        border-top: 15px solid black;
        padding: 0 10px;    
     }
     .menu ul li a{
        color: #fff;
        float: left;
        margin: 0 5px;
        font-size: 14px;
        height: 50px;
        line-height: 50px;
        text-align: center;
         65px;
        padding: 10px 5px;
        background: #151515;
        -moz-border-radius: 0 0 5px 5px;
        -webkit-border-radius: 0 0 5px 5px;
        border-radius: 0 0 5px 5px;
        -moz-box-shadow: 0 0 1px #ccc,inset 0 0 2px #fff;
        -webkit-box-shadow: 0 0 1px #ccc,inset 0 0 2px #fff;
        box-shadow: 0 0 1px #ccc,inset 0 0 2px #fff;
        text-shadow: 0 1px 1px #686868;
        text-decoration: none;
     }
     .menu ul li.translate a{
        background: #2EC7D2;
     }
     .menu ul li.translate-x a {
        background: #8FDD21;
     }
     .menu ul li.translate-y a {
        background: #F45917;
     }
     .menu ul li.rotate a {
        background: #D50E19;
     }
     .menu ul li.scale a {
        background: #cdddf2;
     }
     .menu ul li.scale-x a {
       background: #0fDD21;
     }
     .menu ul li.scale-y a {
       background: #cd5917;
     }
     .menu ul li.skew a {
       background: #519;
     }
     .menu ul li.skew-x a {
       background: #D50;
     }
     .menu ul li.skew-y a {
       background: #E19;
     }
     .menu ul li.matrix a {
       background: #919;
     }
    /*加上hover效果*/
    
    

     加上Hover效果:

    .menu ul li.translate a:hover {
         -moz-transform: translate(-10px,-10px);
         -webkit-transform: translate(-10px,-10px);
         -o-transform: translate(-10px,-10px);
         -ms-transform: translate(-10px, -10px);
         transform: translate(-10px,-10px);
      }
      .menu ul li.translate-x a:hover {
        -moz-transform: translateX(-10px);
        -webkit-transform: translateX(-10px);
        -o-transform: translateX(-10px);
        -ms-transform: translateX(-10px);
        transform: translateX(-10px);          
      }
      .menu ul li.translate-y a:hover {
         -moz-transform: translateY(-10px);
         -webkit-transform: translateY(-10px);
         -o-transform: translateY(-10px);
         -ms-transform: translateY(-10px);
         transform: translateY(-10px);          
      }
     .menu ul li.rotate a:hover {
       -moz-transform: rotate(45deg);
       -webkit-transform: rotate(45deg);
       -o-transform: rotate(45deg);
       -ms-transform: rotate(45deg);
       transform: rotate(45deg);          
     }
     .menu ul li.scale a:hover {
       -moz-transform: scale(0.8,0.8);
       -webkit-transform: scale(0.8,0.8);
       -o-transform: scale(0.8,0.8);
       -ms-transform: scale(0.8,0.8);
       transform: scale(0.8,0.8);          
     }
      .menu ul li.scale-x a:hover {
        -moz-transform: scaleX(0.8);
        -webkit-transform: scaleX(0.8);
        -o-transform: scaleX(0.8);
        -ms-transform: scaleX(0.8);
        transform: scaleX(0.8);          
     }
      .menu ul li.scale-y a:hover {
         -moz-transform: scaleY(1.2);
         -webkit-transform: scaleY(1.2);
         -o-transform: scaleY(1.2);
         -ms-transform: scaleY(1.2);
         transform: scaleY(1.2);          
     }
      .menu ul li.skew a:hover {
         -moz-transform: skew(45deg,15deg);
         -webkit-transform: skew(45deg,15deg);
         -o-transform: skew(45deg,15deg);
         -ms-transform: skew(45deg,15deg);
         transform: skew(45deg,15deg);          
      }
      .menu ul li.skew-x a:hover {
        -moz-transform: skewX(-30deg);
        -webkit-transform: skewX(-30deg);
        -o-transform: skewX(-30deg);
        -ms-transform: skewX(-30deg);
        transform: skewX(-30deg);          
     }
      .menu ul li.skew-y a:hover {
        -moz-transform: skewY(30deg);
        -webkit-transform: skewY(30deg);
        -o-transform: skewY(30deg);
        -ms-transform: skewY(30deg);
        transform: skewY(30deg);          
     }
      .menu ul li.matrix a:hover {
        -moz-transform: matrix(1,1,-1,0,0,0);
        -webkit-transform: matrix(1,1,-1,0,0,0);
        -o-transform: matrix(1,1,-1,0,0,0);
        -ms-transform: matrix(1,1,-1,0,0,0);
        transform: matrix(1,1,-1,0,0,0);          
      }
    

      

     做出来就是这个效果。

    加上Hover后的效果:

     

     多个属性一起写的示例:

     .demo a{
        100px;
       padding: 5px;
       background: red;
       display: block;
     }
     .demo a:hover {  
       -moz-transform: rotate(45deg) scale(0.8,1.2) skew(60deg,-30deg);
       -webkit-transform: rotate(45deg) scale(0.8,1.2) skew(60deg,-30deg);
       -o-transform: rotate(45deg) scale(0.8,1.2) skew(60deg,-30deg);
       -ms-transform: rotate(45deg) scale(0.8,1.2) skew(60deg,-30deg);
       transform: rotate(45deg) scale(0.8,1.2) skew(60deg,-30deg);
     }
    著作权归作者所有。
    商业转载请联系作者获得授权,非商业转载请注明出处。
    原文: https://www.w3cplus.com/content/css3-transform © w3cplus.com
    

      *****!多个属性一起写的时候需要注意不能用逗号隔开,需要使用空格隔开。而且transform只能应用于块元素。

      

     

     

  • 相关阅读:
    jumpserver-1.4.8安装步骤
    堡垒机使用普通用户密钥方式登陆资产,然后新创建普通用户管理资产
    使用python的subprocess模块调用linux系统命令
    MySQL数据表操作命令
    部署SonarQube代码检测服务并结合Jenkins使用
    使用Jenkins结合Gogs和SonarQube对项目代码进行测试、部署、回滚,以及使用keepalived+haproxy调度至后端tomcat
    Gogs官方帮助文档
    Centos7 用gogs搭建git仓库
    通过设置访问密码查看Tomcat服务器运行状态
    在CentOS 7系统下升级 Jenkins版本
  • 原文地址:https://www.cnblogs.com/potato-lee/p/8513450.html
Copyright © 2011-2022 走看看