我尝试使用focus方法将元素聚焦在页面中。当元素处于聚焦状态时,页面会自动滚动到聚焦的元素中。但是在firefox和IE浏览器中,页面无法正确滚动。因此,我的焦点元素在页面底部可见。
步骤: 在chrome中运行示例,元素将出现在页面中间。 在Firefox中,它将显示在页面底部。
如何解决?
setTimeout(() => {
document.getElementById('parent-element').focus();
}, 10);
body {
touch-action: none;
}
#target {
height: 2000px;
background-color: aliceblue;
}
#parent-element {
max-height: 980px;
width: 400px;
left: 150px;
top: 958px;
display: inline-flex;
background-color: #fff;
box-shadow: 0 12px 40px 5px rgba(0, 0, 0, 0.26);
max-width: 100%;
min-width: 240px;
height: auto;
position: absolute;
}
.Child-element {
border-bottom: none;
padding: 18px;
border-radius: 1px 1px 0 0;
line-height: 30px;
background-color: #fff;
}
.childcontent {
display: block;
width: 83%;
color: rgba(0, 0, 0, 0.87);
}
<div id="target">
<div id="parent-element" role="dialog" tabindex="-1">
<div class="Child-element">
<div class="childcontent">Am developer</div>
</div>
</div>
</div>
答案 0 :(得分:0)
我可以提供我发现的experimental替代解决方案,同时试图弄清为什么Firefox不以focus()为中心。
scrollIntoView()将为您工作,只要将div滚动到页面中心即可。同样,它是实验性的,但是我在最新的Chrome和Firefox浏览器中对其进行了测试,并且可以在其中运行。
您可以使用以下内容:
document.getElementById('parent-element').scrollIntoView({behavior: "instant", block: "center"});