纯css特效实现盒子边框颜色流动效果

接下来我们要实现这样的效果

HTML代码

<div class="ants-border">
   Lorem ipsum, dolor sit amet consectetur adipisicing elit. Laudantium, debitis vel quam tempora ut nisi voluptatibus rem ab. Quas, cum. Itaque, dignissimos! Quos, eos placeat eveniet quasi amet eius officiis!</div>

CSS代码:

.ants-border{
   width: 500px;
   padding: 1em;
   border: 1px solid transparent;
   background-image: linear-gradient(white, white), 
                     repeating-linear-gradient(
                        -45deg,
                        #000 0%, #000 25%,
                        #fff 0%, #fff 50%
                     );
  background-size: 10px 10px;
  background-clip: padding-box, border-box;
  animation: ants 10s linear infinite;}@keyframes ants {
  to {
     background-position: 100%;
  }}

绘制步骤:

1、给div加一层黑白色条纹背景

.ants-border{
   width: 500px;
   background-image: repeating-linear-gradient(-45deg, #000 0%, #000 25%, #fff 0%, #fff 50%); 
   background-size: 10px 10px;  /*控制条纹的宽度*/
   /*默认背景图像会repeat铺满全屏*/}

2、再加一层白色背景。当一个元素设置多个background-image时,如果位置重叠,则写在前面的背景会覆盖写在后面的背景。此时背景为白色。

.ants-border{
   ...
   background-image: linear-gradient(white, white),repeating-linear-gradient(-45deg, #000 0%, #000 25%, #fff 0%, #fff 50%); 
   background-size: 10px 10px;}

3、背景有一个属性background-clip,初始值是border-box,意味着背景会铺满border-box。

为了让条纹背景露出来形成蚂蚁边框,我们将两层背景的background-clip分别设为padding-boxborder-box

.ants-border{
   ...
   background-image: linear-gradient(white, white),repeating-linear-gradient(-45deg, #000 0%, #000 25%, #fff 0%, #fff 50%); 
   background-size: 10px 10px;
   background-clip: padding-box, border-box;}

此时白色背景铺满padding-box,条纹背景铺满border-box,此时依然时白色背景,因为没有设置border时,这两个box的范围是重叠的。所以设置一个1px的border,颜色为透明色。

.ants-border{
   ...
   border: 1px solid transparent;}

4、通过动画不断改变背景的位置,形成移动的“蚂蚁”

@keyframes ants {
   to {
       background-position: 100%;
   }}


免责声明

文章来源于网络,纯作记录存档用,如侵犯您的权益请联系删除!
转载本文请保留链接,谢谢!

评论