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

資訊專欄INFORMATION COLUMN

前端每日實(shí)戰(zhàn):69# 視頻演示如何用純 CSS 創(chuàng)作一個(gè)單元素拋盒子的 loader

_ang / 1570人閱讀

摘要:源代碼下載每日前端實(shí)戰(zhàn)系列的全部源代碼請(qǐng)從下載代碼解讀定義,只有個(gè)元素居中顯示畫出一根木條用偽元素在其上畫出一個(gè)盒子讓圖案傾斜,形成盒子在坡上的效果接下來制作動(dòng)畫。

效果預(yù)覽

按下右側(cè)的“點(diǎn)擊預(yù)覽”按鈕可以在當(dāng)前頁面預(yù)覽,點(diǎn)擊鏈接可以全屏預(yù)覽。

https://codepen.io/comehope/pen/qKwXbx

可交互視頻

此視頻是可以交互的,你可以隨時(shí)暫停視頻,編輯視頻中的代碼。

請(qǐng)用 chrome, safari, edge 打開觀看。

https://scrimba.com/p/pEgDAM/cD96VUM

源代碼下載

每日前端實(shí)戰(zhàn)系列的全部源代碼請(qǐng)從 github 下載:

https://github.com/comehope/front-end-daily-challenges

代碼解讀

定義 dom,只有 1 個(gè)元素:

居中顯示:

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: teal;
}

畫出一根木條:

.loader {
    width: 6em;
    border-bottom: 0.25em solid white;
    font-size: 30px;
    border-radius: 0.125em;
}

用偽元素在其上畫出一個(gè)盒子:

.loader {
    position: relative;
}

.loader::before {
    content: "";
    position: absolute;
    width: 1em;
    height: 1em;
    border: 0.25em solid white;
    bottom: 0;
    left: 0.5em;
    border-radius: 0.25em;
}

讓圖案傾斜,形成盒子在坡上的效果:

.loader {
    transform: rotate(-45deg);
    left: 1em;
    top: 1em;
}

接下來制作動(dòng)畫。

讓盒子一步步爬坡,爬到坡頂再重爬:

.loader::before {
    animation: push 3s infinite;
}

@keyframes push {
    0% {
        transform: translateX(0);
    }
    
    20%, 25% {
        transform: translateX(1em);
    }

    40%, 45% {
        transform: translateX(2em);
    }

    60%, 65% {
        transform: translateX(3em);
    }

    80% {
        transform: translateX(0);
    }
}

增加盒子在爬坡的過程中的滾動(dòng)效果:

@keyframes push {
    0% {
        transform: translateX(0) rotate(0deg);
    }
    
    20%, 25% {
        transform: translateX(1em) rotate(calc(90deg * 1));
    }

    40%, 45% {
        transform: translateX(2em) rotate(calc(90deg * 2));
    }

    60%, 65% {
        transform: translateX(3em) rotate(calc(90deg * 3));
    }

    80% {
        transform: translateX(0) rotate(0deg);
    }
}

增加盒子在爬坡過程中的擬人效果:

@keyframes push {
    0% {
        transform: translateX(0) rotate(0deg);
    }

    5% {
        transform: translateX(0) rotate(-5deg);
    }
    
    20%, 25% {
        transform: translateX(1em) rotate(calc(90deg * 1 + 5deg));
    }

    30% {
        transform: translateX(1em) rotate(calc(90deg * 1 - 5deg));
    }

    40%, 45% {
        transform: translateX(2em) rotate(calc(90deg * 2 + 5deg));
    }

    50% {
        transform: translateX(2em) rotate(calc(90deg * 2 - 5deg));
    }

    60%, 65% {
        transform: translateX(3em) rotate(calc(90deg * 3 + 5deg));
    }

    70% {
        transform: translateX(3em) rotate(calc(90deg * 3 - 5deg));
    }

    80% {
        transform: translateX(0) rotate(-5deg);
    }
}

讓木條在箱子爬到接近頂點(diǎn)時(shí)做拋擲動(dòng)作:

