html - 制表符导致溢出内容向上移动

标签 html css

我有一个已定义高度和溢出设置为隐藏的 div。如果溢出内容中有 anchor ,div 的可见内容将向上移动,这意味着我要显示的内容将被推离 div 的顶部, anchor 将移动到 div 可见部分的中心.没有显示滚动条(好事),所以内容有点卡在那里。

HTML

<div class="container">
    <div class="show-content">Click in the box and hit tab</div>
    <div class="overflow-content">
        <a href="javascript:void(0);">Pesky Link</a>
        <a href="javascript:void(0);">Pesky Link 2</a>
    </div>
</div>

CSS

.container{
    height: 100px;
    overflow: hidden;
    border: 1px solid black;
}
.show-content{
    line-height: 100px;
    height: 100px;
    font-size: 16px;
}
.overflow-content a{
    display: block;
    margin-top: 40px;
    line-height: 20px;
    font-size: 16px;
}

这是 fiddle 。单击框内并单击选项卡以了解我的意思 http://jsfiddle.net/2seLJ/1/

我的用例是我有一个下拉菜单,其中包含我只想在用户单击“显示下拉列表”时显示的链接。可见内容有一个输入框,因此如果用户从输入框中按 Tab 键,则会显示链接,并且除非在整个页面中用 Tab 键,否则无法返回到输入框。是否只能通过在所有链接中添加 tabindex="-1"来解决?

最佳答案

替代方案

发生这种情况时,应用了 overflow: hidden 的父元素将滚动以将焦点元素置于 View 中,并且 scrollTop 和/或 scrollLeft 属性变为正整数,尽管没有滚动条。

解决这个问题的一种方法,不涉及额外的标记或 DOM 操作,是有一个事件监听器,将 overflow: hidden 父级的滚动位置重置回 0.

jQuery 示例:

$(document).on('focus', '.some-overflow-hidden-element > *', function() {
    $(this).closest('.some-overflow-hidden-element').scrollTop(0).scrollLeft(0);
});

注意:如果您要这样做,请确保您不会在此过程中破坏您的辅助功能。这通常不是最佳选择,因为隐藏的元素仍然可以通过选项卡等方式获得焦点。

关于html - 制表符导致溢出内容向上移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18520956/

相关文章:

javascript - Stripe.js - 收集收件人信息

javascript - 如何在 Electron JS 文件中导入另一个 JS 文件(位于同一目录中)

javascript - 如果文本框不包含数据则隐藏文本框

html - 如何在通过 Ajax 附加 <div> 后加载 apply jQuery 函数?

css - Bootstrap 3 全宽图像和容器中的 div

javascript - 列表项的高度不断增加

javascript - div 在另一个动态 div 的底部

javascript - 是否可以访问 iframe 外部的数组?

ios - IOS Web应用程序中html的高度

javascript - 从 matrix3d 获取精确的旋转 Angular