纯CSS实现一个粒子动效的按钮

纯CSS实现一个粒子动效的按钮

安辰
2023-06-24 0 评论 94 阅读 正在检测是否收录...
温馨提示:
本文最后更新于2023年07月26日,已超过277天没有更新,若内容或图片失效,请留言反馈。

前言

button(按钮)是一种用于在网页上创建交互式元素的HTML元素也被用于创建交互式表单,比如提交表单或重置表单。按钮的type属性可以设置为"submit"或"reset",分别表示提交表单或重置表单。此外,按钮元素也可以包含图像或文本内容,以便更好地描述按钮的功能,按钮(button)元素具有许多功能和灵活性,但在使用时应该遵循良好的Web开发实践,以确保按钮的功能和外观在不同浏览器和设备上都能得到良好的呈现和响应
Test

实现步骤

html部分

<button class="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%;
  }
}
0

评论 (0)

取消