作者:Annie千寻_535 | 来源:互联网 | 2022-12-09 15:58
在Chrome中运行以下内容,然后按Tab键直到窗口滚动:
注意聚焦元素如何跳到窗口的中间.这使得数据输入很烦人,所以我宁愿页面顺利向上滚动,将新聚焦的元素保持在底部.这似乎只发生在Chrome中.
我可以使用Javascript阻止此行为:
$(document).on('focus', 'input', function() {
let top = $(this).parent().position().top,
scroll = $(window).scrollTop(),
inputHeight = $('input').height(),
windowHeight = $(window).height();
if (top scroll + windowHeight - inputHeight * 2) {
window.scrollBy(0, inputHeight);
}
});
但我想知道是否有HTML或CSS解决方案.(我也会选择更优雅的Javascript解决方案.)
编辑
我已经提出了一个更简单的解决方案,但是它具有页面的副作用,每个Tab(或Shift + Tab)按下滚动一个像素:
$('input').keydown(function(evt) {
if(evt.key == 'Tab') {
window.scrollTo(0, window.scrollY + (evt.shiftKey ? -1 : 1));
}
});