彩色边框loading




import styles from "./test.module.css";

export default function Test() {
  return (
    <div className={styles.bg}>
      <div className={styles.flowBorder}></div>
    </div>
  );
}



.bg {

    height: 40px;
    width: 40px;
    box-sizing: border-box;
}

.flowBorder {
  position: relative;
  width: 40px;
  height: 40px;
  border-radius: 8px; /* 可选:圆角 */
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden; /* 隐藏超出范围的渐变背景 */
}

/* 核心:彩色旋转背景 */
.flowBorder::before {
  content: "";
  position: absolute;
  width: 150%; /* 宽高要大于父级,确保旋转时覆盖全 */
  height: 150%;
  background: conic-gradient(
    #ff0000,
    #ff8000,
    #ffff00,
    #00ff00,
    #00ffff,
    #8000ff,
    #ff00ff,
    #ff0000
  );
  animation: rotate 3s linear infinite;
}

/* 核心:遮盖层,形成“边框”视觉 */
.flowBorder::after {
  content: "";
  position: absolute;
  inset: 2px; /* 这里决定了边框的粗细,2px即为边框宽度 */
  background-color: #ffffff; /* 必须与背景色相同 */
  border-radius: 6px; /* 比父级稍微小一点点 */
}

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