shadow 探究 - 环状动画

Hover

设置初始颜色

先设置四个角的颜色(设置宽高. 圆角. 0边框 的代码省略):

<div class='shadow'>Hover</div>
--color: #1e91e9;

/* 用四个阴影模拟四个象限,这里只设置一个,其实初始效果是一样的 */
box-shadow: 0 0 0 2px var(--color), 0 0 0 2px var(--color),
  0 0 0 2px var(--color), 0 0 0 2px var(--color);

设置浮动动画


.shadow:hover {
  --color: #1e91e9;
  animation: border .5s ease forwards;
}

@keyframes border {
  /* 1/4 时,右上角:向右偏移为0,向上偏移125,不模糊,扩散2px,变为灰色 */
  /* 左上角:向右偏移为0,向上偏移125,不模糊,扩散2px,变为灰色 */
  25% {
    box-shadow: 0 -125px 0 2px var(--color),
                -60px -60px 0 2px var(--color),
                -60px 60px 0 2px var(--color),
                60px 60px 0 2px var(--color),
                0 0 0 2px #ccc;
  }

  50% {
    box-shadow: 0 -125px 0 2px var(--color),
                -125px 0px 0 2px var(--color),
                -60px 60px 0 2px var(--color),
                60px 60px 0 2px var(--color),
                0 0 0 2px #ccc;
  }

  75% {
    box-shadow: 0 -125px 0 2px var(--color),
                -125px 0px 0 2px var(--color),
                0px 125px 0 2px var(--color),
                60px 60px 0 2px var(--color),
                0 0 0 2px #ccc;
  }

  100% {
    box-shadow: 0 -125px 0 2px var(--color),
                -125px 0px 0 2px var(--color),
                0px 125px 0 2px var(--color),
                120px 40px 0 2px var(--color),
                0 0 0 2px #ccc;
  }
}

Was this page helpful?