动画效果——按钮触摸效果

效果一

效果展示:
在这里插入图片描述
该动画原理是
先将按钮设置溢出隐藏,鼠标移入时,将左边隐藏的蒙版从左到右移动,并添加盒子阴影实现
在这里插入图片描述

设置按钮样式

设置按钮样式以及溢出隐藏

.btn {
  position: relative;
  color: #fff;
  font-size: 1rem;
  padding: 1rem 3rem;
  background-color: transparent;
  border: 1px solid hsl(190, 100%, 41%);
  outline: transparent; // 轮廓 相比于border不占空间
  overflow: hidden;	// 溢出隐藏
  cursor: pointer;
  user-select: none; // 控制btn中文字不被选中
  white-space: nowrap;
  transition: 0.25s;
}
设置伪元素样式

设置伪元素样式并移动到左侧

.btn::before {
  position: absolute;
  content: '';
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  transform: translateX(-100%);
  background: linear-gradient(120deg, transparent, rgba(0, 174, 209, .5), transparent);
  transition: 0.5s;
}
设置动画
.btn:hover {
  box-shadow: 0 0 20px 10px rgba(0, 174, 209, 0.5);

  &::before {
    transform: translateX(100%);
  }
}
案例
<button class="btn">hover me</button>
.btn {
  position: relative;
  color: #fff;
  font-size: 1rem;
  padding: 1rem 3rem;
  background-color: transparent;
  border: 1px solid hsl(190, 100%, 41%);
  outline: transparent; // 轮廓 相比于border不占空间
  overflow: hidden;
  cursor: pointer;
  user-select: none;  // 控制页面中文字不被选中
  white-space: nowrap;
  transition: 0.25s;
  &:hover {
    box-shadow: 0 0 20px 10px rgba(0, 174, 209, 0.5);
    &::before {
      transform: translateX(100%);
    }
  }
  &::before {
    position: absolute;
    content: '';
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    transform: translateX(-100%);
    background: linear-gradient(120deg, transparent, rgba(0, 174, 209, .5), transparent);
    transition: 0.6s;
  }
}

效果二:发光渐变按钮

效果展示:
在这里插入图片描述

该动画原理是
先设置背景渐变,再通过设置背景尺寸的过渡实现背景渐变的动画

设置背景渐变

在这里插入图片描述

// 测试
.btn {
  ...
  background: linear-gradient(90deg, #00dbde, #fc00ff, #00dbde);
  background-size: 300%;
  transition: .6s;
  &:hover {
    background-size: 100%;
  }
}
.btn {
  ...
  background: linear-gradient(90deg, #00dbde, #fc00ff, #00dbde);
  background-size: 300%;
  animation: glow 8s linear infinite;
}

@keyframes glow {
  to {
    background-position: 300%;
  }
}
设置伪元素样式

设置伪元素样式并移动到左侧

.btn::before {
  position: absolute;
  content: "";
  top: -5px;
  bottom: -5px;
  left: -5px;
  right: -5px;
  z-index: -1;
  border-radius: inherit;
  background: inherit; // 可以顺带继承动画
  background-size: inherit;
  opacity: 0;
  filter: blur(20px);
  transition: 0.5s;
}
.btn:hover {
  &:before {
    opacity: 1;
  }
}
设置动画
@keyframes glow {
  to {
    background-position: 300%;
  }
}
案例
<button class="btn">hover me</button>
.btn {
  position: relative;
  padding: 1rem 3rem;
  font-size: 1.5rem;
  line-height: 1.5;
  color: #fff;
  outline: transparent;
  border: transparent;
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
  border-radius: 4em;
  background: linear-gradient(90deg, #00dbde, #fc00ff, #00dbde);
  background-size: 300%;
  animation: glow 8s linear infinite;
  z-index: 0; // 避免伪元素移到后面
  &::before {
    position: absolute;
    content: "";
    top: -5px;
    bottom: -5px;
    left: -5px;
    right: -5px;
    z-index: -1;
    border-radius: inherit;
    background: inherit;  // 可以顺带继承动画
    background-size: inherit;
    opacity: 0;
    filter: blur(20px);
    transition: 0.5s;
  }
  &:hover {
    &:before {
      opacity: 1;
    }
  }
}

@keyframes glow {
  to {
    background-position: 300%;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡小多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值