likes
comments
collection
share

『 禁止吸烟🚭』纯 CSS 实现 | 禁烟也能做的这么酷炫

作者站长头像
站长
· 阅读数 22

前言

老婆之前说,如果我抽烟,当初就不会要我,幸好我是一个对烟味极度厌恶的人,虽然曾经年少无知也玩过几根烟,但是对于烟味的排斥致使我最终没有在抽烟的道路上一去不复返,今天就给大家分享一个由纯 CSS 实现的 3D 禁烟效果,希望人人都能拒绝烟草,还我们一个清新的世界。

我们先来看一下最终的效果,具体如下图所示:

『 禁止吸烟🚭』纯 CSS 实现 | 禁烟也能做的这么酷炫

基础布局

首先还是先搭建相关的 html 代码,将基础的架子搭建起来,代码如下:

<div class="container">
    <div class="cigarette">
        <span><i>Nooooooo</i>Smooooooooking<i>|</i></span>
    </div>
</div>

基础的代码很简单,通过 span 标签和 i 标签生成烟头和烟蒂,然后我们需要添加相关的 CSS 样式,让整个效果清晰明了起来,相关的 CSS 如下:

*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: Arial, Helvetica, sans-serif;
}
body {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    background-color: #222;
}
.container {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    .cigarette {
        transform-style: preserve-3d;
        span {
            position: absolute;
            color: #fff;
            font-size: 1.35em;
            font-weight: 700;
            text-transform: uppercase;
            line-height: .76em;
            text-shadow: 0 2px 5px rgba(0, 0, 0, .25);
            transform: translate(-50%, -50%);
            background: rgba(0, 0, 0, .25);
            transform-style: preserve-3d;
            i {
                font-style: normal;
                color: #ec9535;
                &:first-child {
                    &::after {
                        content: 'L';
                        color: #ccc;
                        text-transform: lowercase;
                    }
                }
                &:last-child {
                    color: red;
                    filter: blur(2px);
                    text-shadow: -4px 0 2px #000,
                    8px 0 20px #f00,
                    8px 0 24px #f00,
                    8px 0 0 #222,
                    12px 0 #555,
                    16px 0 #666,
                    20px 0 #888,
                    24px 0 #999;
                }
            }
        }
    }
}

通过给 span 标签和 i 标签添加相关的样式,最终实现的效果如下图所示:

『 禁止吸烟🚭』纯 CSS 实现 | 禁烟也能做的这么酷炫

这里我们看到了一个平面的禁止吸烟的效果,要实现 3D 的效果,就需要添加更多的 span 标签,因此我们的 html 代码需要进行更新,代码如下:

<div class="container">
    <div class="cigarette">
        <span><i>Nooooooo</i>Smooooooooking<i>|</i></span>
        <span><i>Nooooooo</i>Smooooooooking<i>|</i></span>
        <span><i>Nooooooo</i>Smooooooooking<i>|</i></span>
        <span><i>Nooooooo</i>Smooooooooking<i>|</i></span>
        <span><i>Nooooooo</i>Smooooooooking<i>|</i></span>
        <span><i>Nooooooo</i>Smooooooooking<i>|</i></span>
        <span><i>Nooooooo</i>Smooooooooking<i>|</i></span>
        <span><i>Nooooooo</i>Smooooooooking<i>|</i></span>
        <span><i>Nooooooo</i>Smooooooooking<i>|</i></span>
        <span><i>Nooooooo</i>Smooooooooking<i>|</i></span>
    </div>
</div>

上述的基础布局完成后,接下来就需要让这个禁烟效果变成 3D 立体的,并且能够实现自动旋转。

旋转的 3D NoSmoking

布局和相关的基础样式已经完成了,但是现在这个效果还是平面的,我们需要将它转变为 3D 效果,那该如何实现呢?其实也不难,还记得前面的文章中介绍的 var 属性吗?我们可以在每个 span 的样式中添加相关的数字属性,然后再通过 CSSvar 属性来获取相关的数字,并添加对于的旋转角度即可,修改 html 代码如下:

<span style="--i:1"><i>Nooooooo</i>Smooooooooking<i>|</i></span>
...
<span style="--i:10"><i>Nooooooo</i>Smooooooooking<i>|</i></span>

接下来只需要再给 span 标签添加一个旋转属性,它就能变成立体 3D 效果,相关 CSS 样式如下:

span {
    //...other code
    transform: translate(-50%, -50%) rotateX(calc(var(--i) * 36deg)) translateZ(25px);
}

在原有的 transform 属性中,添加一个 rotateX 属性,它的值就根据前面在 span 标签中设置的 --i 来获取,最终实现的立体效果如下图所示:

『 禁止吸烟🚭』纯 CSS 实现 | 禁烟也能做的这么酷炫

到这里,还需要最后一步,就是让整个效果动起来,只需要使用 CSS3 中的 animation 属性即可,配合 @keyframes 关键词创建相关动画帧,就可以使整个效果动起来了,相关 CSS 代码如下:

// ...other code
.cigarette {
    transform-style: preserve-3d;
    animation: animate 15s linear infinite;
    
    ... other code
}

@keyframes animate {
    0% {
        transform: perspective(1000px) rotateX(0deg);
    }
    100% {
        transform: perspective(1000px) rotateX(360deg);
    }
}

在上述的动画帧中,我们设置了从 0%100% 的动画效果,将整个视口设置为 1000px,并且旋转水平坐标轴,最终的实现效果可以在这里进行查看

最后

我们通过 CSS3animation 属性和 transform 属性实现了一个 3D 的禁烟效果,同时,吸烟有害健康,为了我们自己的人身健康以及家人的健康,请不要吸烟🚭。

最后,如果这篇文章有帮助到你,❤️关注+点赞❤️鼓励一下作者,谢谢大家

往期回顾

送你一个可爱的大圆脸😁,速来~

这么炫酷的 3D Menu 效果,真的不来看看?

产品经理:你这个效果不行,我想要一个五彩斑斓的黑!我:。。。

转载自:https://juejin.cn/post/7144602974759682084
评论
请登录