带有伪元素的CSS脉动按钮效果

带有伪元素的CSS脉动按钮效果,css,css-transitions,pseudo-element,pseudo-class,Css,Css Transitions,Pseudo Element,Pseudo Class,我对这些按钮动画代码感到困惑。这些代码产生一个脉冲效果按钮,但我很难解释它们是如何一起工作的,或者引擎盖下是什么 <div > <a href="#" class="btn btn--white btn--animated">btn</a> </div> 我的主要困惑是: --如何阅读::before/after使用纯英语,带.btn::after?我可以这样理解:在运行.btn代码之后,在这里运行这些代码吗?或者使用.btn--w

我对这些按钮动画代码感到困惑。这些代码产生一个脉冲效果按钮,但我很难解释它们是如何一起工作的,或者引擎盖下是什么

<div >   
    <a href="#" class="btn btn--white btn--animated">btn</a>
</div>
我的主要困惑是:

--如何阅读::before/after使用纯英语,带
.btn::after
?我可以这样理解:在运行.btn代码之后,在这里运行这些代码吗?或者使用
.btn--white::after{background color:#fff;}
我可以读取:在.btn--white执行之后,将背景画成白色

--使用
.btn::after
时,我们在原始链接按钮的正后方创建了空的btn框。btn:hover::after时,鼠标指针不是因为Z索引而悬停在原始按钮链接上而不是空按钮上吗


--这里是如何呈现脉动效果的?
.btn--white::after
如何因不断重新绘制空按钮而被调用?

回答第一个问题,
after创建一个伪元素,它是所选元素的最后一个子元素
:回答第二个问题:.btn:hover:after意味着当您将鼠标悬停在按钮上方时,after元素具有一些您可能添加的新属性。第三个问题:在这种情况下,.btn white::after唯一拥有的是背景色,它没有任何作用,因为它已经是白色了。在html中,btn类已经按照所需的方式进行了样式设置。如果你在html中放置更多的类,下一个类的样式将覆盖上一个。最后一个:在css的第一部分,按钮完成了样式设置。当您悬停该按钮时,将产生框阴影和变换traslate-Y效果。btn:after here以及btn--white:after和btn:hover:after只是默认的引导,您可以删除它们并仍然获得相同的效果。您可以使用它们,更改它们的颜色和背景色,尝试不同的动画,并查看它们的区别。
    .btn:link,    
    .btn:visited {    
      position: relative;
      border-radius: 10rem;
      display: inline-block;
      margin-top: 6rem;
      text-transform: uppercase;
      text-decoration: none;
      padding: 1.5rem 4rem;
      transition: all 1.2s;

    }

    .btn:hover {
      transform: translateY(-.3rem);
      box-shadow: 0 1rem 2rem  rgba(0, 0, 0, .3);
    }


    .btn:active {
      transform: translateY(-.1rem);
      box-shadow: 0 .5rem 1rem  rgba(0, 0, 0, .2);
    }


    .btn--white {

      background-color: #fff;
      color: #777;
    }


    .btn--white::after {    
      background-color: #fff;
    }


    .btn::after {    
      content: "";
      display: inline-block;
      height: 100%;
      width: 100%;
      border-radius: 10rem;
      position: absolute;
      top: 0;
      left: 0;
      z-index: -1;
      transition: all .2s;    
    }


    .btn:hover::after {    
      transform: scaleX(1.4) scaleY(1.6);
      opacity: 0;


    }