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 相关文章推荐
css3实现信纸/同学录效果的示例代码
Dec 11 HTML / CSS
css3实现超立体3D图片侧翻倾斜效果
Apr 16 HTML / CSS
CSS中的字体大小设置属性总结
May 24 HTML / CSS
使用CSS3实现SVG路径描边动画效果入门教程
Oct 21 HTML / CSS
HTML5 device access 设备访问详解
May 24 HTML / CSS
html5 跨文档消息传输示例探讨
Apr 01 HTML / CSS
HTML5使用drawImage()方法绘制图像
Jun 23 HTML / CSS
HTML5添加禁止缩放功能
Nov 03 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
Mar 19 HTML / CSS
HTML5超文本标记语言的实现方法
Sep 24 HTML / CSS
基于HTML十秒做出淘宝页面
Oct 24 HTML / CSS
CSS精灵图的原理与使用方法介绍
Mar 17 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
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
react 生命周期实例分析
2020/05/18 Javascript
Python实现的rsa加密算法详解
2018/01/24 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
python实现银行账户系统
2021/02/22 Python
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
公司综合部的成员自我评价分享
2013/11/05 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
交通事故调解协议书
2015/05/20 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书