You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义spinner,实现其环绕盒子的展示效果?

实现方案

你可以用纯CSS实现这个环绕盒子的加载动画效果,不需要引入额外的JS库,具体实现逻辑如下:

基础结构

首先写HTML结构,外层是需要加加载效果的容器,里面放盒子原有内容,再加一个用来做环绕动画的节点即可,也可以直接用伪元素实现,减少多余DOM:

<div class="box-wrapper">
  <!-- 盒子原有内容 -->
  <div class="box-content">
    这里是盒子内部的内容
  </div>
</div>

核心CSS实现

给外层容器加相对定位,用伪元素做绝对定位铺满容器,通过圆锥渐变加旋转动画实现环绕效果:

/* 外层容器基础样式 */
.box-wrapper {
  position: relative;
  width: 300px;
  height: 200px;
  border-radius: 8px;
  overflow: hidden;
  /* 可根据需求调整容器宽高、圆角等属性 */
}

/* 内容区域,层级高于动画层 */
.box-content {
  position: relative;
  z-index: 2;
  padding: 20px;
  background-color: #fff;
  width: 100%;
  height: 100%;
  border-radius: 8px;
  box-sizing: border-box;
}

/* 用伪元素实现环绕spinner */
.box-wrapper::before {
  content: "";
  position: absolute;
  inset: -2px; /* 比容器大2px,露出边框效果 */
  z-index: 1;
  border-radius: 8px;
  background: conic-gradient(
    from 0deg,
    #3b82f6 0%,
    rgba(59, 130, 246, 0.3) 30%,
    rgba(59, 130, 246, 0.1) 70%,
    #3b82f6 100%
  );
  /* 旋转动画,2秒转一圈,无限循环 */
  animation: spin 2s linear infinite;
}

/* 旋转动画定义 */
@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

效果调整说明

  • 想要换颜色直接修改conic-gradient里的色值即可,也可以设置多色渐变实现彩色环绕效果
  • 调整边框粗细可以修改伪元素的inset值,同时对应调整内容区域的边距,避免内容盖住边框
  • 需要兼容不支持圆锥渐变的旧浏览器,可以把渐变替换为线性渐变,调整伪元素尺寸为容器的2倍,同样可以实现类似效果
  • 加载完成后需要隐藏动画,只需用JS给外层容器加控制类,把伪元素的display设为none即可

内容的提问来源于stack exchange,提问作者joyce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:45:00