HTML5 + CSS3 學習進階三

一、 認識 3D 轉換

  1. 3D 的特點
    • 近大遠小
    • 物體和面遮擋不可見
  2. 三維坐標系
    • x 軸:水平向右 -- 注意:x 軸右邊是正值,左邊是負值

    • y 軸:垂直向下 -- 注意:y 軸下面是正值,上面是負值

    • z 軸:垂直屏幕 -- 注意:往外邊的是正值,往里面的是負值

二、3D 轉換

  1. 3D 轉換知識要點

    • 3D 位移:translate3d(x, y, z)
    • 3D 旋轉:rotate3d(x, y, z)
    • 透視:perspctive
    • 3D呈現 transfrom-style
  2. 3D 移動 translate3d

  • 3D 移動就是在 2D 移動的基礎上多加了一個可以移動的方向,就是 z 軸方向
  • transform: translateX(100px):僅僅是在 x 軸上移動
  • transform: translateY(100px):僅僅是在 y 軸上移動
  • transform: translateZ(100px):僅僅是在 z 軸上移動
  • transform: translate3d(x, y, z):其中x、y、z 分別指要移動的軸的方向的距離
  • 注意:x, y, z 對應的值不能省略,不需要填寫用 0 進行填充
  1. 語法
 transform: translate3d(x, y, z)
  1. 代碼演示
transform: translate3d(100px, 100px, 100px)
/* 注意:x, y, z 對應的值不能省略,不需要填寫用 0 進行填充 */
transform: translate3d(100px, 100px, 0)

三、透視 perspective

  1. 知識點講解

    • 如果想要網頁產生 3D 效果需要透視(理解成 3D 物體投影的 2D 平面上)
    • 實際上模仿人類的視覺位置,可視為安排一直眼睛去看
    • 透視也稱為視距,所謂的視距就是人的眼睛到屏幕的距離
    • 距離視覺點越近的在電腦平面成像越大,越遠成像越小
    • 透視的單位是像素
  2. 知識要點

    • 透視需要寫在被視察元素的父盒子上面
    • 注意下方圖片
      • d:就是視距,視距就是指人的眼睛到屏幕的距離

      • z:就是 z 軸,z 軸越大(正值),我們看到的物體就越大

  1. 代碼演示

    body {
      perspective: 1000px;
    }
    

四、 translateZ

  1. translateZperspecitve 的區(qū)別
  • perspecitve 給父級進行設置,translateZ 給 子元素進行設置不同的大小

五、3D 旋轉rotateX

3D 旋轉指可以讓元素在三維平面內沿著 x 軸、y 軸、z 軸 或者自定義軸進行旋轉

  1. 語法

    • transform: rotateX(45deg) -- 沿著 x 軸正方向旋轉 45 度
    • transform: rotateY(45deg) -- 沿著 y 軸正方向旋轉 45 度
    • transform: rotateZ(45deg) -- 沿著 z 軸正方向旋轉 45 度
    • transform: rotate3d(x, y, z, 45deg) -- 沿著自定義軸旋轉 45 deg 為角度
  2. 代碼案例

div {
  perspective: 300px;
}

img {
  display: block;
  margin: 100px auto;
  transition: all 1s;
}

img:hover {
  transform: rotateX(-45deg)
}
  1. 左手準則

    • 左手的手拇指指向 x 軸的正方向

    • 其余手指的彎曲方向就是該元素沿著 x 軸旋轉的方向

六、3D 旋轉 rotateY

  1. 代碼演示
div {
  perspective: 500px;
}

img {
  display: block;
  margin: 100px auto;
  transition: all 1s;
}

img:hover {
  transform: rotateY(180deg)
}
  1. 左手準則

    • 左手的拇指指向 y 軸的正方向

    • 其余的手指彎曲方向就是該元素沿著 y 軸旋轉的方向(正值)

七、 3D 旋轉 rotateZ

  1. 代碼演示
div {
  perspective: 500px;
}

img {
  display: block;
  margin: 100px auto;
  transition: all 1s;
}

img:hover {
  transform: rotateZ(180deg)
}
  1. rotate3d
  • transform: rotate3d(x, y, z, deg) -- 沿著自定義軸旋轉 deg 為角度
  • x, y, z 表示旋轉軸的矢量,是標識你是否希望沿著該軸進行旋轉,最后一個標識旋轉的角度
    • transform: rotate3d(1, 1, 0, 180deg) -- 沿著對角線旋轉 45deg
    • transform: rotate3d(1, 0, 0, 180deg) -- 沿著 x 軸旋轉 45deg
  1. 代碼演示

    div {
      perspective: 500px;
    }
    
    img {
      display: block;
      margin: 100px auto;
      transition: all 1s;
    }
    
    img:hover {
      transform: rotate3d(1, 1, 0, 180deg)
    }
    

八、3D 呈現 transform-style

  1. transform-style
  - ☆☆☆☆☆

  -  控制子元素是否開啟三維立體環(huán)境
  - `transform-style: flat`  代表子元素不開啟 `3D` 立體空間,默認的
  - `transform-style: preserve-3d` 子元素開啟立體空間
  -  代碼寫給父級,但是影響的是子盒子
  1. 代碼演示

<!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>
        body {
            perspective: 500px;
        }
        
        .box {
            position: relative;
            width: 200px;
            height: 200px;
            margin: 100px auto;
            transition: all 2s;
            /* 讓子元素保持3d立體空間環(huán)境 */
            transform-style: preserve-3d;
        }
        
        .box:hover {
            transform: rotateY(60deg);
        }
        
        .box div {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: pink;
        }
        
        .box div:last-child {
            background-color: purple;
            transform: rotateX(60deg);
        }
    </style>
</head>

<body>
    <div class="box">
        <div></div>
        <div></div>
    </div>
</body>

</html>
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、什么是 HTML5 1.1 HTML5 的概念與定義 定義:HTML5 定義了 HTML 標準的最新版本,是...
    AizawaSayo閱讀 773評論 0 1
  • 第一部分:變形介紹 自層疊樣式表誕生以來,元素始終是矩形的,而且只能沿著橫軸和縱軸放置。有些技巧能讓元素看起來是傾...
    俠客有情劍無情QAQ閱讀 1,639評論 0 17
  • 看了很多視頻、文章,最后卻通通忘記了,別人的知識依舊是別人的,自己卻什么都沒獲得。此系列文章旨在加深自己的印象,因...
    DCbryant閱讀 1,963評論 0 4
  • 在介紹有關transform相關的知識之前,先來講一下transform-origin的用法以及關于角度的幾種取值...
    跪鍵盤的小泰迪閱讀 1,406評論 0 2
  • 一、 認識 3D 轉換 3D 的特點近大遠小物體和面遮擋不可見 三維坐標系x 軸:水平向右 -- 注意:x 軸右...
    王玉偉的偉閱讀 473評論 0 0

友情鏈接更多精彩內容