成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用css3實(shí)現(xiàn)骰子動(dòng)畫

legendaryedu / 1447人閱讀

摘要:思路骰子有個(gè)面,那么創(chuàng)建個(gè)為個(gè)面,然后用的旋轉(zhuǎn)屬性旋轉(zhuǎn)每個(gè)面到相應(yīng)位置,每個(gè)面里面的點(diǎn)使用絕對(duì)定位確實(shí)位置。骰子旋轉(zhuǎn)寫一個(gè)動(dòng)畫改變值。

思路:骰子有6個(gè)面,那么創(chuàng)建6個(gè)div為6個(gè)面,然后用css3的旋轉(zhuǎn)屬性旋轉(zhuǎn)每個(gè)面到相應(yīng)位置,每個(gè)面里面的點(diǎn)使用絕對(duì)定位確實(shí)位置。骰子旋轉(zhuǎn)寫一個(gè)動(dòng)畫改變r(jià)otate值。
效果預(yù)覽:https://leeseean.github.io/cs...。

結(jié)構(gòu)html:
css樣式:
        body {
            background-color: darkkhaki;
            perspective: 500px;
        }

        .diceWrap {
            position: relative;
            transform-style: preserve-3d;
            animation: roll infinite 10s; 
            width: 100px;
            height: 100px;
            left: 50%;
            top: 200px;
        }

        .diceWrap>.dice {
            width: 100px;
            height: 100px;
            border-radius: 10px;
            position: absolute;
            background-color: black;
            box-shadow: #D2D2D2 0px 0px 10px 0px inset;
        }
        .dice.dice1 {
            transform: translateZ(50px);
        }
        .dice.dice1.inner {
            transform: translateZ(49px);
        }

        .dice.dice2 {
            transform: rotateX(-180deg) translateZ(50px);
        }
        .dice.dice2.inner {
            transform: rotateX(-180deg) translateZ(49px);
        }

        .dice.dice3 {
            transform: rotateX(90deg) translateZ(50px);
        }
        .dice.dice3.inner {
            transform: rotateX(90deg) translateZ(49px);
        }

        .dice.dice4 {
            transform: rotateX(-90deg) translateZ(50px);
        }
        .dice.dice4.inner {
            transform: rotateX(-90deg) translateZ(49px);
        }

        .dice.dice5 {
            transform: rotateY(90deg) translateZ(50px);
        }
        .dice.dice5.inner {
            transform: rotateY(90deg) translateZ(49px);
        }

        .dice.dice6 {
            transform: rotateY(-90deg) translateZ(50px);
        }
        .dice.dice6.inner {
            transform: rotateY(-90deg) translateZ(49px);
        }

        .diceWrap>.dice>.dot {
            position: absolute;
            width: 20px;
            height: 20px;
            border-radius: 50%;
        }

        .diceWrap>.dice1>.dot {
            left: 50%;
            top: 50%;
            margin-left: -10px;
            margin-top: -10px;
            background-color: red;
        }

        .diceWrap>.dice2>.dot {
            background-color: orange;
        }

        .diceWrap>.dice2>.dot:nth-child(1) {
            left: 5%;
            top: 5%;
        }

        .diceWrap>.dice2>.dot:nth-child(2) {
            right: 5%;
            bottom: 5%;
        }

        .diceWrap>.dice3>.dot {
            background-color: yellow;
        }

        .diceWrap>.dice3>.dot:nth-child(1) {
            left: 5%;
            top: 5%;
        }

        .diceWrap>.dice3>.dot:nth-child(2) {
            left: 50%;
            top: 50%;
            margin-left: -10px;
            margin-top: -10px;
        }

        .diceWrap>.dice3>.dot:nth-child(3) {
            right: 5%;
            bottom: 5%;
        }

        .diceWrap>.dice4>.dot {
            background-color: green;
        }

        .diceWrap>.dice4>.dot:nth-child(1) {
            left: 5%;
            top: 5%;
        }

        .diceWrap>.dice4>.dot:nth-child(2) {
            left: 5%;
            bottom: 5%;
        }

        .diceWrap>.dice4>.dot:nth-child(3) {
            right: 5%;
            top: 5%;
        }

        .diceWrap>.dice4>.dot:nth-child(4) {
            right: 5%;
            bottom: 5%;
        }

        .diceWrap>.dice5>.dot {
            background-color: greenyellow;
        }

        .diceWrap>.dice5>.dot:nth-child(1) {
            left: 5%;
            top: 5%;
        }

        .diceWrap>.dice5>.dot:nth-child(2) {
            left: 5%;
            bottom: 5%;
        }

        .diceWrap>.dice5>.dot:nth-child(3) {
            left: 50%;
            top: 50%;
            margin-left: -10px;
            margin-top: -10px;
        }

        .diceWrap>.dice5>.dot:nth-child(4) {
            right: 5%;
            top: 5%;
        }

        .diceWrap>.dice5>.dot:nth-child(5) {
            right: 5%;
            bottom: 5%;
        }

        .diceWrap>.dice6>.dot {
            background-color: purple;
        }

        .diceWrap>.dice6>.dot:nth-child(1) {
            left: 5%;
            top: 5%;
        }

        .diceWrap>.dice6>.dot:nth-child(2) {
            left: 5%;
            bottom: 5%;
        }

        .diceWrap>.dice6>.dot:nth-child(3) {
            left: 5%;
            top: 50%;
            margin-top: -10px;
        }

        .diceWrap>.dice6>.dot:nth-child(4) {
            right: 5%;
            top: 5%;
        }

        .diceWrap>.dice6>.dot:nth-child(5) {
            right: 5%;
            top: 50%;
            margin-top: -10px;
        }

        .diceWrap>.dice6>.dot:nth-child(6) {
            right: 5%;
            bottom: 5%;
        }
        .diceWrap>.cover, .diceWrap>.inner {
            background: rgb(65,65,65);
            box-shadow: none;
        }
        .diceWrap>.cover {
            border-radius: 0;
            transform: translateZ(0px);
        }
        .diceWrap>.cover.x {
            transform: rotateY(90deg);
        }
        .diceWrap>.cover.z {
            transform: rotateX(90deg);
        }
        @keyframes roll {
            0% {
                -webkit-transform: rotate3d(1, 1, 1, 0deg) rotateY(0deg) scale3d(0.5, 0.5, 0.5);
                transform: rotate3d(1, 1, 1, 0deg) rotateY(0deg) scale3d(0.5, 0.5, 0.5);
            }
            50% {
                -webkit-transform: rotate3d(1, 1, 1, 360deg) rotateY(360deg) scale3d(1, 1, 1);
                transform: rotate3d(1, 1, 1, 360deg) rotateY(360deg) scale3d(1, 1, 1);
            }
            100% {
                -webkit-transform: rotate3d(1, 1, 1, 720deg) rotateY(720deg) scale3d(0.5, 0.5, 0.5);
                transform: rotate3d(1, 1, 1, 720deg) rotateY(720deg) scale3d(0.5, 0.5, 0.5);
            }
        } 
    
