【发布时间】:2016-11-14 10:38:06
【问题描述】:
我有两个按钮可以打开和关闭覆盖 div。
.trigger-overlay 用于显示菜单,.overlay-close 用于与多个叠加层一起关闭它们。
.wrap 包装所有内容,并在通过添加类 .wrap-open
打开叠加层时向右滑动这工作 .trigger-overlay 被点击但不是当 .overlay-close 被点击。 See example。 (点击第二张幻灯片中的链接 1 或链接 2)。
当.overlay-close被点击时,我需要对下面的JS代码做些什么来删除.wrap-open?
JS 小提琴: https://jsfiddle.net/cgx8zu2h/
工作示例: https://www.uk-cpi.com/temp-js/annual-review/
JavaScript
(function() {
var triggerBttn = document.getElementsByClassName('trigger-overlay');
var closeBttn = document.getElementsByClassName('overlay-close');
var wrap = document.querySelector('div.wrap');
transEndEventNames = {
'WebkitTransition': 'webkitTransitionEnd',
'MozTransition': 'transitionend',
'OTransition': 'oTransitionEnd',
'msTransition': 'MSTransitionEnd',
'transition': 'transitionend'
},
transEndEventName = transEndEventNames[Modernizr.prefixed('transition')],
support = {
transitions: Modernizr.csstransitions
};
function toggleOverlay() {
var overlay = document.getElementById(this.getAttribute('data-href'));
// If overlay is open
if (classie.has(overlay, 'zap')) {
classie.remove(overlay, 'zap');
classie.remove(wrap, 'wrap-open');
classie.add(overlay, 'close');
var onEndTransitionFn = function(ev) {
if (support.transitions) {
if (ev.propertyName !== 'visibility') return;
this.removeEventListener(transEndEventName, onEndTransitionFn);
}
classie.remove(overlay, 'close');
};
if (support.transitions) {
overlay.addEventListener(transEndEventName, onEndTransitionFn);
} else {
onEndTransitionFn();
}
}
// If overlay isn't closed
else if (!classie.has(overlay, 'close')) {
classie.add(overlay, 'zap');
classie.add(wrap, 'wrap-open');
}
// If overlay is closed
else if (classie.has(overlay, 'close')) {
classie.add(overlay, 'zap');
classie.add(wrap, 'wrap-open');
}
}
for (var i = 0; i < triggerBttn.length; i++) {
triggerBttn[i].addEventListener('click', toggleOverlay);
}
//counts number of closeBttn and remove zap on click for all
for (var i = 0; i < closeBttn.length; i++) {
closeBttn[i].addEventListener('click', function() {
this.parentNode.className = this.parentNode.className.replace(/(?:^|\s)zap(?!\S)/g, '');
});
}
})();
【问题讨论】:
-
你能在 Jsfiddle k 上向我们展示你的代码吗
-
您还需要添加 HTML 标记。
-
JS Fiddle 现在添加:jsfiddle.net/cgx8zu2h
-
还添加了工作示例:uk-cpi.com/temp-js/annual-review
标签: javascript jquery css