纯CSS做hover离开后的平滑过渡动画

背景

实际项目中,很多时候会用hover做鼠标进入目标元素动画,此时如果想让动画有过渡效果,可以使用css3属性transition。但是离开之后动画就立即停止了,体验效果并不好。有些同学就想到用onmouseover和onmouseout事件来处理动画过渡,虽然可行,但是太麻烦,我们要秉承着能用css解决的问题绝对不用js解决。

解决方案

其实这里把hover的过渡css也在原来样式里写一份即可。这里要特别注意一点,transition的第一个变换属性如果要写,一定要写all,或者省略默认是all。比如下面例子是变换width,如果写transition: width 0.3s; hover离开时动画就不会生效。

效果图

在这里插入图片描述

具体代码

<!DOCTYPE html>
<html lang="zh">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
	<title></title>
	<style type="text/css">
		.box {
			display: flex;
		}
		.item {
			padding: 5px 10px;
			font-size: 14px;
			position: relative;
			cursor: pointer;
		}
		.item:after {
			display: block;
			content: '';
			width: 0;
			height: 4px;
			position: absolute;
			bottom: 0;
			left: 50%;
			transform: translateX(-50%);
			background-color: #fff;
			transition: all 0.3s; 
		}
		.item:hover:after {
			display: block;
			content: '';
			width: 80%;
			height: 4px;
			background-color: black;
			transition: all 0.3s; 
		}
	</style>
</head>
<body>
	<div class="box">
		<span class="item">导航一</span>
		<span class="item">导航二</span>
		<span class="item">导航三</span>
	</div>
</body>
</html>
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值