天天看點

【每日一練】57— 寫一個​文本煙霧消失動畫效果

【每日一練】57— 寫一個​文本煙霧消失動畫效果

今天練習一個JavaScript實作的文本動畫效果,效果很有趣,如果對于有閱讀“困難症”,把這個效果應用在上面,是不是會比較友好一點,閱讀過的内容,都消失了,剩下就是沒有閱讀的内容,如果還想繼續閱讀前面消失的内容,隻要再次點選任意空白處,内容就全部回來了,這樣給閱讀帶來了一些樂趣。

當然,這個隻是我的一個設想,對于真正熱愛閱讀的人,不需要這樣,因為這樣做會妨礙他的閱讀注意力。

好了,不做假設了,具體每一個效果應用在什麼地方,都會有一定規則,現在,我們還是一起來看一下今天練習的最終效果:

【每日一練】57— 寫一個​文本煙霧消失動畫效果

下面我們再來看具體的實作代碼。

HTML代碼:

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>【每日一練】57— 寫一個文本煙霧消失動畫效果</title>
    </head>
    <body>
        <section>
            <p class="text">消費型思維與投資型思維的人,
                消費型思維的人,看重的是買買買的本身,投資型思維的人,買買買隻是第一步,買買買後面的投資回報才是重點。
                消費型思維與投資型思維的人,
                消費型思維的人,看重的是買買買的本身,
                投資型思維的人,買買買隻是第一步,
                買買買後面的投資回報才是重點。</p>
        </section>
      <script>
            const text = document.querySelector('.text');
            text.innerHTML = text.textContent.replace(/\S/g,"<span>$&</span>");


            const letters = document.querySelectorAll('span');
            for (let i=0; i<letters.length; i++){
                letters[i].addEventListener("mouseover", function(){
                    letters[i].classList.add('active')
                })
            }
</script>
    </body>
</html>      

CSS代碼:

*
{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: 'Roboto', sans-serif;
}
section
{
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    background: #111;
    overflow: hidden;
}
section .text
{
    position: relative;
    color: #fff;
    margin: 40px;
    max-width: 800px;
    user-select: none;
    font-size: 1.5em;
    line-height:1.8em;
    letter-spacing:5px;
}
section .text span
{
    position: relative;
    display: inline-block;
    cursor: pointer;
}
section .text span.active
{
    animation: smoke 2s linear forwards;
    transform-origin: bottom;
}
@keyframes smoke
{
    0%
    {
        opacity: 1;
        filter: blur(0);
        transform: translateX(0) translateY(0) rotate(0deg) scale(1);
    }
    50%
    {
        opacity: 1;
        pointer-events: none;
    }
    100%
    {
        opacity: 0;
        filter: blur(20px);
        transform: translateX(300px) translateY(-300px) rotate(720deg) scale(4);
    }
}      

寫在最後

以上就是今天【每日一練】的全部内容,希望今天的小練習對你有用,如果你覺得有幫助的話,請點贊我,并将它分享給你身邊做開發的朋友,也許能夠幫助到他。

我是楊小愛,我們明天見。

【每日一練】57— 寫一個​文本煙霧消失動畫效果

繼續閱讀