📅  最后修改于: 2023-12-03 15:23:51.887000             🧑  作者: Mango
如果你希望在你的网站上添加一些炫酷的按钮,那么 Shaky 按钮绝对是一个好的选择。Shaky 按钮在用户点击时会显示出一些动画效果,使得用户有更好的交互体验。在本文中,我们将会介绍如何使用 HTML 和 CSS 来创建一个 Shaky 按钮。
首先,我们需要为 Shaky 按钮定义 HTML 结构。以下是一个基本的 HTML 模板:
<button class="shaky-button">点击我!</button>
我们需要在 button
标签中添加一个自定义的类名 shaky-button
,以便之后的 CSS 样式能够应用到按钮上。
接下来,我们需要为 Shaky 按钮添加一些 CSS 样式。以下是 Shaky 按钮的基本样式:
.shaky-button {
position: relative;
padding: 10px 20px;
border-radius: 5px;
border: 2px solid #000;
background-color: #fff;
font-size: 16px;
font-weight: bold;
cursor: pointer;
transition: all 0.3s ease-in-out;
}
我们为按钮指定了一些基本的样式,如:背景色、边框、字体大小和按钮的圆角。此外,我们还添加了一个过渡效果,以便按钮在动画过程中更平滑。
以下是 Shaky 按钮的动画样式:
.shaky-button:hover::before,
.shaky-button:focus::before {
content: '';
position: absolute;
top: -5px;
left: -5px;
right: -5px;
bottom: -5px;
border-radius: 5px;
border: 2px solid #f00;
z-index: -1;
transition: all 0.3s ease-in-out;
}
.shaky-button:hover::after,
.shaky-button:focus::after {
content: '';
position: absolute;
top: -5px;
left: -5px;
right: -5px;
bottom: -5px;
border-radius: 5px;
border: 2px solid #f00;
z-index: -1;
transition: all 0.3s ease-in-out;
animation: shake 0.5s linear infinite;
}
@keyframes shake {
0% {
transform: translateX(0);
}
20% {
transform: translateX(-5px) rotate(3deg);
}
30% {
transform: translateX(5px) rotate(-3deg);
}
50% {
transform: translateX(-2px) rotate(2deg);
}
60% {
transform: translateX(2px) rotate(-2deg);
}
100% {
transform: translateX(0);
}
}
在这段 CSS 样式中,我们为按钮的 ::before
和 ::after
伪元素定义了样式。当鼠标悬停或按钮获取焦点时,Shaky 按钮的效果将被激活。
我们使用 border
属性定义了按钮的边框样式,同时为其添加了动画效果,使其在按钮上下晃动。
最后,我们来看一下 Shaky 按钮的运行效果:
CSS 代码片段:
.shaky-button {
position: relative;
padding: 10px 20px;
border-radius: 5px;
border: 2px solid #000;
background-color: #fff;
font-size: 16px;
font-weight: bold;
cursor: pointer;
transition: all 0.3s ease-in-out;
}
.shaky-button:hover::before,
.shaky-button:focus::before {
content: '';
position: absolute;
top: -5px;
left: -5px;
right: -5px;
bottom: -5px;
border-radius: 5px;
border: 2px solid #f00;
z-index: -1;
transition: all 0.3s ease-in-out;
}
.shaky-button:hover::after,
.shaky-button:focus::after {
content: '';
position: absolute;
top: -5px;
left: -5px;
right: -5px;
bottom: -5px;
border-radius: 5px;
border: 2px solid #f00;
z-index: -1;
transition: all 0.3s ease-in-out;
animation: shake 0.5s linear infinite;
}
@keyframes shake {
0% {
transform: translateX(0);
}
20% {
transform: translateX(-5px) rotate(3deg);
}
30% {
transform: translateX(5px) rotate(-3deg);
}
50% {
transform: translateX(-2px) rotate(2deg);
}
60% {
transform: translateX(2px) rotate(-2deg);
}
100% {
transform: translateX(0);
}
}