页面加载后第一次点击显示欸有动画,后面点击显示隐藏才有动画
来源:2-9 用js实现其他显示隐藏效果
qq_勿忘初心_H
2020-02-28 11:15:50
<style type="text/css">
.btn{
width: 200px;
height:40px;
line-height: 40px;
background-color: #ddd;
text-align: center;
margin-bottom: 20px;
border: 1px solid #989898;
}
.box{
width: 300px;
height: 300px;
background-color:red;
display: none;
overflow: hidden;
}
.transition{
-o-transition: all 0.5s;
-ms-transition: all 0.5s;
-moz-transition: all 0.5s;
-webkit-transition: all 0.5s;
transition: all 0.5s;
}
.fadeOut{
visibility: hidden !important;
opacity: 0 !important;
}
.sildeUpDownCollapse{
height:0 !important; /* 加important是因为前面设置了box的宽,会因为优先级的问题而无效*/
padding-top: 0 !important; /* 加padding是因为盒子的高度可能没设置,是由padding撑开的*/
padding-bottom: 0 !important;
/*但如果高度是由box中的子元素撑开的,而父元素又没有设置高度和padding的话,那就不会又上下卷起的过渡效果,因为不知道按什么高度来进行过渡动画,这就需要在js中手动计算下*/
}
.slideLeftRight{
width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
</style>slideLeftRight:{
init:function($elem){
// 先要获取box本身的宽,padding值,这样才能在show和hide里面使用,就不用直接写具体的值了
var styles={};
styles['width']=$elem.css('width');
styles['padding-left']=$elem.css('padding-left');
styles['padding-right']=$elem.css('padding-right');
$elem.data('style',styles);
$elem.removeClass('transition');
init($elem,function(){
$elem.css({ //如果元素是隐藏状态的话,先初始化设置他的样式
'width':0,
'padding-left':0,
'padding-right':0
});
});
},
show:function($elem){
var sty=$elem.data('style');
// 先将元素显示出来,然后再执行动画,如果是css3写法的话,要考虑同步异步的问题
show($elem,function(){
$elem.show();
$elem.stop().animate({
'width':sty['width'],
'padding-left':sty['padding-left'],
'padding-right':sty['padding-right']
},
function(){ //动画执行完毕之后的操作
$elem.data('status','shown').trigger('shown');
});
});
},
hide:function($elem){
// 先执行动画,然后再将元素隐藏起来
hide($elem,function(){
$elem.stop().animate({
'width':0,
'padding-left':0,
'padding-right':0
},
function(){ //动画执行完毕之后的操作
$elem.hide();
$elem.data('status','hidden').trigger('hidden');
});
});
}
},var $box=$('.box');
js.fadeSlideUpDown.init($box);
$('#btn-show').on('click',function(e){
js.fadeSlideUpDown.show($box);
});
$('#btn-hide').on('click',function(e){
js.fadeSlideUpDown.hide($box);
});2回答
好帮手慕夭夭
2020-02-28
同学你好 ,老师这边测试,发现js报错 ,项目运行不了。应该是js上传的不对,请检查一下,把这个小例子使用的js全部粘贴上来哦。
祝学习愉快 !
好帮手慕夭夭
2020-02-28
同学你好,缺少html代码 ,请把全部代码粘贴到问答区,以便老师测试查找问题。
祝学习愉快 !
相似问题