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

背景

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

解决方案

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

效果图

纯CSS做hover离开后的平滑过渡动画_第1张图片

具体代码


<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>

你可能感兴趣的:(纯CSS做hover离开后的平滑过渡动画)