关于transitionend兼容

来源:2-6 transition.js

weixin_慕尼黑6514237

2019-11-21 21:53:01

http://img.mukewang.com/climg/5dd6956c09c8e02805510350.jpg

(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

};

// alert('11')

})();

var transition = window.mt.transition;//transitionend 兼容性问题 




// 公共部分提取


var silent = {


init:function($elem){

if ($elem.is(':hidden')) {

$elem.data('status','hidden')

}else{

$elem.data('status','shown')

}

},


show:function($elem){

if ($elem.data('status')==='show') return;

if ($elem.data('status')==='shown') return;


// 设置状态,显示状态下不执行

$elem.data('status','show').trigger('show');

$elem.show();

$elem.data('status','shown').trigger('shown');

},

hide:function($elem){

if ($elem.data('status')==='hide') return;

if ($elem.data('status')==='hidden') return;


// 设置状态,显示状态下不执行

$elem.data('status','hide').trigger('hide');

$elem.hide();

$elem.data('status','hidden').trigger('hidden')

}

}



var css3 = {

fade:{

init:function($elem){

$elem.addClass('transition');

if ($elem.is(':hidden')) {

$elem.data('status','hidden');

$elem.addClass('fadeOut');

}else{

$elem.data('status','shown');

}

},

show:function($elem){

if ($elem.data('status')==='show') return;

if ($elem.data('status')==='shown') return;


$elem.data('status','show').trigger('show');

$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){


if ($elem.data('status')==='hide') return;

if ($elem.data('status')==='hidden') return;


$elem.data('status','hide').trigger('hide');

$elem.off('transition.end').one('transition.end',function(){

$elem.hide();

$elem.data('status','hidden').trigger('hidden');

});

$elem.addClass('fadeOut');

}

}

};

transitionend执行代码没有问题,当引入兼容文件修改成:transition.end代码不执行show(),hide()。(如图)源码测试也是一样的;

写回答

1回答

好帮手慕慕子

2019-11-22

同学你好, 老师测试源码效果是正常的, 不是很清楚同学具体是指修改哪里。

建议:可以先详细的描述一下具体指的是哪里,然后,对你修改代码的地方截图,最后,将你写的html代码也粘贴过来, 便于帮助同学准确高效的定位与解决问题,祝学习愉快~

0
heixin_慕尼黑6514237
h 找到问题啦,引用‘transition.end’不用加引号。才能触发shown和hidden
h019-11-22
共1条回复

0 学习 · 14456 问题

查看课程