欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-15 08:15:28
...

背景

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

解决方案

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

效果图

纯CSS做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>
相关标签: css3 animation