这一节是不是只有在IE低版本浏览器才有作用?
我在Chrome里测试的,老师4:50左右出现的动画无效的情况我没有出现,正常显示了,是不是因为浏览器没用对?
正在回答
同学你好,问题解答如下:
1、将fade修改为slideUpDown,代码中只修改了一处,所以测试没有出现老师的效果。这样修改再测试下
showhide.js文件中添加类的代码去掉
html中修改
这样点击显示按钮是可以显示出来的,但是再点击隐藏的时候不能隐藏,就和老师一致了(视频中一开始就是显示的,所以点击哪个都不好用)。然后再按照课程中修改样式
再次测试就正确了。
2、IE高版本浏览器(10以及以上)是支持transition过渡属性的,所以有过渡效果,可以输出shown和hidden。但是10版本以下的浏览器不支持这个属性,无法进行样式过渡,所以也触发不了shown和hidden 。
目前可以先不考虑低版本IE浏览器,主流浏览器能够测试出来即可。
自己再测试理解下,祝学习愉快!
我发现在IE里面控制台只会打印出来show,但是显示和隐藏动画却都显示出来了,不过只显示了show和hide动画,渐变动画没有出现,而且隐藏以后box盒子所占的位置还在。
加上!important以后,点击显示和隐藏都没有动画出现,控制台还是只打印show,也没有报错
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>显示隐藏模块</title>
<link rel="stylesheet" href="../css/base.css">
<style>
body {
width: 400px;
margin: 0 auto;
}
.btn {
width: 50%;
height: 30px;
}
#box {
display: none;
width: 100%;
height: 200px;
background-color: red;
}
.transition {
-o-transition: all .5s;
-ms-transition: all .5s;
-moz-transition: all .5s;
-webkit-transition: all .5s;
transition: all .5s;
}
.fadeOut {
visibility: hidden;
opacity: 0;
}
.slideUpDownCollapse{
height: 0;
}
</style>
</head>
<body>
<button id="btn-show" class="btn">显示</button><button id="btn-hide" class="btn">隐藏</button>
<div id="box" class="transition"></div>
<button class="btn">显示2</button>
<script src="../js/jquery.js"></script>
<script src="../js/transition.js"></script>
<script src="../js/showhide.js"></script>
<script>
// console.log(window.mt.transition.end);
// console.log(window.mt.transition.isSupport);
var $box = $('#box');
css3.slideUpDown.init($box);
$('#btn-show').on('click', function () {
css3.fade.show($box);
});
$('#btn-hide').on('click', function () {
css3.fade.hide($box);
});
// 小A
$box.on('show shown hide hidden', function (e) {
console.log(e.type);
});
</script>
</body>
</html>
var transition = window.mt.transition;
function init($elem, hiddenCallback) {
if ($elem.is(':hidden')) { //hidden
$elem.data('status', 'hidden');
if (typeof hiddenCallback === 'function') hiddenCallback();
$elem.addClass('fadeOut');
} else { //shown
$elem.data('status', 'shown');
}
}
function show($elem, callback) {
if ($elem.data('status') === 'show') return;
if ($elem.data('status') === 'shown') return;
$elem.data('status', 'show').trigger('show');
callback();
}
function hide($elem, callback) {
if ($elem.data('status') === 'hide') return;
if ($elem.data('status') === 'hidden') return;
$elem.data('status', 'hide').trigger('hide');
callback();
}
var silent = {
init: init,
show: function ($elem) {
show($elem, function () {
$elem.show();
$elem.data('status', 'shown').trigger('shown');
});
},
hide: function ($elem) {
hide($elem, function () {
$elem.hide();
$elem.data('status', 'hidden').trigger('hidden');
});
}
};
var css3 = {
fade: {
init: function ($elem) {
$elem.addClass('transition');
init($elem, function () {
$elem.addClass('fadeOut');
});
},
show: function ($elem) {
show($elem, function () {
$elem.off(transition.end).one(transition.end, function () {
$elem.data('status', 'shown').trigger('shown');
});
$elem.show();
setTimeout(function () {
$elem.removeClass('fadeOut');
}, 20);
});
},
hide: function ($elem) {
hide($elem, function () {
$elem.off(transition.end).one(transition.end, function () {
$elem.hide();
$elem.data('status', 'hidden').trigger('hidden');
});
$elem.addClass('fadeOut');
});
}
},
slideUpDown: {
init: function ($elem) {
$elem.addClass('transition');
init($elem, function () {
$elem.addClass('slideUpDownCollapse');
});
},
show: function ($elem) {
show($elem, function () {
$elem.off(transition.end).one(transition.end, function () {
$elem.data('status', 'shown').trigger('shown');
});
$elem.show();
setTimeout(function () {
$elem.removeClass('slideUpDownCollapse');
}, 20);
});
},
hide: function ($elem) {
hide($elem, function () {
$elem.off(transition.end).one(transition.end, function () {
$elem.hide();
$elem.data('status', 'hidden').trigger('hidden');
});
$elem.addClass('slideUpDownCollapse');
});
}
},
slideLeftRight: {
show: function () {
},
hide: function () {
}
},
fadeSlideUpDown: {
show: function () {
},
hide: function () {
}
},
fadeSlideLeftRight: {
show: function () {
},
hide: function () {
}
}
};
var js = {
fade: {
show: function () {
},
hide: function () {
}
},
slideUpDown: {
show: function () {
},
hide: function () {
}
},
slideLeftRight: {
show: function () {
},
hide: function () {
}
},
fadeSlideUpDown: {
show: function () {
},
hide: function () {
}
},
fadeSlideLeftRight: {
show: function () {
},
hide: function () {
}
}
};
(function () {
var transitionEndEventName = {
transition: 'transitionend',
MozTransition: 'transitionend',
WebkitTransition: 'webkitTransitionEnd',
OTransition: 'oTransitionEnd otransitionend',
};
var transitionEnd = '',
isSupport = false;
for (var name in transitionEndEventName) {
if (document.body.style[name]!==undefined) {
transitionEnd = transitionEndEventName[name];
isSupport = true;
break;
}
}
window.mt = window.mt || {};
window.mt.transition = {
end: transitionEnd,
isSupport: isSupport
};
})();
我刚刚在Microsoft IE里试了一下,效果还是实现了,是版本不对还是为什么呢....
应该是在这里改变浏览器版本的吧?
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星