transition无效的原因

1、只给该元素赋予了过渡属性的结束值,并未在过渡前定义初始值。

css

.header {
	position: relative;
	width: 200px;
	height: 50px;
	background: red;
	transition: all 0.3s ease-in-out; 
}
.showMenu.layui-layout-admin .header{ left:-200px; }

js

$(".moveHandle").click(function(){
	$(".header").toggleClass("showMenu");
})

结果发现header元素是直接闪现到左边去,没有发生过渡效果,也就是说过渡失效了。

解决方法:在header选择器里定义过渡属性(left)的初始值(left: 0px)再次触发移动事件时,就出现动画效果了。
原因:过渡,必定有个初始值和结束值才叫过渡。

2、display: none 和display: block之间的切换也会出现过渡效果失效的情况。

原因:display: none是销毁当前dom节点,再次切换为display: block时会再创建节点,此时css选择器会重新赋予上去。所以不存在渐变动画。
解决方法:用opacity(透明度)去替代。
希望这篇文章对你有帮助,若有错误的地方,请轻点喷,欢迎大神们一起讨论。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