爬行的蜗牛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: golang Linux PHP
查看: 132|回复: 0

纯CSS丝滑边框线条动画(附源码)

[复制链接]

152

主题

48

回帖

1137

积分

管理员

积分
1137
发表于 2024-11-23 16:59:35 | 显示全部楼层 |阅读模式
效果

111.gif

仅使用CSS实现一种丝滑的边框线条动画效果。关键的实现思路包括:

  • 透视效果:通过设置包含两个嵌套元素,父元素有1像素的padding,从而创建出边框效果。

  • 动画制作:创建一个绝对定位的子元素,使用animation属性让其沿着父元素的边框匀速移动。

  • 匀速动画:通过计算元素移动的路径和距离,调整关键帧百分比,确保动画匀速。

  • 圆角处理:为父元素和子元素添加圆角,并对动画元素进行位置调整,以适应圆角。

  • 动画优化:在圆角处调整动画轨迹,确保过渡自然流畅。

  • 模糊阴影:通过设置子元素的背景径向渐变和使用backdrop-filter属性添加模糊效果,实现阴影效果。


源码
  1. <!DOCTYPE html>
  2. <html lang="en">

  3. <head>
  4.   <meta charset="UTF-8">
  5.   <meta http-equiv="X-UA-Compatible" content="ie=edge">
  6.   <style>
  7.     body {
  8.       background: rgb(9, 9, 11);
  9.     }

  10.     .container {
  11.       position: relative;
  12.       width: 400px;
  13.       height: 200px;
  14.       margin: 50px;
  15.       /* 确保有足够空间显示动画 */
  16.       border-radius: 30px;
  17.       overflow: hidden;
  18.       padding: 1px;
  19.     }

  20.     .element {
  21.       background: rgba(9, 9, 11, 0.38);
  22.       border: 1px solid rgb(30, 41, 59);
  23.       width: 100%;
  24.       height: 100%;
  25.       border-radius: 30px;
  26.       -webkit-backdrop-filter: blur(24px);
  27.       backdrop-filter: blur(24px);
  28.       box-sizing: border-box;
  29.     }

  30.     .moving-element {
  31.       position: absolute;
  32.       top: 0;
  33.       left: 40px;
  34.       width: 80px;
  35.       height: 80px;
  36.       background-image: radial-gradient(#cbacf9 40%, transparent 80%);
  37.       border-radius: 40px;
  38.       animation: moveAround 8s linear infinite;
  39.       transform: translate(-40px, -40px);
  40.     }

  41.     @keyframes moveAround {
  42.       0% {
  43.         left: 40px;
  44.         top: 0px;
  45.       }

  46.       28.93% {
  47.         left: 360px;
  48.         top: 0px;
  49.       }

  50.       33.99% {
  51.         left: 400px;
  52.         top: 40px;
  53.       }

  54.       44.82% {
  55.         left: 400px;
  56.         top: 160px;
  57.       }

  58.       49.88% {
  59.         left: 360px;
  60.         top: 200px;
  61.       }

  62.       78.81% {
  63.         left: 40px;
  64.         top: 200px;
  65.       }

  66.       83.87% {
  67.         left: 0px;
  68.         top: 160px;
  69.       }

  70.       94.70% {
  71.         left: 0px;
  72.         top: 40px;
  73.       }

  74.       100% {
  75.         left: 40px;
  76.         top: 0px;
  77.       }
  78.     }
  79.   </style>
  80. </head>

  81. <body>
  82.   <div class="container">
  83.     <div class="moving-element"></div>
  84.     <div class="element"></div>
  85.   </div>
  86. </body>

  87. </html>
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表