我有一个定义高度的div和溢出设置为隐藏.如果溢出内容中有锚点,div的可见内容将向上移动,这意味着我想要显示的内容将被推离div的顶部,锚点将移动到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>
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
这是小提琴.点击框内部并点击标签查看我的意思 http://jsfiddle.net/2seLJ/1/
我的用例就是我有一个下拉菜单,其中包含我只想在用户点击"显示下拉列表"时显示的链接.可见内容有一个输入框,因此如果用户从输入框中选择标签,则会显示链接,并且无法返回到输入框,而不是整个页面的标签.这只能通过在所有链接中添加tabindex =" - 1"来解决吗?
发生这种情况时,已overflow: hidden应用的父元素将滚动以将焦点元素置于视图中,并且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);
});
Run Code Online (Sandbox Code Playgroud)
注意:如果您要这样做,请确保您没有在此过程中破坏您的可访问性.这通常不是最好的选择,因为隐藏元素仍然可以通过tab这样的事情来集中.
听起来你想要阻止该锚点上的tabstop行为.请参阅:在HTML中阻止A元素(锚链接)上的tabstop
<div class="container">
<div class="show-content">Click in the box and hit tab</div>
<div class="overflow-content">
<a href="javascript:void(0);" tabindex="-1">Pesky Link</a>
<a href="javascript:void(0);" tabindex="-1">Pesky Link 2</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
小提琴:http://jsfiddle.net/2seLJ/2/
您可以使用jQuery以编程方式为"overflow-content"div中的所有链接执行此操作:
$(document).ready(function(){
$('div.overflow-content a').attr('tabindex', '-1');
});
Run Code Online (Sandbox Code Playgroud)
小提琴:http://jsfiddle.net/2seLJ/3/
| 归档时间: |
|
| 查看次数: |
1912 次 |
| 最近记录: |