移動web第二天 空間轉(zhuǎn)換 動畫

一.空間轉(zhuǎn)換

1.目標(biāo):使用transform屬性實(shí)現(xiàn)元素在空間內(nèi)的位移腌零、旋轉(zhuǎn)、縮放等效果
2.空間:是從坐標(biāo)軸角度定義的唆阿。 x 益涧、y 和z三條坐標(biāo)軸構(gòu)成了一個立體空間,z軸位置與視線方向相同驯鳖。
空間轉(zhuǎn)換也叫3D轉(zhuǎn)換

3.屬性:transform
1.png

二.空間位移

1.目標(biāo):使用translate實(shí)現(xiàn)元素空間位移效果
2.語法:
transform: translate3d(x, y, z);
transform: translateX(值);
transform: translateY(值);
transform: translateZ(值);
3.取值:像素單位數(shù)值,百分比(正負(fù)均可)

    <title>空間位移</title>
    <style>
      .box {
        width: 200px;
        height: 200px;
        margin: 100px auto;
        background-color: skyblue;
        transition: all 0.5s;
      }

      .box:hover {
        /* Z軸的正方向?yàn)槠聊坏饺搜劬Φ姆较?*/
        /* 語法:transform: translateZ(); */

        /* 網(wǎng)頁默認(rèn)顯示是2d的闲询,看不到3d效果的 */
        /* transform: translateZ(300px); */
        transform: translate3d(100px,100px,300px);
      }
    </style>
  </head>

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

三.透視效果

1.目標(biāo):使用perspective屬性實(shí)現(xiàn)透視效果
2.默認(rèn)情況下,無法觀察到Z軸位移效果.因?yàn)?
Z軸是視線方向,移動效果應(yīng)該是距離的遠(yuǎn)或近浅辙, 電腦屏幕是平面扭弧,默認(rèn)無法觀察遠(yuǎn)近效果
3.屬性(添加給父級)
perspective: 值;

  1. 取值:像素單位數(shù)值, 數(shù)值一般在800 – 1200记舆。
    5.作用:空間轉(zhuǎn)換時鸽捻,為元素添加近大遠(yuǎn)小、近實(shí)遠(yuǎn)虛的視覺效果

    透視距離也稱為視距泽腮,所謂的視距就是人的眼睛到屏幕的距離泊愧。
    2.png
    <title>透視效果</title>
    <style>
      /* 透視,視距盛正,景深 設(shè)置給使用了3d元素的父元素(親爸爸) */
      body {
        /* pp給使用3D元素的最近一級父元素添加 */
        /* 添加視距 取值范圍:400~1200px pp */
        /* 視距:其實(shí)就是在取值的地方安排一只眼睛 */
        perspective: 800px;
      }
      .box {
        width: 200px;
        height: 200px;
        margin: 100px auto;
        background-color: skyblue;
        transition: all 0.5s;
      }

      .box:hover {
        /* 3d的元素:包含X,Y,Z軸 */
        transform: translateZ(200px);
      }
    </style>
  </head>

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

四.空間旋轉(zhuǎn)

1.目標(biāo):使用rotate實(shí)現(xiàn)元素空間旋轉(zhuǎn)效果
2.語法
transform: rotateZ(值);
transform: rotateX(值);
transform: rotateY(值);
3.左手法則:
判斷旋轉(zhuǎn)方向: 左手握住旋轉(zhuǎn)軸, 拇指指向正值方向, 手指彎曲方向?yàn)樾D(zhuǎn)正值方向


3.png

拓展
rotate3d(x, y, z, 角度度數(shù)) :用來設(shè)置自定義旋轉(zhuǎn)軸的位置及旋轉(zhuǎn)的角度
x删咱,y,z 取值為0-1之間的數(shù)字

       /* 順時針旋轉(zhuǎn) */
        transform: rotateZ(360deg);
        transform:  rotate(360deg);
        /* 逆時針旋轉(zhuǎn) */
        transform: rotateZ(-360deg);
        transform: rotate(-360deg);

盒子沿著Y軸旋轉(zhuǎn)90度,在空間中是一條線
立體空間中一個點(diǎn)和一條線是不占位置的 所以看不見

    <title>空間旋轉(zhuǎn)-Y軸</title>
    <style>
      body {
        background-color: #333;
      }
      .box {
        width: 200px;
        margin: 100px auto;
        /* 添加視距 */
        perspective: 800px;
      }

      img {
        width: 200px;
        transition: all 2s;
      }

      .box img:hover {
        /* 立體空間中一個點(diǎn)和一條線是不占位置的 所以看不見 */
        transform: rotateY(90deg);
      }
    </style>
  </head>
  <body>
    <div class="box">
      <img src="./images/pk1.png" alt="" />
    </div>
  </body>