用js控制旋轉(zhuǎn)結(jié)果:
 //動(dòng)畫配置開始
    let diceWrap = document.querySelector(".diceWrap");
    //不同開獎(jiǎng)號(hào)碼的配置,不同數(shù)字代表不同開獎(jiǎng)結(jié)果
    let keyframes = {
        "1": [{
            transform: "rotate3d(1, 1, 1, 0deg) rotateX(-270deg) scale3d(1, 1, 1)"
        }, {
            transform: "rotate3d(1, 1, 1, 360deg) rotateX(90deg) scale3d(1, 1, 1)"
        }],
        "2": [{
            transform: "rotate3d(1, 1, 1, 0deg) rotateX(-90deg) scale3d(1, 1, 1)"
        }, {
            transform: "rotate3d(1, 1, 1, 360deg) rotateX(270deg) scale3d(1, 1, 1)"
        }],
        "3": [{
            transform: "rotate3d(1, 1, 1, 0deg) rotateY(0deg) scale3d(1, 1, 1)"
        }, {
            transform: "rotate3d(1, 1, 1, 360deg) rotateY(360deg) scale3d(1, 1, 1)"
        }],
        "4": [{
            transform: "rotate3d(1, 1, 1, 0deg) rotateX(-180deg) scale3d(1, 1, 1)"
        }, {
            transform: "rotate3d(1, 1, 1, 360deg) rotateX(180deg) scale3d(1, 1, 1)"
        }],
        "5": [{
            transform: "rotate3d(1, 1, 1, 0deg) rotateZ(-90deg) scale3d(1, 1, 1)"
        }, {
            transform: "rotate3d(1, 1, 1, 360deg) rotateZ(270deg) scale3d(1, 1, 1)"
        }],
        "6": [{
            transform: "rotate3d(1, 1, 1, 0deg) rotateZ(-270deg) scale3d(1, 1, 1)"
        }, {
            transform: "rotate3d(1, 1, 1, 360deg) rotateZ(90deg) scale3d(1, 1, 1)"
        }]
    }
    let animationConfig = {
        duration: 200,
        iterations: 10,
        fill: "forwards", //當(dāng)動(dòng)畫完成后,保持最后一個(gè)屬性值(在最后一個(gè)關(guān)鍵幀中定義)
    };
    //動(dòng)畫配置結(jié)束
    //旋轉(zhuǎn)函數(shù)
    function roll(number) {
        let timeout = null;
        let diceAnimate = diceWrap.animate(
            keyframes[number],
            animationConfig
        );
        let startTime = new Date().getTime();

        function playbackRate() {
            diceAnimate.playbackRate *= 0.93;
            timeout = setTimeout(playbackRate, 200);
            if (diceAnimate.playbackRate <= 0.3) {
                console.log(12222)
                clearTimeout(timeout);
            }
        }
        playbackRate();
    }
