前端高级技巧,如何让渐变边框动起来

欢迎来到前端的日常,前端宝典持续更新,目前已经有200+道面试题,更多面试题可以到 前端宝典 进行查看,快来刷题吧~

前言

在前端开发中,动态效果不仅可以提升用户体验,还能为页面增添视觉吸引力。CSS Houdini 是一项强大的技术,它允许开发者直接操作 CSS 的底层渲染机制,实现一些传统 CSS 无法完成的效果。今天,我们将探讨如何使用 CSS Houdini 实现一个动态旋转的边框效果。

什么是 CSS Houdini?

CSS Houdini 是一组新的 CSS API,允许开发者直接操作 CSS 的渲染过程。它包括 @propertyPaint WorkletAnimation Worklet 等功能。通过这些 API,开发者可以创建自定义的 CSS 属性和动画,实现复杂的视觉效果。

实现动态旋转边框

我们将使用 CSS Houdini 的 @property 来实现一个动态旋转的边框效果。以下是完整的代码示例:

html 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta
      name="viewport"
      content="initial-scale=1.0, user-scalable=no, width=device-width"
    />
    <title>document</title>
    <style>
      body {
        background: #000;
      }
      .card::before {
        z-index: -1;
        filter: blur(20px);
      }
      .card::after {
        content: "";
        position: absolute;
        inset: 8px;
        background: #191c29;
        border-radius: inherit;
      }
      @property --direc {
        syntax: "<angle>";
        initial-value: 0deg;
        inherits: false;
      }
      .card {
        position: relative;
        width: 200px;
        height: 400px;
        margin: 100px auto;
        --direc: 0deg;
        color: red;
        background-image: linear-gradient(
          var(--direc),
          #5ddcff,
          #3c67e3,
          43%,
          #4e00c2
        );
        animation: rotate 3s linear infinite;
      }
      @keyframes rotate {
        to {
          --direc: 360deg;
        }
      }
    </style>
  </head>
  <body>
    <div class="card"></div>
    <script></script>
  </body>
</html>

代码解析

  1. HTML 结构

    • 一个简单的 div 元素,类名为 box,用于展示动态旋转的边框。
  2. CSS 样式

    • body :设置背景颜色,居中显示 box
    • .box :设置宽度、高度和背景颜色,使用 position: relativeoverflow: hidden 确保边框不会超出盒子。
    • .box::before :使用伪元素创建边框,设置 border 为透明,背景使用 linear-gradient 渐变效果。
    • @keyframes rotate :定义一个旋转动画,从 0deg360deg,持续时间为 5s,线性变化,无限循环。

实际应用场景

这种动态旋转边框效果可以应用于多种场景,例如登录页面、首页背景、卡片效果等。它可以为页面增添视觉吸引力,提升用户体验。

相关推荐
jiangzhihao05153 小时前
前端自动翻译插件webpack-auto-i18n-plugin的使用
前端·webpack·node.js
软件技术NINI6 小时前
html css网页制作成品——HTML+CSS盐津铺子网页设计(5页)附源码
前端·css·html
mapbar_front7 小时前
面试问题—我的问题问完了,你还有什么想问我的吗?
前端·面试
quweiie7 小时前
thinkphp8+layui多图上传,带删除\排序功能
前端·javascript·layui
李鸿耀7 小时前
React 项目 SVG 图标太难管?用这套自动化方案一键搞定!
前端
闲蛋小超人笑嘻嘻7 小时前
树形结构渲染 + 选择(Vue3 + ElementPlus)
前端·javascript·vue.js
叶梅树8 小时前
从零构建A股量化交易工具:基于Qlib的全栈系统指南
前端·后端·算法
巴博尔8 小时前
uniapp的IOS中首次进入,无网络问题
前端·javascript·ios·uni-app
Asthenia04128 小时前
技术复盘:从一次UAT环境CORS故障看配置冗余的危害与最佳实践
前端
csj508 小时前
前端基础之《React(1)—webpack简介》
前端·react