视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
介绍一个利用css3和伪元素实现鼠标移入时下划线向两边展开的特效代码
2020-11-27 18:51:50 责编:小采
文档
这篇文章主要介绍了利用css3+伪元素实现鼠标移入时下划线向两边展开效果的相关资料,文中先进行了详细的介绍,方便大家理解,而后给出了完整的实例代码让大家可以参考学习,需要的朋友们下面来一起学习学习吧。

先来看看效果图:

实现思路:

将伪元素:before和:after定位到元素底部中间,设置宽度从0变成100%达到目的。

实现方法:

1、首先定义一个块状元素(行内元素没有宽高)并修改样式为一个背景色为浅灰色的矩形,设置相对定位。

html代码

<p id="underline"></p>

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方便进行别的操作。

完整代码

<!DOCTYPE html>

<html lang="en">

<head>

 <meta charset="UTF-8">

 <title>鼠标移入下划线展开</title>

 <style type="text/css">

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

 }

 </style>

</head>

<body>

 <p id="underline"></p>

</body>

</html>

下载本文
显示全文
专题