前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS伪类:CSS3鼠标滑过按钮动画第二节

CSS伪类:CSS3鼠标滑过按钮动画第二节

作者头像
Javanx
发布2019-12-27 15:20:17
7700
发布2019-12-27 15:20:17
举报
文章被收录于专栏:web秀web秀

前言

有了第一小节的经验,我们可以对直接的动画效果做一些升级效果,如果组合:before:after,效果有更酷。

请先看一下效果示例吧:

CSS伪类:CSS3鼠标滑过按钮动画第二节
CSS伪类:CSS3鼠标滑过按钮动画第二节

下面一个一个示例讲解

示例一

代码语言:javascript
复制
<button class="btn-1">按钮一</button>

<style>
button{
  position: relative;
  width: 100px;
  height: 40px;
  border: 1px solid #46b0ff;
  background: none;
  cursor: pointer;
  overflow: hidden;
}
button:before, 
button:after{
  position: absolute;
  content: '';
  width: 100%;
  height: 100%;
  z-index: -1;
  transition: all .5s;
}
/* 按钮一 */
.btn-1:before{
  top: 0;
  height: 0;
  left: 0;
}
.btn-1:after{
  bottom: 0;
  height: 0;
  left: 0;
  background: rgba(70, 176, 255, 1);
}
.btn-1:hover:before, .btn-1:hover:after{
  height: 50%;
  background: rgba(70, 176, 255, 1);
}
</style>
CSS伪类:CSS3鼠标滑过按钮动画第二节
CSS伪类:CSS3鼠标滑过按钮动画第二节

解析:

1、:before top为0,:after bottom为0

2、在绝对定位的作用下,:hover改变:before:after的高度,:before就会向下延伸,而:after就会向上延伸。

3、同时我们是在:hover时,才赋予:before:after背景色,所以还有背景色过渡效果。

这里我们还可以换成左右合并的样式,小伙伴们可以自行研究。

示例二

代码语言:javascript
复制
<button class="btn-2">按钮二</button>

<style>
...
/* 这里省略上方的公共样式 */
.btn-2:before, .btn-2:after{
  width: 0;
  height: 0;
  border-width: 0 0 0 0;
  border-style: solid;
  bottom: 0;
}
.btn-2:before{
  border-color: transparent transparent transparent #f13f84;
  left: 0;
}
.btn-2:after{
  border-color: transparent transparent #f13f84 transparent;
  right: 0;
}
.btn-2:hover:before {
  border-width: 100px 0 0 100px;
}
.btn-2:hover:after {
  border-width: 0 0 100px 100px;
}
</style>
CSS伪类:CSS3鼠标滑过按钮动画第二节
CSS伪类:CSS3鼠标滑过按钮动画第二节

解析:

1、:before:afterborder画出2个三角形,且他们的 bottom 为 0,而:before的left=0,:after的right=0

请看下方示例:

代码语言:javascript
复制
.triangle{
  width: 0;
  height: 0;
  border-style: solid;
  border-color: transparent transparent transparent #f13f84;
  border-width: 100px 0 0 100px;
}
CSS伪类:CSS3鼠标滑过按钮动画第二节
CSS伪类:CSS3鼠标滑过按钮动画第二节

2、然后改变border-width,就会形成向上合并的效果

示例三

代码语言:javascript
复制
<button class="btn-3">按钮三</button>

<style>
...
/* 这里省略上方的公共样式 */
.btn-3:before, .btn-3:after{
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 0 0 0 0;
}
.btn-3:before{
  border-color: transparent transparent transparent #00b7a3;
  bottom: 0;
  left: 0;
}
.btn-3:after{
  border-color: transparent #00b7a3 transparent transparent;
  top: 0;
  right: 0;
}
.btn-3:hover:before, .btn-3:hover:after {
  border-width: 80px 210px;
}
CSS伪类:CSS3鼠标滑过按钮动画第二节
CSS伪类:CSS3鼠标滑过按钮动画第二节

解析:

1、有了示例二的经验,这里我们稍作变通即可,改变top,bottom,left,right即可

示例四

代码语言:javascript
复制
<button class="btn-4">按钮四</button>

<style>
...
/* 这里省略上方的公共样式 */
.btn-4:before, .btn-4:after{
  top: 50%;
  width: 20px;
  height: 20px;
  background: #8865ae;
  border-radius: 50%;
}
.btn-4:before{
  left: -20px;
  transform: translate(-50%, -50%);
}
.btn-4:after{
  right: -20px;
  transform: translate(50%, -50%);
}
.btn-4:hover:before{
  animation: criss-cross-left 0.8s both;
}
.btn-4:hover:after{
  animation: criss-cross-right 0.8s both;
}
@keyframes criss-cross-left {
  0% {
    left: -20px;
  }
  50% {
    left: 50%;
    width: 20px;
    height: 20px;
  }
  100% {
    left: 50%;
    width: 150px;
    height: 150px;
  }
}
@keyframes criss-cross-right {
  0% {
    right: -20px;
  }
  50% {
    right: 50%;
    width: 20px;
    height: 20px;
  }
  100% {
    right: 50%;
    width: 150px;
    height: 150px;
  }
}
CSS伪类:CSS3鼠标滑过按钮动画第二节
CSS伪类:CSS3鼠标滑过按钮动画第二节

解析:

1、:before:after画出2个圆形,并且垂直居中,开始并不在可视范围,:before居左,:after居右

代码语言:javascript
复制
top: 50%;
transform: translateY(-50%);

2、:hover时,动画前半部分50%前,改变:before:after left和right的大小,使其向中间运动

3、动画后半部分50%后,left和right保持住,同时改变圆形大小,就会看到两颗小球碰撞后展开的效果

示例五

代码语言:javascript
复制
<button class="btn-5">
  <span>按钮五</span>
</button>

<style>
...
/* 这里省略上方的公共样式 */
button span:before, 
button span:after{
  position: absolute;
  content: '';
  width: 100%;
  height: 100%;
  z-index: -1;
  transition: all .5s;
}
.btn-5:before, .btn-5:after, .btn-5 span:before, .btn-5 span:after{
  top: 0;
  width: 25px;
  height: 0;
  background: #1199ff;
}
.btn-5:before {
  left: 0;
}
.btn-5:after {
  right: 0;
  bottom: 0;
  top: initial;
}

.btn-5 span:before {
  left: 25px;
  bottom: 0;
  top: initial;
}
.btn-5 span:after {
  left: 50px;
  top: 0;
  bottom: initial;
}
.btn-5:hover:before, 
.btn-5:hover:after,
.btn-5:hover span:before,
.btn-5:hover span:after {
  height: 100%;
}
CSS伪类:CSS3鼠标滑过按钮动画第二节
CSS伪类:CSS3鼠标滑过按钮动画第二节

解析:

1、根据示例一,对其进行拓展,我们添加span元素,并且多出2个伪类,水平布局

2、错落上下位置,:hover时,改变高度height即可形成动画效果

示例六

代码语言:javascript
复制
<button class="btn-6">
  <span>按钮六</span>
</button>

<style>
...
/* 这里省略上方的公共样式 */
.btn-6:before, 
.btn-6:after, 
.btn-6 span:before, 
.btn-6 span:after{
  width: 0;
  height: 0;
  background: #f13f84;
}
.btn-6:before {
  left: 0;
  top: 0;
}
.btn-6:after {
  right: 0;
  top: 0;
}

.btn-6 span:before {
  left: 0;
  bottom: 0;
}
.btn-6 span:after {
  right: 0;
  bottom: 0;
}
.btn-6:hover:before, 
.btn-6:hover:after,
.btn-6:hover span:before,
.btn-6:hover span:after {
  height: 50%;
  width: 50%;
}
CSS伪类:CSS3鼠标滑过按钮动画第二节
CSS伪类:CSS3鼠标滑过按钮动画第二节

解析:

1、根据示例五,我们对4个伪类,重新布局,他们的开始位置坐落button四只角

2、:hover时,改变宽高,皆为50%,即可形成动画

示例七

代码语言:javascript
复制
<button class="btn-7">
  <span>按钮七</span>
</button>

<style>
...
/* 这里省略上方的公共样式 */
.btn-7:before, 
.btn-7:after{
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 0 0 0 0;
}

.btn-7:before{
  border-color: transparent transparent transparent #3da83d;
  bottom: 0;
  left: 0;
}
.btn-7:after{
  border-color: transparent #3da83d transparent transparent;
  top: 0;
  right: 0;
}

.btn-7 span:before, .btn-7 span:after {
  content: '';
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 0 0 0 0;
}

.btn-7 span:before {
  border-color: transparent transparent #3da83d transparent;
  right: 0;
  bottom: 0;
}

.btn-7 span:after {
  border-color: #3da83d transparent transparent transparent;
  top: 0;
  left: 0;
}

.btn-7:hover:before {
  border-width: 100px 0 0 100px;
}
.btn-7:hover:after {
  border-width: 0 100px 100px 0;
}
.btn-7:hover span:before {
  border-width: 0 0 100px 100px;
}
.btn-7:hover span:after {
  border-width: 100px 100px 0 0;
}
CSS伪类:CSS3鼠标滑过按钮动画第二节
CSS伪类:CSS3鼠标滑过按钮动画第二节

解析:

1、根据示例二、五,4个伪类都是三角形,并坐落button四只角

2、:hover时,改变border-width即可形成动画效果

总结

通过本小节,你学到了什么?

1、伪类元素运用加深滚固

2、元素三角形绘制

3、:hover鼠标移入动画滚固

小伙伴们,有问题可以评论区留言哦,欢迎大家点评。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 示例一
  • 示例二
  • 示例三
  • 示例四
  • 示例五
  • 示例六
  • 示例七
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档