css3+伪元素实现鼠标移入时下划线向两边展开的效果


Posted in HTML / CSS onApril 25, 2017

先来看看效果图:

css3+伪元素实现鼠标移入时下划线向两边展开的效果css3+伪元素实现鼠标移入时下划线向两边展开的效果css3+伪元素实现鼠标移入时下划线向两边展开的效果

实现思路:

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

实现方法:

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

html代码

<div id="underline"></div>

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>

    <div id="underline"></div>

</body>

</html>

总结

关于才疏学浅,以后遇到了再补充。好了以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

HTML / CSS 相关文章推荐
HTML5如何适配 iPhone IOS 底部黑条
Mar 09 HTML / CSS
css3.0 图形构成实例练习二
Mar 19 HTML / CSS
多重CSS背景动画实现方法示例
Apr 04 HTML / CSS
结合CSS3的新特性来总结垂直居中的实现方法
May 30 HTML / CSS
css3实现椭圆轨迹旋转的示例代码
Oct 29 HTML / CSS
详解css position 5种不同的值的用法
Jul 30 HTML / CSS
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
Nov 17 HTML / CSS
HTML5中canvas中的beginPath()和closePath()的重要性
Aug 24 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
Jan 21 HTML / CSS
HTML5地理定位实例
Oct 15 HTML / CSS
浅析HTML5的WebSocket与服务器推送事件
Feb 19 HTML / CSS
canvas 阴影和图形变换的示例代码
Jan 02 HTML / CSS
CSS3实现自定义Checkbox特效实例代码
Apr 24 #HTML / CSS
深入理解css中vertical-align属性
Apr 18 #HTML / CSS
总结30个CSS3选择器
Apr 13 #HTML / CSS
CSS3模拟动画下拉菜单效果
Apr 12 #HTML / CSS
CSS3动画:5种预载动画效果实例
Apr 05 #HTML / CSS
CSS3 仿微信聊天小气泡实例代码
Apr 05 #HTML / CSS
CSS3效果:自定义“W”形运行轨迹实例
Mar 29 #HTML / CSS
You might like
通过文字传递创建的图形按钮
2006/10/09 PHP
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
JavaScript高级程序设计
2006/12/29 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
Vue 中axios配置实例详解
2018/07/27 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
关于python 跨域处理方式详解
2020/03/28 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
中式面点餐厅创业计划书
2014/01/29 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
教师节感谢信
2015/01/22 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
Python中如何处理常见报错
2022/01/18 Python