CSS实现流动边框

【写在前面】

        咳咳,首先讲个题外话,原本我是做 C++/Qt 的,然而因为工作 ( 部分原因 ) 学起了前端。

        当然,这也并不意味着我会丢掉 C++/Qt/Qml 这些 ( 会接着更新 ),只是额外增加一些前端相关的文章而已。

        再者,也想着自己搭个网站 ( 或是博客 ),所以学学前端也是必然的。


【正文开始】

        目前学到了 CSS动画 这部分,按照我的习惯,肯定是要实现些好玩的东西。

        回想起王者里面很炫酷的头像框,大概这样:

        当然,王者这种用的是粒子特效,而我们只需仿一个效果即可。

        那么,如何用 CSS 实现一个简易版呢。

        开始,很容易想到的是四个 <div> 模拟四个方向的边框:

        想法很容易,结果实现起来相当复杂,直接 pass 掉。

        然后搜了下相关的实现,结果都不是很满意 ( 都很复杂 )。

        最终我还是找到一个类似的效果,思路很巧妙:

        沿着这个思路,联想到 CSS 中的标准盒模型,最后我实现的效果如下:

        其中头像图片如下( 上传到CSDN了 ): 

        全部代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            position: relative;
            width: 150px;
            height: 150px;
            margin: 100px auto;
            overflow: hidden;
            border-radius: 4px;
        }
        @keyframes rotate {
            to {
                transform: rotate(1turn);
            }
        }
        .under {
            position: relative;
            width: 0px;
            height: 0px;
            border-top: 200px solid yellow;
            border-right: 200px solid green;
            border-bottom: 200px solid red;
            border-left: 200px solid blueviolet;
            left: -125px;
            top: -125px;
            animation: rotate 2s linear infinite;
        }
        .box > span {
            position: absolute;
            top: 0px;
            margin: 8px;
            width: 134px;
            height: 134px;
            border-radius: 4px;
            background-size: cover;
            background-image: url(https://img-blog.csdnimg.cn/20201011132854978.jpg);
            background-color: white;
        }
        @keyframes rotate2 {
            to {
                transform: rotate(-1turn);
            }
        }
        .box .under2 {
            position: relative;
            width: 0px;
            height: 0px;
            border-top: 200px solid rgb(0, 255, 13);
            border-right: 200px solid rgb(45, 218, 203);
            border-bottom: 200px solid rgb(255, 106, 156);
            border-left: 200px solid rgb(251, 255, 26);
            left: -125px;
            top: -125px;
            animation: rotate2 2s linear infinite;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="under"></div>
        <span></span>
    </div>
    <div class="box">
        <div class="under2"></div>
        <span></span>
    </div>
</body>

</html>

        代码简单易懂,不需要过多的解释,简单的动画,配上一些小技巧,我对最终的效果相当满意


【结语】

        随着深入学习,越来越觉得前端是有相当有趣的( 也相当有难度 ),谁说前端简单啊喂!

  • 12
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦起丶

您的鼓励和支持是我创作最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值