沿著多條對稱軸旋轉(zhuǎn),屬性值用空格隔開

  /* 屬性值空格隔開 */
        transform: rotateX(60deg) rotateY(60deg) rotateZ(60deg);

五.立體呈現(xiàn)

1.目標(biāo): 使用transform-style: preserve-3d呈現(xiàn)立體圖形

思考:使用perspective透視屬性能否呈現(xiàn)立體圖形豪筝?
答:不能,perspective只增加近大遠(yuǎn)小痰滋、近實(shí)遠(yuǎn)虛的視覺效果。
3.實(shí)現(xiàn)方法
添加 transform-style: preserve-3d;屬性 使子元素處于真正的3d空間
4.呈現(xiàn)立體圖形步驟

  • 盒子父元素添加transform-style: preserve-3d续崖;
  • 按需求設(shè)置子盒子的位置(位移或旋轉(zhuǎn))
    5.空間內(nèi)敲街,轉(zhuǎn)換元素都有自已獨(dú)立的坐標(biāo)軸,互不干擾

六.3D導(dǎo)航

1.實(shí)現(xiàn)思路


4.png

2.代碼

<title>3D導(dǎo)航</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        li {
            list-style: none;
        }
        a {
            text-decoration: none;
        }
        .box {
            width: 300px;
            height: 40px;
            margin: 100px auto;    
            /* background-color: aqua;       */
        }
        .box li {
            width: 100px;
            /* 高度必須給,如果不給li的高度就是80,旋轉(zhuǎn)時默認(rèn)旋轉(zhuǎn)點(diǎn)是盒子的中心點(diǎn),會導(dǎo)致整個li盒子往下掉20px*/
            height: 40px;
            /* background-color: pink; */
            float: left;
            /* 添加過渡 */
            transition: 1s;
            /* 開啟3d */
            transform-style: preserve-3d;
            /* 上帝視角 */
            /* transform: rotateX(-20deg) rotateY(30deg); */
        }
        .box li a {
            display: block;
            width: 100px;
            height: 40px;
            background-color:orange;
            text-align: center;
            line-height: 40px;
            color: #fff;
        }
        .box li a:first-child {
            background-color:green;
            /* 2.綠色盒子沿著z軸正方向移動20px */
            transform: translateZ(20px);
        }
        .box li a:last-child {
            /* 1.橙色盒子往上走60px 然后沿著x軸正方向旋轉(zhuǎn)90° */
            transform: translateY(-60px) rotateX(90deg);
        }
        .box li:hover {
            /* 3.鼠標(biāo)懸停li 讓整個li沿著x軸負(fù)方向旋轉(zhuǎn)90度 */
            transform: rotateX(-90deg);
        }
       

    </style>
</head>
<body>
    <div class="box">
        <ul>
            <li>
                <a href="#">首頁</a>
                <a href="#">index</a>
            </li>
            <li>
                <a href="#">登錄</a>
                <a href="#">login</a>
            </li>
            <li>
                <a href="#">注冊</a>
                <a href="#">register</a>
            </li>
        </ul>
    </div>
</body>

七.動畫

1.目標(biāo):使用animation添加動畫效果
  • 動畫效果:實(shí)現(xiàn)多個狀態(tài)間的變化過程严望,動畫過程可控(重復(fù)播放多艇、最終畫面、是否暫停)
  • 動畫的本質(zhì)是快速切換大量圖片時在人腦中形成的具有連續(xù)性的畫面
  • 構(gòu)成動畫的最小單元:幀或動畫幀

2.動畫的實(shí)現(xiàn)步驟

