如何使用 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);
}
输出: