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

前言

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

请先看一下效果示例吧:

ba70a26d07c8b35a55dfaffd6fb47204.gif

下面一个一个示例讲解

示例一

按钮一

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);

}

df4689af734204c541bb5cf2fe7b216d.gif

解析:

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

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

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

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

示例二

按钮二

...

/* 这里省略上方的公共样式 */

.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;

}

bd58df18b1e0901a908daa01a8bd1d96.gif

解析:

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

请看下方示例:

.triangle{

width: 0;

height: 0;

border-style: solid;

border-color: transparent transparent transparent #f13f84;

border-width: 100px 0 0 100px;

}

a1baee2b4be3d9b91fcc3f3dc94c1908.gif

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

示例三

按钮三

...

/* 这里省略上方的公共样式 */

.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;

}

d8b005492cf6a77cba15c8e5a104f93f.gif

解析:

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

示例四

按钮四

...

/* 这里省略上方的公共样式 */

.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;

}

}

e31b511fedab2a24e138b686a0a16d01.gif

解析:

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

top: 50%;

transform: translateY(-50%);

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

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

示例五

按钮五

...

/* 这里省略上方的公共样式 */

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%;

}

91f3fb5828610c4bdd144c1262888127.gif

解析:

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

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

示例六

按钮六

...

/* 这里省略上方的公共样式 */

.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%;

}

3beec70328a7134676f4ace2fc9b928b.gif

解析:

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

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

示例七

按钮七

...

/* 这里省略上方的公共样式 */

.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;

}

61c86d3208821a47a7a72b90cfee169d.gif

解析:

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

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

总结

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

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

2、元素三角形绘制

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值