• CSS3中的2D和3D


    CSS3 transform 2D转换的属性与方法:

     

    代码

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 
     4 <head>
     5     <meta charset="UTF-8">
     6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     7     <title>Document</title>
     8     <style>
     9         .box {
    10              850px;
    11             height: 220px;
    12             border: 1px solid;
    13             margin: 200px auto;
    14         }
    15         
    16         .box>div {
    17             float: left;
    18              200px;
    19             height: 200px;
    20             margin-top: 10px;
    21             margin-left: 10px;
    22             background-color: #0f0;
    23             text-align: center;
    24             line-height: 200PX;
    25         }
    26         
    27         .box>div:nth-child(1):hover {
    28             /* transform: rotate(45deg); */
    29             /* transform: rotateX(45deg); */
    30             transform: rotateY(45deg);
    31             background-color: red;
    32         }
    33         
    34         .box>div:nth-child(2):hover {
    35             /* transform: translate(100px); */
    36             /* transform: translateX(-100px); */
    37             transform: translateY(100px);
    38             background-color: red;
    39         }
    40         
    41         .box>div:nth-child(3):hover {
    42             /* transform: scale(1.4); */
    43             /* transform: scaleX(0.5); */
    44             transform: scaleY(1.2);
    45             background-color: red;
    46         }
    47         
    48         .box>div:nth-child(4):hover {
    49             /* transform: skew(45deg); */
    50             /* transform: skewX(45deg); */
    51             transform: skewY(45deg);
    52             background-color: red;
    53         }
    54     </style>
    55 </head>
    56 
    57 <body>
    58     <div class="box">
    59         <div class="top">旋转</div>
    60         <div class="center">平移</div>
    61         <div class="nav">缩放</div>
    62         <div class="bottom">扭曲</div>
    63     </div>
    64 </body>
    65 
    66 </html>

    3d

    转换属性

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

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

    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 转换元素的透视视图。

    以上表可以看出三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,你们发现3D变形的功能和2D变换的功能相当类似,只是多了以下内容

    3D位移:CSS3中的3D位移主要包括translateZ()和translate3d()两个功能函数;
    3D旋转:CSS3中的3D旋转主要包括rotateX()、rotateY()、rotateZ()和rotate3d()四个功能函数;
    3D缩放:CSS3中的3D缩放主要包括scaleZ()和scale3d()两个功能函数;
    3D矩阵:CSS3中3D变形中和2D变形一样也有一个3D矩阵功能函数matrix3d()。

    backface-visibility

    backface-visibility属性决定元素旋转背面是否可见。对于未旋转的元素,该元素的正面面向观看者。当其Y轴旋转约180度时会导致元素的背面面对观众。

    backface-visibility属性使用语法:

    backface-visibility: visible | hidden

    该属性被设置为以下两个关键词之一:

     visible:为backface-visibility的默认值,表示反面可见
    hidden:表示反面不可见
    一个元素的可见性与“backface-visibility:hidden”决定如下:

    元素在3D环境下渲染上下文,将根据3D变形矩阵来计算,反之元素不在3D环境下渲染上下文,将根据2D变形矩阵来计算。

    如果组件的矩阵在第3行、3列是负值,那么元素反面是隐藏,反之是可见的。
    简单点来说,backface-visibility属性可用于隐藏内容的背面。默认情况下,背面可见,这意味着即使在翻转后,旋转的内容仍然可见。但当backface-visibility设置为hidden时,旋转后内容将隐藏,因为旋转后正面将不再可见。该功能可帮助您模拟多面的对象,例如下例中使用的纸牌。通过将backface-visibility设置为hidden,您可以轻松确保只有正面可见。

      1 <DOCTYPE html>
      2     <html lang="en">
      3 
      4     <head>
      5         <meta charset="UTF-8">
      6         <title>Document</title>
      7         <style type="text/css">
      8             * {
      9                 padding: 0;
     10                 margin: 0;
     11             }
     12             
     13             #wrap {
     14                 position: absolute;
     15                 left: 50%;
     16                 top: 50%;
     17                  400px;
     18                 height: 400px;
     19                 margin-left: -200px;
     20                 margin-top: -200px;
     21                 border: 1px solid;
     22                 perspective: 200px;
     23                 background: url(3.jpg) no-repeat;
     24                 background-size: 100% 100%;
     25             }
     26             
     27             #wrap>.box {
     28                  100px;
     29                 height: 100px;
     30                 position: absolute;
     31                 left: 0;
     32                 top: 0;
     33                 right: 0;
     34                 bottom: 0;
     35                 margin: auto;
     36                 transform-style: preserve-3d;
     37                 transition: 3s;
     38                 transform-origin: center center 50%;
     39             }
     40             
     41             #wrap>.box>div {
     42                 position: absolute;
     43                  100px;
     44                 height: 100px;
     45                 background: rgba(123, 321, 333, .3);
     46                 text-align: center;
     47                 font: 50px/100px "微软雅黑";
     48                 backface-visibility: hidden;
     49             }
     50             
     51             #wrap>.box>div:nth-child(5) {
     52                 top: -100px;
     53                 transform-origin: bottom;
     54                 transform: rotateX(90deg);
     55             }
     56             
     57             #wrap>.box>div:nth-child(6) {
     58                 bottom: -100px;
     59                 transform-origin: top;
     60                 transform: rotateX(-90deg);
     61             }
     62             
     63             #wrap>.box>div:nth-child(3) {
     64                 left: -100px;
     65                 transform-origin: right;
     66                 transform: rotateY(-90deg);
     67             }
     68             
     69             #wrap>.box>div:nth-child(4) {
     70                 right: -100px;
     71                 transform-origin: left;
     72                 transform: rotateY(90deg);
     73             }
     74             
     75             #wrap>.box>div:nth-child(2) {
     76                 transform: translateZ(-100px) rotateX(180deg);
     77             }
     78             
     79             #wrap>.box>div:nth-child(1) {
     80                 z-index: 1;
     81             }
     82             
     83             #wrap:hover .box {
     84                 transform: rotate3d(1, 1, 1, 180deg);
     85             }
     86         </style>
     87     </head>
     88 
     89     <body>
     90         <div id="wrap">
     91 
     92             <div class="box">
     93                 <div>前</div>
     94                 <div>后</div>
     95                 <div>左</div>
     96                 <div>右</div>
     97                 <div>上</div>
     98                 <div>下</div>
     99 
    100             </div>
    101 
    102         </div>
    103     </body>
    104 
    105     </html>

    转载:https://www.cnblogs.com/tyblwmbs/p/10909816.html

  • 相关阅读:
    互联网、云大数据相关书籍推荐
    育儿、教育书籍推荐
    MySQL客户端工具的选择
    解决Windows10或者其他版本Windows Update报错的问题
    启动Myeclipse报错“Failed to create the Java Virtual Machine”的解决办法
    mysql的日期存储字段比较int,datetime,timestamp区别
    nginx增加ssl服务方法
    mysql导入出现MySQL Error 1153
    mysql忘记密码修改方法
    清空本地ssh记录数据,ssh: connect to host Ip port 22: Connection refused
  • 原文地址:https://www.cnblogs.com/zycs/p/13831809.html
Copyright © 2020-2023  润新知