zoukankan      html  css  js  c++  java
  • 过渡及2D与3D转换

    一.过渡

    什么是过渡(transition)?

    过渡(transition)是元素从一种样式逐渐改变为另一种的效果。

     1.要实现这一点,必须规定两项内容:   

    a.规定您希望把效果添加到哪个CSS属性上 ;  
     b.规定效果的时长 。
    格式:transition: width/(all) 2s;(注:当只需要width时就直接写width,如果需要过渡所有元素就可以使用all)   
    注:如果时长未规定,则不会有过渡效果,因为默认值是 0。  

    2.效果开始于指定的CSS属性改变值时。CSS属性改变的典型时间是鼠标指针位于元素上时:  

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .main{
                 500px;
                height: 500px;
                background: black;
                transition: all 2s;
            }
            .main:hover{
                 100px;
                height: 100px;
                background:yellow;
            }
        
        </style>
    </head>
    <body>
        <div class="main"></div>
    </body>
    </html>

    当指针移出元素时,它会逐渐变回原来的样式 。

    3. 多项改变      

    如需向多个样式添加过渡效果,请添加多个属性,由逗号隔开:  
    例如:transition: width 2s, height 2s, transform 2s;

    过渡属性

    下面的表格列出了所有的转换属性:

    1.transition:简写属性,用于在一个属性中设置四个过渡属性。
    2.transition-property:规定应用过渡的 CSS 属性的名称。
    3.transition-duration:定义过渡效果花费的时间。默认是 0。
    4.transition-timing-function:规定过渡效果的时间曲线。默认是 "ease"。
      设值:a.linear 以相同速度开始至结束的过渡效果
         b.ease-in以慢速开始的过渡效果
         c.ease慢速开始,然后变快,然后慢速结束的过渡效果
         d.ease-out以慢速结束的过渡效果
         e.ease-in-out以慢速开始和结束的过渡效果
    5.transition-delay:规定过渡效果何时开始。默认是 0。

    二.2D转换

    1.通过 translate() 方法,元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 位置参数:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
        div
    {
    margin:30px;
    200px;
    height:200px;
    background-color:yellow;
    transition: all 3s;
    border-radius: 100px 100px;
    
    }
    .div2{
        transform:translate(50px,60px);
       
    }
        </style>
    </head>
    <body>
        <div></div>
        <div class="div2"></div>
    </body>
    </html>
    

      transform: translate(50px,50px);(把元素从左侧移动 50 像素,从顶端移动 50 像素)

    2.通过 rotate() 方法,元素顺时针旋转给定的角度。允许负值,元素将逆时针旋转。

      

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
        div
    {
    margin:30px;
    200px;
    height:200px;
    background-color:yellow;
    transition: all 3s;
    border-radius: 100px 100px;
    
    }
    .div2{
         transform:rotate(30deg); 
       
    }
        </style>
    </head>
    <body>
        <div></div>
        <div class="div2"></div>
    </body>
    </html>
    

     transform: rotate(60deg);(把元素顺时针旋转 60 度。)

    3.通过 scale() 方法,元素的尺寸会增加或减少,根据给定的宽度(X 轴)和高度(Y 轴)参数:

      

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
        div
    {
    margin:30px;
    200px;
    height:200px;
    background-color:yellow;
    transition: all 3s;
    border-radius: 100px 100px;
    
    }
    .div2{
        transform: scale(2,2);
       
    }
        </style>
    </head>
    <body>
        <div></div>
        <div class="div2"></div>
    </body>
    </html>
    

      transform: scale(2,2);(把宽度转换为原始尺寸的 2 倍,把高度转换为原始高度的 2 倍。)

    4.通过 skew() 方法,元素翻转给定的角度,根据给定的水平线(X 轴)和垂直线(Y 轴)参数:

      

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
        div
    {
    margin:30px;
    200px;
    height:200px;
    background-color:yellow;
    transition: all 3s;
    border-radius: 100px 100px;
    
    }
    .div2{
        transform: skew(30deg,20deg);
       
    }
        </style>
    </head>
    <body>
        <div></div>
        <div class="div2"></div>
    </body>
    </html>
    

      

      transform: skew(60deg,60deg);(围绕 X 轴把元素翻转 60 度,围绕 Y 轴翻转 60 度)

    5.matrix() 方法把所有 2D 转换方法组合在一起。
    matrix() 方法需要六个参数,包含数学函数,允许您:旋转、缩放、移动以及倾斜元素。

    2D Transform 方法

    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 轴。
    skewY(angle) 定义2D倾斜转换,沿着 Y 轴。

    三.3D转换

    2D 转换与 3D 转换之间的不同之处:2D为平面旋转;3D为空间旋转 。

     转换属性
    下面列出了所有的转换属性:
    transform    向元素应用 2D 或 3D 转换。
    transform-origin    允许你改变被转换元素的位置。    
    transform-style    规定被嵌套元素如何在 3D 空间中显示。    
    perspective    规定 3D 元素的透视效果。    
    perspective-origin    规定 3D 元素的底部位置。    
    backface-visibility    定义元素在不面对屏幕时是否可见。 

    3D 转换方法
    matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n)    3D 转换,使用 16 个值的 4x4 矩阵。
    translate3d(x,y,z)         3D 转化。
    translateX(x)     3D 转化,仅使用用于 X 轴的值。
    translateY(y)     3D 转化,仅使用用于 Y 轴的值。
    translateZ(z)     3D 转化,仅使用用于 Z 轴的值。
    scale3d(x,y,z)     3D 缩放转换。
    scaleX(x)     3D 缩放转换,通过给定一个 X 轴的值。
    scaleY(y)     3D 缩放转换,通过给定一个 Y 轴的值。
    scaleZ(z)     3D 缩放转换,通过给定一个 Z 轴的值。
    rotate3d(x,y,z,angle)     3D 旋转。
    rotateX(angle)    沿 X 轴的 3D 旋转。
    rotateY(angle)    沿 Y 轴的 3D 旋转。
    rotateZ(angle)    沿 Z 轴的 3D 旋转。
    perspective(n)    3D 转换元素的透视视图。 perspective(透视距离):观察者距离Z轴原点的距离,设置该属性会制造透视效果。(perspective 属性只影响 3D 转换元素。)

     
    rotateX()方法
    通过 rotateX() 方法,元素围绕其 X 轴以给定的度数进行旋转。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style> 
            div
            {
            100px;
            height:75px;
            background-color:yellow;
            border:1px solid black;
            }
            .div2
            {
            transform:rotateX(150deg)
            }
            </style>
            </head>
            <body>
            <div>第一个div</div>
            <div class="div2">第二个div2</div>
            </body>
    </html>

    rotateY() 旋转
    通过 rotateY() 方法,元素围绕其 Y 轴以给定的度数进行旋转。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style> 
            div
            {
            100px;
            height:75px;
            background-color:yellow;
            border:1px solid black;
            }
            .div2
            {
            transform: rotateY(150deg);
            }
            </style>
            </head>
            <body>
            <div>第一个div</div>
            <div class="div2">第二个div2</div>
            </body>
    </html>
    
  • 相关阅读:
    java实现快速排序
    java实现简单回文算法
    HTML条件注释
    LeetCode 将有序数组转换为二叉搜索树
    LeetCode 有效的数独
    Leetcode 买卖股票的最佳时机 II
    模拟登陆163邮箱
    oracle 视图的相关操作
    oracle 约束类别
    软件测试用例知识点梳理
  • 原文地址:https://www.cnblogs.com/youwei716/p/11070773.html
Copyright © 2011-2022 走看看