CSS 渐变边框及动画

转载请注明出处,点击此处 查看更多精彩内容

用 CSS 实现渐变边框及动画,下面对关键点进行解释说明,查看完整代码及预览效果请 点击这里

简单说明原理:使用伪元素 ::before 绘制一个渐变色,然后使用伪元素 ::after 绘制背景,使其遮住渐变色的一部分,仅保留边框部分,然后添加旋转动画即可。

DOM 结构

html 复制代码
<div class="container"></div>
css 复制代码
.container {
  border-radius: var(--border-radius);
  overflow: hidden;
}

overflow: hidden 防止内部元素溢出。

渐变背景

使用 ::before 伪元素实现一个径向渐变背景。

css 复制代码
.container::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: block;
  width: 150%;
  padding-bottom: 150%;
  background: conic-gradient(from 180deg at 50% 50%,#e92a67 0deg,#a853ba 112.5deg,#2a8af6 228.75deg,rgba(42,138,246,0) 360deg);
  z-index: -1;
}

这里没有直接设置伪元素高度,而是使用 width: 200%; padding-bottom: 200%; 绘制一个正方形,并且尺寸大于父元素,防止动画时背景不能完全覆盖父元素。

渐变边框

使用 ::after 伪元素作为遮罩及背景,遮住 ::before 伪元素使其仅展示出边框区域。

css 复制代码
.container::after {
  content: "";
  position: absolute;
  inset: var(--border-size);
  background: var(--bg-color);
  border-radius: var(--border-radius);
  z-index: -1;
}

添加动画

:before 添加旋转动画。

css 复制代码
@keyframes rotate {
  from {
    transform: translate(-50%, -50%) rotate(0deg);
  }
    
  to {
    transform: translate(-50%, -50%) rotate(-360deg);
  }
}

.container::before {
  ...,
  animation: rotate 3s linear infinite;
}

边框追逐效果

通过设置分区的渐变背景即可完成边框上多线条相互追逐的炫酷效果。

css 复制代码
.container {
  --border-color: conic-gradient(from 180deg at 50% 50%,#e92a67 0deg, transparent 90deg, transparent 180deg, #2a8af6 180deg, transparent 270deg);
}
相关推荐
Asmewill5 分钟前
DeepAgents学习笔记三(Backend记忆存储)
前端
Alan Lu Pop21 分钟前
前端开发助手
前端·智能体
程序员鱼皮22 分钟前
我用 GitHub 仓库养 AI 龙虾,自动开发上线项目!保姆级教程
前端·人工智能·ai·程序员·github·编程·ai编程
276695829235 分钟前
京东随机变速滑块拼图验证码识别(京东E卡)
java·服务器·前端·python·京东滑块·京东变速滑块·京东e卡绑卡
এ慕ོ冬℘゜1 小时前
手写生产级 jQuery Toast 轻量提示组件|零插件依赖、动画流畅、极简高
前端·javascript·jquery
Oneslide1 小时前
UI设计-企业OA风格
前端
程序员海军1 小时前
我用了 8 个月 Codex CLI,总结出这套 AI 编程工作流
前端·后端·aigc
এ慕ོ冬℘゜2 小时前
手写一款高兼容、零BUG图片预览组件|前端
前端·bug
铁链鞭策大师2 小时前
javaEE之多线程(2)
java·前端·java-ee
KaMeidebaby2 小时前
卡梅德生物技术快报|生信实操:ChIP 染色质免疫共沉淀技术流程、短板与替代方案详解
前端·人工智能·物联网·百度·新浪微博