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旋转动画实例代码
Sep 11 HTML / CSS
CSS3 选择器 基本选择器介绍
Jan 21 HTML / CSS
css3学习心得分享
Aug 19 HTML / CSS
css3的transition效果和transfor效果示例介绍
Oct 30 HTML / CSS
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
Mar 31 HTML / CSS
css3 transform属性详解
Sep 30 HTML / CSS
css3选择器基本介绍
Dec 15 HTML / CSS
CSS3让登陆面板3D旋转起来
May 03 HTML / CSS
纯CSS3实现的井字棋游戏
Nov 25 HTML / CSS
CSS3 实现的火焰动画
Dec 07 HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
Jan 20 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
Mar 20 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
PHP 动态随机生成验证码类代码
2010/04/09 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
PHP学习笔记之数组篇
2011/06/28 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
后勤部长岗位职责
2013/12/14 职场文书
五年后的职业生涯规划
2014/03/04 职场文书
实用的简历自我评价
2014/03/06 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
mysql 获取时间方式
2022/03/20 MySQL