📜  如何使用 CSS 为按钮制作边框弹出动画?

📅  最后修改于: 2022-05-13 01:56:23.376000             🧑  作者: Mango

如何使用 CSS 为按钮制作边框弹出动画?

在本文中,我们将学习如何为您的网站的按钮制作边框弹出动画。为了创建边框弹出动画,我们使用 CSS 伪元素。

CSS 伪元素是添加到选择器的关键字,可让您为所选元素的特定部分设置样式。为了创建这样的动画,我们需要创建我们的网站,使其看起来不错,以便客户可以留在网站上。

例子:

HTML


  

    
    
    
    

  

    

  


CSS
*, *::before, *::after {
  box-sizing: border-box;
}
  
body {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  margin: 0;
}
  
button {
  margin: 1rem;
}
  
.btn {
  background-color: var(--background-color);
  color: #222;
  padding: .5em 1em;
  border: none;
  outline: none;
  position: relative;
  cursor: pointer;
  
  --background-color: #E3E3E3;
  --border-size: 2px;
  --accent-color: #0AF;
}
  
.btn.btn-border-pop::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: -1;
  border: var(--border-size) solid var(--background-color);
  transition: top, left, right, bottom, 100ms ease-in-out;
}
  
.btn.btn-border-pop:hover::before,
.btn.btn-border-pop:focus::before {
  top: calc(var(--border-size) * -2);
  left: calc(var(--border-size) * -2);
  right: calc(var(--border-size) * -2);
  bottom: calc(var(--border-size) * -2);
}


CSS 代码:我们制作 伪元素更大,然后我们将给它一个边框,然后我们将 * 它乘以 (-2),以便它从内部创建边框,从而提供一个很好的由外向内的过渡。

以下是上述 HTML 代码中使用的“styles.css”的代码。我们使用var作为背景颜色和边框大小。我们可以在顶部、左侧、右侧底部使用过渡。我们可以计算 -2 边框大小,以便我们将其远离盒子。

样式.css

CSS

*, *::before, *::after {
  box-sizing: border-box;
}
  
body {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  margin: 0;
}
  
button {
  margin: 1rem;
}
  
.btn {
  background-color: var(--background-color);
  color: #222;
  padding: .5em 1em;
  border: none;
  outline: none;
  position: relative;
  cursor: pointer;
  
  --background-color: #E3E3E3;
  --border-size: 2px;
  --accent-color: #0AF;
}
  
.btn.btn-border-pop::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: -1;
  border: var(--border-size) solid var(--background-color);
  transition: top, left, right, bottom, 100ms ease-in-out;
}
  
.btn.btn-border-pop:hover::before,
.btn.btn-border-pop:focus::before {
  top: calc(var(--border-size) * -2);
  left: calc(var(--border-size) * -2);
  right: calc(var(--border-size) * -2);
  bottom: calc(var(--border-size) * -2);
}

输出: