CSS技巧专栏:一日一例 10 -纯CSS实现表爱心的小可爱按钮特效

发布于:2024-07-22 ⋅ 阅读:(183) ⋅ 点赞:(0)

CSS技巧专栏:一日一例 10 -纯CSS实现表爱心的小可爱按钮特效

本篇,给大家分享一个有趣的按钮,会表白的小可爱,希望小伙伴们喜欢!

本例图片

案例分析

这个按钮的常态效果有一个 为爱发电一样的光影扩散的效果,这个效果我考虑可以使用 动画 + 阴影 实现。当鼠标移到按钮上,两边突然滑出两个翅膀和翅膀上一样可爱的闪动的表白文字,这个可以使用before和after两个伪元素来实现。

布局代码

<button class="base" alt="人家好耐你(✿◡‿◡)">♥</button>

基础样式

:root{
  --main-bg-color: #000;
  --color:#000;
  --hover-color:#993399;
}
button{
  margin: 0.3em;
  outline: 0;
  border: none;
}
.base{
  position: relative;   
  padding: 1rem 3rem; /* 用 padding 撑起按钮的宽度和高度 ,并确保了按钮文字水平方向居中 */
  font-family: "微软雅黑", sans-serif;
  font-size: 1.5rem;  
  line-height: 1.5rem; /* 行高和字号大小相等,可以实现按钮文字在按钮内垂直居中 */ 
  font-weight:700;
  color: var(--color);  /* 文字颜色为预定义的前景色 */
  cursor: pointer;   /* 鼠标移动到按钮上时候的形状:手型 */
  user-select: none;  /* 让用户不能选择按钮上的文字 */
  white-space: nowrap; /* 避免英文单词间的空格导致文字换行 */
  border-radius: 2rem; 
  text-decoration: none; 
  text-transform:uppercase; /* 字母自动修正为大写 */
  transition: all .5s; /* 按钮响应动画效果的持续时间 */
  margin: 1.5rem 2rem;
}

按钮样式

.btn_hide{
  position: relative;  
  background: #ff3399;
  transition: all 0.5s;
  color: #fff;
  font-family: '黑体';
  border-radius: 50%; 
  box-shadow: 0 0 0 rgba(255, 102, 163, 0.4);  
  transition: 300ms;
  padding:1rem 1.35rem;
  font-size: 2rem;
  line-height: 2rem;  
}
.btn_hide:before,
.btn_hide:after{
  content: attr(alt);
  position: absolute;
  z-index: -1;
  background-color: #ffb3d9;    
  top:0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 2.5rem 2.5rem 2.5rem 6rem; /* 模拟翅膀 */
  -webkit-transition: all 0.5s;
  transition: all 0.5s;
  padding: 0.85rem 0.5rem;
  box-sizing: border-box;
  text-align: right;
  color: #ff3399;  
  font-size: 1.5rem;
}
.btn_hide:before{
  left:0;
}
.btn_hide:after{
  right:0;
}

按钮动画

给这个圆形的按钮 增加一个关键帧动画:

@keyframes pulse {  
  0% { box-shadow: 0 0 0 0 rgba(255, 102, 163, 0.4);  }   
  70% { box-shadow: 0 0 10px 30px rgba(255, 102, 163, 0);  }  
  100% { box-shadow: 0 0 5px 0 rgba(255, 102, 163, 0);  }
}

这三个关键帧分别是三个透明度和大小不一样的投影。接下来,把这个动画绑定到按钮本体上:

.btn_hide{ animation: pulse 1s infinite; }

我们来看看效果:

悬浮动画

下面,让我们来通过位移动画实现鼠标hover状态时,before和hover伪元素显现出来。


.btn_hide:hover{
  background: #ff3399; 
  transition: all 0.5s;  
}

.btn_hide:hover:before{
  padding: 0.85rem 2.5rem;
  padding-left: 4.5rem;
  text-align: right;
  width: 600%;  
  left:0;
}
.btn_hide:hover:after{
  padding: 0.85rem 2.5rem;
  padding-right: 4.5rem;
  text-align: left;
  width: 600%;  
  right:0;
}

看起来差不多了,还差一个文字颜色变化。这个实现非常简单:

@keyframes text-color-change {
  0%, 50% {
    color: rgb(255, 255, 255);
  }
  50.1%, 100% {
    color: rgb(255, 51, 153);
  }
}

然后,别忘了把动画绑定到 before和hover两个伪元素上:

.btn_hide:hover:before,
.btn_hide:hover:after{
    animation: text-color-change 0.2s infinite alternate;
}

按钮完成,看看效果:

大功告成,亲个嘴儿吧?

写到这里,突然响起金大大的《鹿鼎记》里,韦小宝最喜欢跟双儿说的这句话。这个按钮,很应景呢。

希望大家喜欢!收到我表白的小伙伴,别忘了帮我点赞加收藏哦~

本专栏其他文章:

CSS技巧专栏:一日一例1.会讨好的热情按钮

CSS技巧专栏:一日一例 2.纯CSS实现 多彩边框按钮特效

CSS技巧专栏:一日一例 3.纯CSS实现炫酷多彩按钮特效

CSS技巧专栏:一日一例 4.纯CSS实现两款流光溢彩的酷炫按钮特效

CSS技巧专栏:一日一例 5-纯CSS实现背景色从四周向中心填充的按钮特效

CSS技巧专栏:一日一例 6 - 纯CSS实现粉红色跳出来的立体按钮特效

CSS技巧专栏:一日一例 7 - 纯CSS实现炫光边框按钮特效

CSS技巧专栏:一日一例 8 - 纯CSS利用mask属性实现按钮边框对称包围特效

CSS技巧专栏:一日一例 9 -纯CSS实现按钮边框依次填充特效


网站公告

今日签到

点亮在社区的每一天
去签到