手把手教你纯CSS实现一个望花筒特效

前言

前面介绍了那么多朴素无常的特效,这次带来一个炫酷的望花筒特效。望花筒特效是一种基于 CSS3 的特效,可以用来实现网页的动态背景效果。它是通过旋转、缩放、透明度等属性,将一组图片或内容按照一定的角度和速度旋转展示,形成一种类似望远镜或望花筒的效果。

效果预览

望花筒效果如下所示。

HTML实现

我们首先需要定义了一个圆形容器,然后在里面嵌套了 5span 元素。每个 span 元素都有一个 data-text 属性,其值为 "JueJin"。这些 span 元素实际上并没有显示任何内容,但可以通过 JavaScriptCSS 样式来控制它们的显示效果,这里我们会通过 CSS 样式将内容显示出来。

 <div class="circle">
        <span data-text="JueJin"></span>
        ......
 </div>

CSS实现

介绍完了 HTML 部分,现在来说说 CSS 部分。前面提到过,CSS 部分这里运用到旋转,缩放等属性。我们首先为圆形容器添加样式吧,实现一个基本的圆形,相关代码如下。

.circle{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    width: 1400px;
    height: 1400px;
    border-radius: 50%;
}

然后我们在 span 中添加相关自定义动画。

.circle span{
    ......
    animation: animate 5s cubic-bezier(.64, -0.56, .36, 1.56) infinite;
}

@keyframes animate {
    0%{
        transform: rotate(0deg);
    }
    80%,100%{
        transform: rotate(360deg);
    }
}

该动画表示的意思是,5s 表示动画执行时间为 5 秒,cubic-bezier(.64, -0.56, .36, 1.56) 表示动画执行的缓动函数,infinite 表示动画无限循环执行。具体来说,这个缓动函数会使得动画在开始时加速,然后在中间部分减速,最后再次加速,从而呈现一种生动的效果,具体效果可以参考码上掘金呈现出来的效果展示。

要想让每个圆形在视觉上以不同的速度旋转,还需要向 span 元素里添加 animation-delay 属性,该属性可以为动画设置延迟时间,相关代码如下。

.circle span:nth-child(1){
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    animation-delay: 0s;
}
.......

为每个 span 设置不同的延迟时间,这样就可以在不同的时间旋转,从而达到符合预期的效果。

最后,我们再通过伪元素 ::before 添加文本和伪元素 ::after 来添加阴影效果,使用 box-shadow 属性添加 4inset 阴影,分别在不同的深度和透明度下模拟出一个深度感和立体感强烈的阴影效果,相关代码如下。

.circle span::before{
    content: attr(data-text);
    ......
}

.circle span::after{
    ......
    box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.5),inset 0 0 75px rgba(0, 0, 0, 0.5),inset 0 0 100px rgba(0, 0, 0, 0.5),inset 0 0 125px rgba(0, 0, 0, 0.5);
}

这样望花筒特效就实现了。

总结

望花筒特效动态效果明显,更加炫酷,并且我们实现的这个效果代码简单易懂,容易实现和修改,可以通过调整旋转速度、角度、图片数量等参数,实现不同的效果。对于想在该特效上拓展的朋友们来说,它还可以与其他 CSS 特效、JavaScript 插件等组合使用,实现更复杂的效果。总之,望花筒特效是一种简单而实用的 CSS 特效。

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MY4dkJxJ' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片