.loader {
    animation: throw 3s infinite;
    transform-origin: 20%;
}

@keyframes throw {
    0%, 70%, 100% {
        transform: rotate(-45deg);
    }

    80% {
        transform: rotate(-135deg);
    }
}

增加盒子在爬到接近頂點(diǎn)時(shí)的掉落效果:

@keyframes push {
    70% {
        transform: translateX(3em) translateY(0) rotate(calc(90deg * 3 - 5deg)) scale(1);
        filter: opacity(1);
    }

    80% {
        transform: translateX(0) translateY(-5em) rotate(-5deg) scale(0);
        filter: opacity(0.5);
    }

    90% {
        transform: translateX(0) translateY(0) rotate(0deg) scale(0);
    }
}

最后,隱藏掉可能超出頁面的部分:

body {
    overflow: hidden;
}

大功告成!

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

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

相關(guān)文章

  • 前端每日實(shí)戰(zhàn)69# 視頻演示何用 CSS 創(chuàng)作一個(gè)元素盒子 loader

    摘要:源代碼下載每日前端實(shí)戰(zhàn)系列的全部源代碼請(qǐng)從下載代碼解讀定義,只有個(gè)元素居中顯示畫出一根木條用偽元素在其上畫出一個(gè)盒子讓圖案傾斜,形成盒子在坡上的效果接下來制作動(dòng)畫。 showImg(https://segmentfault.com/img/bVbc4IU?w=500&h=500); 效果預(yù)覽 按下右側(cè)的點(diǎn)擊預(yù)覽按鈕可以在當(dāng)前頁面預(yù)覽,點(diǎn)擊鏈接可以全屏預(yù)覽。 https://codepe...

    lvzishen 評(píng)論0 收藏0
  • 前端每日實(shí)戰(zhàn) 2018 年 7 月份項(xiàng)目匯總(共 29 個(gè)項(xiàng)目)

    摘要:過往項(xiàng)目年月份項(xiàng)目匯總共個(gè)項(xiàng)目年月份項(xiàng)目匯總共個(gè)項(xiàng)目年月份項(xiàng)目匯總共個(gè)項(xiàng)目年月份發(fā)布的項(xiàng)目前端每日實(shí)戰(zhàn)專欄每天分解一個(gè)前端項(xiàng)目,用視頻記錄編碼過程,再配合詳細(xì)的代碼解讀,是學(xué)習(xí)前端開發(fā)的活的參考書視頻演示如何用純創(chuàng)作一臺(tái)咖啡機(jī)視頻演示如何用 過往項(xiàng)目 2018 年 6 月份項(xiàng)目匯總(共 27 個(gè)項(xiàng)目) 2018 年 5 月份項(xiàng)目匯總(共 30 個(gè)項(xiàng)目) 2018 年 4 月份項(xiàng)目匯總(...

    ghnor 評(píng)論0 收藏0
  • 前端每日實(shí)戰(zhàn) 2018 年 7 月份項(xiàng)目匯總(共 29 個(gè)項(xiàng)目)

    摘要:過往項(xiàng)目年月份項(xiàng)目匯總共個(gè)項(xiàng)目年月份項(xiàng)目匯總共個(gè)項(xiàng)目年月份項(xiàng)目匯總共個(gè)項(xiàng)目年月份發(fā)布的項(xiàng)目前端每日實(shí)戰(zhàn)專欄每天分解一個(gè)前端項(xiàng)目,用視頻記錄編碼過程,再配合詳細(xì)的代碼解讀,是學(xué)習(xí)前端開發(fā)的活的參考書視頻演示如何用純創(chuàng)作一臺(tái)咖啡機(jī)視頻演示如何用 過往項(xiàng)目 2018 年 6 月份項(xiàng)目匯總(共 27 個(gè)項(xiàng)目) 2018 年 5 月份項(xiàng)目匯總(共 30 個(gè)項(xiàng)目) 2018 年 4 月份項(xiàng)目匯總(...

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

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

0條評(píng)論

閱讀需要支付1元查看
<