天天看点

【每日一练】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— 写一个​文本烟雾消失动画效果

继续阅读