前言介绍
按钮(button)作为网页设计中最常见的组件之一,充当着向网站访问者传达信息、接受互动操作的角色。通常来说,它们非常平凡,只是被放置在网页上进行了点击跳转、提交表单等简单操作。当你偶然间发现一个这样的按钮,它可以是各种颜色、造型、文字、动态效果的形式,无论你是在购物网站、社交媒体、新闻资讯平台还是其他任何场景下发现,它都能引起你的关注,让你忍不住多点几次。经典的例子包括“赞”、“收藏”、“加入购物车”等需要醒目突出、立即响应的操作按钮,它们成为了网站用户体验中不可或缺的一部分,往往也是成功的关键因素之一。
那具体怎么利用纯CSS实现来着
实现步骤
html部分
<button class="button">Button</button>
css部分
定义一个按钮元素的样式。该按钮具有粉色背景色 (#ff0081),在顶部和底部分别有1em的填充,在左右两侧有2em的填充,白色文本颜色,4px的border-radius,无边框,以及当鼠标悬停时改变指针样式表示可点击。按钮还具有box-shadow效果,在悬停到按钮上时,使用transition属性使按钮的背景色和box-shadow平滑地过渡。
.button {
display: inline-block;
padding: 1em 2em;
background-color: #ff0081;
color: #fff;
border-radius: 4px;
border: none;
cursor: pointer;
position: relative;
box-shadow: 0 2px 25px rgba(233, 30, 99, 0.5);
outline: 0;
transition: transform ease-in 0.1s, background-color ease-in 0.1s, box-shadow ease-in 0.25s;
}
定义 ::before 伪元素,其使用radial-gradient创建背景色为多个同色和透明度的圆的渐变动画效果,并使用动画效果使气泡变大并在动画结束时淡出。
.button::before{
position: absolute;
content: '';
left: -2em;
right: -2em;
top: -2em;
bottom: -2em;
pointer-events: none;
transition: ease-in-out .5s;
background-repeat: no-repeat;
background-image: radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%),
radial-gradient(circle, #ff0081 20%, transparent 20%);
background-size: 10% 10%, 20% 20%, 15% 15%, 20% 20%, 18% 18%, 10% 10%, 15% 15%, 10% 10%, 18% 18%,
15% 15%, 20% 20%, 18% 18%, 20% 20%, 15% 15%, 10% 10%, 20% 20%;
background-position: 18% 40%, 20% 31%, 30% 30%, 40% 30%, 50% 30%, 57% 30%, 65% 30%, 80% 32%, 15% 60%,
83% 60%, 18% 70%, 25% 70%, 41% 70%, 50% 70%, 64% 70%, 80% 71%;
animation: bubbles ease-in-out .75s forwards;
}
定义一个名为bubbles的关键帧动画,用于在button元素被active激活时调用。在动画中,通过background-position属性和多个参数设置不同位置的背景颜色,来创造一种气泡飘浮的效果。这些气泡颜色是由外围向内逐渐变深的渐变,并伴随着平移和缩放。当点击按钮时,会使.button元素的背景色变成粉色,并附加一个阴影效果。同时,::before伪元素的动画将停止并将背景大小设置为0。
.button:active {
transform: scale(0.95);
background-color: #f3037c;
box-shadow: 0 2px 25px rgba(233, 30, 99, 0.5);
}
.button:active::before {
animation: none;
background-size: 0;
}
@keyframes bubbles {
0% {
background-position: 18% 40%, 20% 31%, 30% 30%, 40% 30%, 50% 30%, 57% 30%, 65% 30%, 80% 32%, 15% 60%,
83% 60%, 18% 70%, 25% 70%, 41% 70%, 50% 70%, 64% 70%, 80% 71%;
}
50% {
background-position: 10% 44%, 0% 20%, 15% 5%, 30% 0%, 42% 0%, 62% -2%, 75% 0%, 95% -2%, 0% 80%,
95% 55%, 7% 100%, 24% 100%, 41% 100%, 55% 95%, 68% 96%, 95% 100%;
}
100% {
background-position: 5% 44%, -5% 20%, 7% 5%, 23% 0%, 37% 0, 58% -2%, 80% 0%, 100% -2%, -5% 80%,
100% 55%, 2% 100%, 23% 100%, 42% 100%, 60% 95%, 70% 96%, 100% 100%;
background-size: 0% 0%;
}
}
作者: 路羽, 转载或复制请以 超链接形式 并注明出处 路羽博客。
原文地址: 《CSS-纯CSS实现一个粒子动效的按钮》 发布于2023-6-5
评论