2.1定義動畫
5.png
2.2使用動畫
6.png
 <title>動畫實(shí)現(xiàn)步驟</title>
    <style>
      /* 注意點(diǎn):
         1.動畫的名稱不能相同
         2.可參與過渡的css屬性都可參與動畫
         3.動畫名不能使用running
         4.如果調(diào)用該動畫的盒子樣式和初始狀態(tài)是一樣的,可省略不寫
       */

      .box1 {
        width: 200px;
        height: 100px;
        background-color: skyblue;
        /* 2.調(diào)用動畫 第一個參數(shù)是你定義的動畫名稱,第二個參數(shù)是動畫時長*/
        animation: change 2s;
      }

      /* 一. 定義動畫:讓寬度從200變大到600 */
      @keyframes change {
        /* 初始狀態(tài) */
        from{
          width: 200px;
        }
        /* 結(jié)束狀態(tài) */
        to{
          width: 600px;
        }
      }

      .box2 {
        width: 200px;
        height: 100px;
        background-color: tomato;
        /* 2.調(diào)用動畫 第一個參數(shù)是你定義的動畫名稱,第二個參數(shù)是動畫時長*/
        animation: move 2s;
      }

      /* 二. 定義動畫:200*100 到 500*300 到 800*500 */
      /* 1.定義動畫 百分比可以實(shí)現(xiàn)階段性的動畫 */
      /* 百分比定義,可以讓動畫擁有多個狀態(tài) */
      /* 百分比指的就是動畫執(zhí)行的某一點(diǎn) */
      @keyframes move {
        /* 初始狀態(tài) */
        /* 如果調(diào)用該動畫的盒子樣式和初始狀態(tài)是一樣的,可省略不寫 */
        0%{
          width: 200px;
          height: 100px;
        }
        /* 中間狀態(tài) */
        50%{
          width: 500px;
          height: 300px;
          border-radius: 50%;
          background-color: hotpink;
          border: 10px solid red;
        }
        /* 結(jié)束狀態(tài) */
        100%{
          width: 800px;
          height: 500px;
          background-color: green;
          margin-left: 100px;
        }
      }
    </style>
  </head>
  <body>
    <div class="box1"></div>
    <br />
    <br />
    <div class="box2"></div>
  </body>

注意點(diǎn):
1.動畫的名稱不能相同
2.可參與過渡的css屬性都可參與動畫
3.動畫名不能使用running
4.如果調(diào)用該動畫的盒子樣式和初始狀態(tài)是一樣的,可省略不寫

3.動畫的屬性

3.1目標(biāo):使用animation相關(guān)屬性控制動畫執(zhí)行過程
7.png

注意:

  • 動畫名稱和動畫時長必須賦值
  • 取值不分先后順序
  • 如果有2個時間值像吻,第一個時間表示動畫時長峻黍,第二個時間表示延遲時間
3.2屬性
8.png
3.3 補(bǔ)間動畫和逐幀動畫
  • 補(bǔ)間動畫:動畫執(zhí)行過程中,沒有間隔
    使用的速度曲線:默認(rèn)值為 ease; 勻速 linear
  • 逐幀動畫(精靈動畫):一步一步執(zhí)行動畫,中間會有間隔
    使用速度曲線:steps(正整數(shù))
    逐幀動畫通常配合精靈圖使用,又叫精靈動畫
    屬性:animation-timing-function: steps(N)复隆;
3.4使用animation屬性給一個元素添加多個動畫效果
9.png

小案例

<title>Document</title>
    <style>
        * {
            margin: 0;
            height: ;
            box-sizing: border-box;
        }
        .box {
            width: 140px;
            height: 140px;
            /* 插入背景圖片 */
            background: url(./images/bg.png);
            /* 調(diào)用動畫 */
            animation: run 1s steps(12) infinite, move 3s forwards linear;
        }

        /* 1.讓人物原地跑起來 */
        /* 精靈圖全部動作參與動畫,往左走圖片的寬度 */
        @keyframes run {
            to{
                background-position: -1680px 0;
            }
        }
        /* 2.讓盒子往右走700px */
        @keyframes move {
            to{
                transform: translate(700px);
            }
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市姆涩,隨后出現(xiàn)的幾起案子挽拂,更是在濱河造成了極大的恐慌,老刑警劉巖骨饿,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亏栈,死亡現(xiàn)場離奇詭異,居然都是意外死亡宏赘,警方通過查閱死者的電腦和手機(jī)绒北,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來察署,“玉大人镇饮,你說我怎么就攤上這事』福” “怎么了储藐?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嘶是。 經(jīng)常有香客問我钙勃,道長,這世上最難降的妖魔是什么聂喇? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任辖源,我火速辦了婚禮,結(jié)果婚禮上希太,老公的妹妹穿的比我還像新娘克饶。我一直安慰自己,他們只是感情好誊辉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布矾湃。 她就那樣靜靜地躺著,像睡著了一般堕澄。 火紅的嫁衣襯著肌膚如雪邀跃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天蛙紫,我揣著相機(jī)與錄音拍屑,去河邊找鬼。 笑死坑傅,一個胖子當(dāng)著我的面吹牛僵驰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蒜茴,長吁一口氣:“原來是場噩夢啊……” “哼星爪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起矮男,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎室谚,沒想到半個月后毡鉴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秒赤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年猪瞬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片入篮。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡陈瘦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出潮售,到底是詐尸還是另有隱情痊项,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布酥诽,位于F島的核電站鞍泉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏肮帐。R本人自食惡果不足惜咖驮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望训枢。 院中可真熱鬧托修,春花似錦、人聲如沸恒界。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽十酣。三九已至眯勾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間婆誓,已是汗流浹背吃环。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洋幻,地道東北人郁轻。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親好唯。 傳聞我的和親對象是個殘疾皇子竭沫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容