日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > CSS >内容正文

CSS

十五、CSS 3新特性详解(三)——3D转换(位移、旋转、呈现)、透视perspective、旋转rotateX、Y、Z、呈现transform-style

發(fā)布時(shí)間:2024/7/5 CSS 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十五、CSS 3新特性详解(三)——3D转换(位移、旋转、呈现)、透视perspective、旋转rotateX、Y、Z、呈现transform-style 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

HTML5 第三天

一、 認(rèn)識(shí) 3D 轉(zhuǎn)換
  • 3D 的特點(diǎn)
    • 近大遠(yuǎn)小
    • 物體和面遮擋不可見
  • 三維坐標(biāo)系
    • x 軸:水平向右 – 注意:x 軸右邊是正值,左邊是負(fù)值

    • y 軸:垂直向下 – 注意:y 軸下面是正值,上面是負(fù)值

    • z 軸:垂直屏幕 – 注意:往外邊的是正值,往里面的是負(fù)值


  • ?

    二、3D 轉(zhuǎn)換
  • 3D 轉(zhuǎn)換知識(shí)要點(diǎn)

    • 3D 位移:translate3d(x, y, z)
    • 3D 旋轉(zhuǎn):rotate3d(x, y, z)
    • 透視:perspctive
    • 3D呈現(xiàn) transfrom-style
  • 3D 移動(dòng) translate3d

    • 3D 移動(dòng)就是在 2D 移動(dòng)的基礎(chǔ)上多加了一個(gè)可以移動(dòng)的方向,就是 z 軸方向
    • transform: translateX(100px):僅僅是在 x 軸上移動(dòng)
    • transform: translateY(100px):僅僅是在 y 軸上移動(dòng)
    • transform: translateZ(100px):僅僅是在 z 軸上移動(dòng)
    • transform: translate3d(x, y, z):其中x、y、z 分別指要移動(dòng)的軸的方向的距離
    • 注意:x, y, z 對(duì)應(yīng)的值不能省略,不需要填寫用 0 進(jìn)行填充
  • 語(yǔ)法
  • transform: translate3d(x, y, z)
  • 代碼演示
  • transform: translate3d(100px, 100px, 100px) /* 注意:x, y, z 對(duì)應(yīng)的值不能省略,不需要填寫用 0 進(jìn)行填充 */ transform: translate3d(100px, 100px, 0) <!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: 200px;}div {width: 200px;height: 200px;background-color: pink;/* transform: translateX(100px);transform: translateY(100px); *//* transform: translateX(100px) translateY(100px) translateZ(100px); *//* 1. translateZ 沿著Z軸移動(dòng) *//* 2. translateZ 后面的單位我們一般跟px *//* 3. translateZ(100px) 向外移動(dòng)100px (向我們的眼睛來(lái)移動(dòng)的) *//* 4. 3D移動(dòng)有簡(jiǎn)寫的方法 *//* transform: translate3d(x,y,z); *//* transform: translate3d(100px, 100px, 100px); *//* 5. xyz是不能省略的,如果沒有就寫0 */transform: translate3d(400px, 100px, 100px);}</style> </head><body><div></div> </body></html>
    三、透視 perspective
  • 知識(shí)點(diǎn)講解

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

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

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


  • ?

  • 代碼演示

    body {perspective: 1000px; }
  • 四、 translateZ
  • translateZ 與 perspecitve 的區(qū)別
    • perspecitve 給父級(jí)進(jìn)行設(shè)置,translateZ 給 子元素進(jìn)行設(shè)置不同的大小
    五、3D 旋轉(zhuǎn)rotateX

    3D 旋轉(zhuǎn)指可以讓元素在三維平面內(nèi)沿著 x 軸、y 軸、z 軸 或者自定義軸進(jìn)行旋轉(zhuǎn)

  • 語(yǔ)法

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

  • div {perspective: 300px; }img {display: block;margin: 100px auto;transition: all 1s; }img:hover {transform: rotateX(-45deg) }
  • 左手準(zhǔn)則

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

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


  • ?

    六、3D 旋轉(zhuǎn) rotateY
  • 代碼演示
  • div {perspective: 500px; }img {display: block;margin: 100px auto;transition: all 1s; }img:hover {transform: rotateY(180deg) }
  • 左手準(zhǔn)則

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

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

      ?

  • 七、 3D 旋轉(zhuǎn) rotateZ
  • 代碼演示
  • div {perspective: 500px; }img {display: block;margin: 100px auto;transition: all 1s; }img:hover {transform: rotateZ(180deg) }
  • rotate3d
    • transform: rotate3d(x, y, z, deg) – 沿著自定義軸旋轉(zhuǎn) deg 為角度
    • x, y, z 表示旋轉(zhuǎn)軸的矢量,是標(biāo)識(shí)你是否希望沿著該軸進(jìn)行旋轉(zhuǎn),最后一個(gè)標(biāo)識(shí)旋轉(zhuǎn)的角度
      • transform: rotate3d(1, 1, 0, 180deg) – 沿著對(duì)角線旋轉(zhuǎn) 45deg
      • transform: rotate3d(1, 0, 0, 180deg) – 沿著 x 軸旋轉(zhuǎn) 45deg
  • 代碼演示

    div {perspective: 500px; }img {display: block;margin: 100px auto;transition: all 1s; }img:hover {transform: rotate3d(1, 1, 0, 180deg) }
    八、3D 呈現(xiàn) transform-style
  • transform-style
    • ☆☆☆☆☆

    • 控制子元素是否開啟三維立體環(huán)境

    • transform-style: flat 代表子元素不開啟 3D 立體空間,默認(rèn)的

    • transform-style: preserve-3d 子元素開啟立體空間

    • 代碼寫給父級(jí),但是影響的是子盒子

  • 代碼演示
  • <!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>

    案例一:兩面翻轉(zhuǎn)的盒子

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>2面翻轉(zhuǎn)的盒子</title><style type="text/css">body {perspective: 450px;}.box {position: relative;width: 200px;height: 200px; border: 1px solid #ccc;margin: 200px auto;transition: all 2s;/* 讓背面的紫色盒子保留立體空間 給父級(jí)添加的 */transform-style: preserve-3d;}.box:hover {transform: rotateY(180deg);}.front,.back {position: absolute;width: 100%;height: 100%;border-radius: 50%;top: 0;left: 0; color: #fff;font-size: 30px;text-align: center;line-height: 200px;}.front {background-color: pink;z-index: 1;}.back {background-color: mediumpurple;/* 像手機(jī)一樣 背靠背 旋轉(zhuǎn) */transform: rotateY(180deg);}</style></head><body><div class="box"><div class="front">前端</div><div class="back">后端</div></div></body> </html>

    案例二:3D導(dǎo)航欄

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>3D導(dǎo)航欄</title><style type="text/css">ul {height: 50px;}ul li {float: left;list-style: none;margin: 0 10px;/* 一會(huì)我們需要給box 旋轉(zhuǎn) 也需要透視 干脆給li加 里面的子盒子都有透視效果 */perspective: 400px;}.box {position: relative;width: 200px;height: 50px;margin: 200px auto;transform-style: preserve-3d;transition: all 0.6s;}.box:hover {transform: rotateX(90deg);}.box .front,.box .bottom {position: absolute;top: 0;left: 0;width: 100%;height: 100%;background-color: pink;text-align: center;line-height: 50px;}.box .front {z-index: 1;transform: translateZ(25px);}.box .bottom {background-color: paleturquoise;/* 如果既要移動(dòng)又要寫其他樣式,則必須把移動(dòng)寫在最前面! *//* 這個(gè)x軸一定是負(fù)值 *//* 我們?nèi)绻幸苿?dòng) 或者其他樣式,必須先寫我們的移動(dòng) */transform: translateY(50%) rotateX(-90deg);}</style></head><body><ul><li><div class="box"><div class="front">前端</div><div class="bottom">后端</div></div></li><li><div class="box"><div class="front">前端</div><div class="bottom">后端</div></div></li><li><div class="box"><div class="front">前端</div><div class="bottom">后端</div></div></li><li><div class="box"><div class="front">前端</div><div class="bottom">后端</div></div></li><li><div class="box"><div class="front">前端</div><div class="bottom">后端</div></div></li></ul></body> </html>

    案例三:旋轉(zhuǎn)木馬效果

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>旋轉(zhuǎn)木馬</title><style type="text/css">body {perspective: 1000px;}@keyframes rotates{0% {transform: rotateY(0);}100% {transform: rotateY(360deg);}}section {position: relative;width: 300px;height: 200px;margin: 150px auto; transform-style: preserve-3d;/* 添加動(dòng)畫效果 */animation: rotates 10s linear infinite; background: url(img/pig.jpg) no-repeat;}/* 鼠標(biāo)移動(dòng)到section上時(shí),停止動(dòng)畫 */section:hover {animation-play-state: paused;}section div {position: absolute;top: 0;left: 0;width: 100%;height: 100%;background: url(./img/dog.jpg) no-repeat; }div:first-child {transform: rotateY(0deg) translateZ(300px);}div:nth-child(2) {/* 先旋轉(zhuǎn)好了再移動(dòng)距離 */transform: rotateY(60deg) translateZ(300px);}div:nth-child(3) {/* 先旋轉(zhuǎn)好了再移動(dòng)距離 */transform: rotateY(120deg) translateZ(300px);}div:nth-child(4) {/* 先旋轉(zhuǎn)好了再移動(dòng)距離 */transform: rotateY(180deg) translateZ(300px);}div:nth-child(5) {/* 先旋轉(zhuǎn)好了再移動(dòng)距離 */transform: rotateY(240deg) translateZ(300px);}div:nth-child(6) {/* 先旋轉(zhuǎn)好了再移動(dòng)距離 */transform: rotateY(300deg) translateZ(300px);}</style></head><body><section><div></div><div></div><div></div><div></div><div></div><div></div></section></body> </html>

    瀏覽器的私有前綴:

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的十五、CSS 3新特性详解(三)——3D转换(位移、旋转、呈现)、透视perspective、旋转rotateX、Y、Z、呈现transform-style的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。