項(xiàng)目github地址

https://github.com/leeseean/c...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/112344.html

相關(guān)文章

  • 用animation的steps屬性制作幀動(dòng)畫

    摘要:于是我順著他的思路,用上了在中的屬性。修改效果如下但是這都不是我們需要的效果,因?yàn)閹瑒?dòng)畫的關(guān)鍵在于瞬變。在的中,有一個(gè)屬性。表示將動(dòng)畫分為幀。這個(gè)位置變化沒有過渡效果,這就是的特點(diǎn)階躍性?! ∽蛱旎鸺被鹆堑亟拥揭粋€(gè)任務(wù),說是要做一個(gè)擲骰子的游戲,關(guān)于擲骰子期間的過渡動(dòng)畫,我本來是想用css 3d制作一個(gè)立體的骰子,然后叫UI給6張平面圖貼上去。再用translate3d來操作。然而UI考慮得...

    googollee 評(píng)論0 收藏0
  • 用animation的steps屬性制作幀動(dòng)畫

    摘要:于是我順著他的思路,用上了在中的屬性。修改效果如下但是這都不是我們需要的效果,因?yàn)閹瑒?dòng)畫的關(guān)鍵在于瞬變。在的中,有一個(gè)屬性。表示將動(dòng)畫分為幀。這個(gè)位置變化沒有過渡效果,這就是的特點(diǎn)階躍性。 昨天火急火燎地接到一個(gè)任務(wù),說是要做一個(gè)擲骰子的游戲,關(guān)于擲骰子期間的過渡動(dòng)畫,我本來是想用css 3d制作一個(gè)立體的骰子,然后叫UI給6張平面圖貼上去。再用translate3d來操作。然而UI考慮得十...

    zhichangterry 評(píng)論0 收藏0
  • 用animation的steps屬性制作幀動(dòng)畫

    摘要:于是我順著他的思路,用上了在中的屬性。修改效果如下但是這都不是我們需要的效果,因?yàn)閹瑒?dòng)畫的關(guān)鍵在于瞬變。在的中,有一個(gè)屬性。表示將動(dòng)畫分為幀。這個(gè)位置變化沒有過渡效果,這就是的特點(diǎn)階躍性。 昨天火急火燎地接到一個(gè)任務(wù),說是要做一個(gè)擲骰子的游戲,關(guān)于擲骰子期間的過渡動(dòng)畫,我本來是想用css 3d制作一個(gè)立體的骰子,然后叫UI給6張平面圖貼上去。再用translate3d來操作。然而UI考慮得十...

    GT 評(píng)論0 收藏0
  • 用animation的steps屬性制作幀動(dòng)畫

    摘要:于是我順著他的思路,用上了在中的屬性。修改效果如下但是這都不是我們需要的效果,因?yàn)閹瑒?dòng)畫的關(guān)鍵在于瞬變。在的中,有一個(gè)屬性。表示將動(dòng)畫分為幀。這個(gè)位置變化沒有過渡效果,這就是的特點(diǎn)階躍性。 昨天火急火燎地接到一個(gè)任務(wù),說是要做一個(gè)擲骰子的游戲,關(guān)于擲骰子期間的過渡動(dòng)畫,我本來是想用css 3d制作一個(gè)立體的骰子,然后叫UI給6張平面圖貼上去。再用translate3d來操作。然而UI考慮得十...

    xuxueli 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<