美文网首页
CSS3过渡与transforms

CSS3过渡与transforms

作者: GoFzy | 来源:发表于2019-03-14 15:25 被阅读0次

    一、transition

      过渡(transition)是CSS3中具有颠覆性的特征之一,我们可以在不使用 Flash 动画或 JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果。语法格式:

    transition: 要过渡的属性  花费时间  运动曲线  何时开始;(如果有多组属性变化,还是用逗号隔开)
    

      属性及其描述:


    属性描述

      运动曲线示意图:


    运动曲线示意图
      附上仿京东侧边栏写法:
    <!DOCTYPE html>
    <html>
        <head>
            <title>京东侧边栏</title>
            <style>
                * {
                    margin: 0;
                    padding: 0;
                }
                .subnav li {
                    list-style: none;
                    width: 20px;
                    height: 20px;
                    margin: 3px 0;
                    background-color: pink;
                    position: relative;
                }
                .subnav {
                    width: 20px;
                    margin: 100px auto;
                }
                .subnav div {
                    position: absolute;
                    right: 0;
                    top: 0;
                    height: 20px;
                    width: 0;
                    background-color: purple;
                    transition: all .6s;
                    z-index: -1;
                }
                .subnav li:hover div {
                    width: 100px;
                }
            </style>
        </head>
        <body>
            <div class="subnav">
                <ul>
                    <li><div></div></li>
                    <li><div></div></li>
                    <li><div></div></li>
                    <li><div></div></li>
                    <li><div></div></li>
                </ul>
            </div>
        </body>
    </html>
    

    二、2D变形(CSS3) transform

      transform同样也是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、倾斜、缩放,甚至支持矩阵方式,配合过渡动画知识,可以取代大量之前只能靠Flash才可以实现的效果。

    2.1 移动tanslate(x,y)

      基本语法:

     translate(x,y)水平方向和垂直方向同时移动(也就是X轴和Y轴同时移动)
     translateX(x)仅水平方向移动(X轴移动)
     translateY(Y)仅垂直方向移动(Y轴移动)
    

      translate还有一个妙处就是实现盒子水平居中,相比于margin外边距和定位方法,translate方法适用范围更广,在不知道盒子大小或者不方便计算时就可以使用该方法:

    .box {
      width: 499.9999px;
      height: 400px;
      background: pink;
      position: absolute;
      left:50%;
      top:50%;
      transform:translate(-50%,-50%);  /* 走的自己的一半 */
    }
    

    2.2 缩放scale(x,y)

      基本语法:

    scale(X,Y)使元素水平方向和垂直方向同时缩放(也就是X轴和Y轴同时缩放)
    scaleX(x)元素仅水平方向缩放(X轴缩放)
    scaleY(y)元素仅垂直方向缩放(Y轴缩放)
    

      scale()的取值默认的值为1,当值设置为0.01到0.99之间的任何值,作用使一个元素缩小;而任何大于或等于1.01的值,作用是让元素放大

    2.3 旋转rotate(deg)

      基本语法:

    transform:rotate(45deg);/*正值为顺时针,负值为逆时针*/
    div{transform-origin: left top;transform: rotate(45deg); }  /* 改变元素原点到左上角,然后进行顺时旋转45度 */    
     div{transform-origin: 10px 10px;transform: rotate(45deg); }  /* 改变元素原点到x 为10  y 为10,然后进行顺时旋转45度 */ 
    

    2.4 倾斜skew(deg,deg)

      基本语法:

    transform:skew(30deg,0deg);/*把元素水平方向上倾斜30度,竖直方向保持不变*/
    

    三、3D变形(CSS3) transform

      首先来看一下3D坐标轴:


    CSS3的3D坐标轴

      其中用法与2D相类似,著不过多出了Z轴

    rotateX(deg)//绕x轴旋转
    rotateY(deg)//绕y轴旋转
    rotateZ(deg)//绕z轴旋转
    transelateX();//与2D一致水平方向移动
    transelateY();//与2D一致竖直方向移动
    translateZ(z);//沿Z轴方向移动
    translate3d(x,y,z);//其中,x和y可以是长度值,也可以是百分比,百分比是相对于其本身元素水平方向的宽度和垂直方向的高度和;z只能设置长度值
    

    相关文章

      网友评论

          本文标题:CSS3过渡与transforms

          本文链接:https://www.haomeiwen.com/subject/xgyopqtx.html