Sar*_*ra_ 6 html javascript css wordpress jquery
我正在尝试将推送侧菜单插件(响应式菜单)正确实现到 wordpress 主题中。基于SO @Congrim 的回答,我设法实现了一种body在推送菜单打开时锁定滚动条的方法(所有元素包括header固定元素),除了class=edge-ils edge-ils-with-scroll edge-ils-light在推送菜单打开时仍会上升的交互式链接。
我已将此序列保存到congrim.js文件中,并将脚本放入functions.php文件中的主题中:
function lockScroll() {
if ($('body').hasClass('lock-scroll')) {
$('body').removeClass('lock-scroll');
}
else {
$('body').addClass('lock-scroll');
}
}
/* I've implemented `onclick="lockScroll();"` in button element,
* using this sequence in the same congrim.js file:
*/
$(document).ready(function() {
$('#responsive-menu-pro-button').click(function() {
lockScroll();
});
});
Run Code Online (Sandbox Code Playgroud)
卸下jQuery的包装不会放弃在浏览器控制台(在Chrome测试)的任何错误可能仍然是一个不错的办法,以wrapp这样的代码在WordPress(?)在这些情况下,不幸的是,overflow: hidden;不适用,在按压侧菜单打开,我不能在 CSS 文件/部分中使用这个类:
.lock-scroll {
overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)
该代码将只允许我使用
.lock-scroll {
position: fixed;
}
Run Code Online (Sandbox Code Playgroud)
问题:
是否有可能强制代码实现解决方法,以使交互链接overflow: hidden;* 或任何其他class=edge-ils edge-ils-with-scroll edge-ils-light不会在推送侧菜单打开,以保持固定在打开菜单之前单击查看器的位置?
请只关注交互链接问题,场景的其余部分都很好(header并且logo已经就位,背景图片也应该如此)。
LE: *在显示/隐藏滚动条期间,overflow: hidden;它看起来会body在菜单打开/关闭时产生不需要的移动效果,这在此阶段不会发生。
LE2:congrim.js文件已被body-lock.min.jsOutsource WordPress替换,请参阅下面的解决方案。
网站测试页面在这里。
请检查下面给出的解决方案。
第 1 步:添加此 CSS .scroll-lock{position:fixed !important;}。
第 2 步:添加此 JS。
$(document).ready(function() {
var windowTop = 0;
var menuOpen = 0;
var offsetContainerList = 0;
$('#responsive-menu-pro-button').click(function() {
var offsetScrollList = $('.edge-ils-item-link:first').offset().top;
if ($('html').hasClass('scroll-lock')) {
$('#responsive-menu-pro-container').one("webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend",
function(event) {
if (menuOpen==0) {
menuOpen = 1;
$('html').removeClass('scroll-lock');
$('.edge-ils-content-table').css('top', eval(offsetContainerList)-40+'px'); //change image container top position
$('html').scrollTop(windowTop); //scroll to original position
}
else {
menuOpen = 0;
}
});
}
else {
windowTop = $(window).scrollTop();
offsetContainerList = $('.edge-ils-content-table').offset().top;
$('html').addClass('scroll-lock');
$('.edge-ils-content-table').css('top', -offsetScrollList + 'px'); //change image container top position
}
});
});
Run Code Online (Sandbox Code Playgroud)
就是这样!