Javascript 焦点元素隐藏在固定菜单后面
我有一个网站,底部有一个菜单,我将其设置为“位置固定”。滚动时,它将保持不变 使用“键盘”选项卡导航站点时,如果焦点元素不在视口中,则会自动滚动到该位置。这里的问题是,当一个焦点元素被scolled到时,它不会显示,因为它位于底部的固定菜单后面 任何我如何解决这个问题的idéa,以便窗口滚动到焦点元素显示的位置Javascript 焦点元素隐藏在固定菜单后面,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个网站,底部有一个菜单,我将其设置为“位置固定”。滚动时,它将保持不变 使用“键盘”选项卡导航站点时,如果焦点元素不在视口中,则会自动滚动到该位置。这里的问题是,当一个焦点元素被scolled到时,它不会显示,因为它位于底部的固定菜单后面 任何我如何解决这个问题的idéa,以便窗口滚动到焦点元素显示的位置 谢谢你的滚动代码: // lets say element is the DOM element you want to scroll into view function scroll
谢谢你的滚动代码:
// lets say element is the DOM element you want to scroll into view
function scrollNow(element) {
// create a dummy element X pixels above 'element'
// where X is the height of your bottom menu
// if X is not known in advance, calculate it using $('#menu').outerHeight()
var dummy = $('<div></div>').css({
position: 'absolute', top: $(element).offset().top - X
}).appendTo('body');
dummy[0].scrollIntoView();
dummy.remove(); // remove the dummy element
}
//假设元素是要滚动到视图中的DOM元素
函数scrollNow(元素){
//在“元素”上方创建一个虚拟元素X像素
//其中X是底部菜单的高度
//如果X事先未知,请使用$(“#menu')计算它
var dummy=$('').css({
位置:'绝对',顶部:$(元素).offset().top-X
}).附于(“主体”);
虚拟[0]。scrollIntoView();
dummy.remove();//删除虚拟元素
}
很酷,看起来很有前途。现在,当我应该运行此代码时,如何捕获事件?只有当元素通过对其进行tab获得焦点时,才会触发此事件。为此,您应该在onblur
上调用此事件,即$('.x').blur(function(){scrollNow(this);})代码>-根据需要替换.x,但该事件是否包含错误的元素?模糊的(先前聚焦的)元素,而不是新聚焦的元素。不知何故,我也应该做一个检查,如果它获得了通过标签,而不是通过点击例如。哎呀!我指的是.focus(..)
事件,而不是.blur(..)
事件。我的错误。抱歉<代码>$('.x').focus(函数(){scrollNow(this);})代码>是正确的选择。很好。但是我想做的tabkey检查呢?我不想在每一个焦点事件上都运行这个,只有当焦点通过标签获得时。单击焦点不应运行scrollNow()