最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
css3+伪元素怎么实现鼠标移入时下划线向两边展开的效果
时间:2022-06-25 10:02:16 编辑:袖梨 来源:一聚教程网
先来看看效果图:
实现思路:
将伪元素:before和:after定位到元素底部中间,设置宽度从0变成100%达到目的。
实现方法:
1、首先定义一个块状元素(行内元素没有宽高)并修改样式为一个背景色为浅灰色的矩形,设置相对定位。
html代码
| 代码如下 | 复制代码 |
css样式
| 代码如下 | 复制代码 |
|
#underline{
width:200px;
height:50px;
background:#ddd;
margin:20px;
position:relative;
} | |
2、设置:before和:after两个伪元素,将其设置为背景色为蓝色(也就是下划线的颜色),利用绝对定位将两个元素固定到#underline底部中间位置。
css样式
| 代码如下 | 复制代码 |
|
#underline:before,
#underline:after{
content:"";/*单引号双引号都可以,但必须是英文*/
width:0;
height:3px;/*下划线高度*/
background:blue;/*下划线颜色*/
position:absolute;
top:100%;
left:50%;
transition:all.8s ;/*css动画效果,0.8秒完成*/
} | |
3、设置鼠标移入效果。
css样式
| 代码如下 | 复制代码 |
|
#underline:hover:before{/*动画效果是从中间向左延伸至50%的宽度*/
left:0%;
width:50%;
}
#underline:hover:after{/*动画效果是从中间向右延伸至50%的宽度*/
left:50%;/*这句多余,主要是为了对照*/
width:50%;
} | |
优化
1、虽然目的达到了,但是用了两个伪元素,一个向左延伸50%,一个向右延伸50%,只用一个延伸至100%能否达到目的呢?
css代码
| 代码如下 | 复制代码 |
|
#underline:after{
content:"";
width:0;
height:5px;
background:blue;
position:absolute;
top:100%;
left:50%;
transition:all.8s;
}
#underline:hover:after{/*原理是left:50%变成0%的同时,宽度从0%变成100%*/
left:0%;
width:100%;
} | |
2、只定义:after伪元素,将其从距离左边50%宽度为0的同时改变成距离左边0%宽度为100%就可以实现,从而达到了精简代码的目的,而且还多余出了:before方便进行别的操作。
完整代码
| 代码如下 | 复制代码 |
|
#underline{
width: 200px;
height: 50px;
background: #ddd;
margin: 20px;
position: relative;
}
#underline:after{
content: "";
width: 0;
height: 5px;
background: blue;
position: absolute;
top: 100%;
left: 50%;
transition: all .8s;
}
#underline:hover:after{
left: 0%;
width: 100%;
} | |
相关文章
- mcjs网页版即点即玩-mcjs极速秒玩入口 10-23
- 超星学习通网页版登录-超星学习通官网入口 10-23
- poki免费游戏大全-poki免费游戏在线畅玩入口 10-23
- mc.js官方在线入口 10-23
- 海角haijiao社区2025全新网址一键直达-海角社区最新官方入口地址 10-23
- 王者荣耀世界体力上限与恢复方法详解 王者荣耀世界体力机制全面解析 10-20


