Chrome 和 Firefox overflow:hidden 跳转元素
Chrome and Firefox overflow:hidden jumping elements
我偶然发现了 Chrome 和 Firefox 中发生的奇怪行为,当你有一个带有 "position:relative;" 和 "overflow:hidden;" 的元素并且其中有一个带有 "position:absolute;" 的锚点时.
只要锚点获得焦点,它上面的元素就会神奇地跳到顶部,即使它的样式和标记讲述的是不同的故事。
示例:http://codepen.io/mediadivisiongmbh/pen/pJWmxp
您只需要一个与此类似的设置:
HTML
<div class="container">
<h1>I can fly</h1>
<a class="focus-me" href="#">Evil Link</a>
</div>
CSS
.container {
position:relative;
overflow:hidden;
/* Optional */
border:1px solid gray;
}
.focus-me {
position:absolute;
}
感谢您到目前为止的回答。为了澄清问题,请看这个例子:
http://codepen.io/mediadivisiongmbh/pen/bdRjKy
当您将鼠标悬停在容器上时,包含锚点的绝对定位元素将在视图中过渡。当您单击它时,会打开一个灯箱(在本例中为 Magnific Popup)。关闭此灯箱后,主播再次获得焦点并跳入视野,这看起来很奇怪。
默认情况下将锚点设置为 display:none
并将鼠标悬停在容器上时设置为 display:block
可以解决此问题。
我不太清楚你在找什么,因为你有 different story
。但是如果你的意思是你想阻止因为专注于你的link而跳转,你可以在你的link上使用tabindex="-1"
来让它不接受制表位。检查 Updated Pen
编辑
嗯,当看到你的笔时,我认为你需要将 display: none
设置为你的邪恶 link,并在悬停到你的容器时将其设置为 display: inline-block
。检查 Updated Pen.
经过更多研究,我发现问题是由 chrome 中的辅助功能引起的。
在我的例子中,我只需要确保只有在将鼠标悬停在容器元素上时才能访问锚标记。
因此解决方案是像这样改变 CSS:
.container {
position:relative;
overflow:hidden;
/* Optional */
border:1px solid gray;
}
.focus-me {
position:absolute;
display:none;
}
.container:hover .focus-me {
display:inline-block;
}
我偶然发现了 Chrome 和 Firefox 中发生的奇怪行为,当你有一个带有 "position:relative;" 和 "overflow:hidden;" 的元素并且其中有一个带有 "position:absolute;" 的锚点时.
只要锚点获得焦点,它上面的元素就会神奇地跳到顶部,即使它的样式和标记讲述的是不同的故事。
示例:http://codepen.io/mediadivisiongmbh/pen/pJWmxp
您只需要一个与此类似的设置:
HTML
<div class="container">
<h1>I can fly</h1>
<a class="focus-me" href="#">Evil Link</a>
</div>
CSS
.container {
position:relative;
overflow:hidden;
/* Optional */
border:1px solid gray;
}
.focus-me {
position:absolute;
}
感谢您到目前为止的回答。为了澄清问题,请看这个例子:
http://codepen.io/mediadivisiongmbh/pen/bdRjKy
当您将鼠标悬停在容器上时,包含锚点的绝对定位元素将在视图中过渡。当您单击它时,会打开一个灯箱(在本例中为 Magnific Popup)。关闭此灯箱后,主播再次获得焦点并跳入视野,这看起来很奇怪。
默认情况下将锚点设置为 display:none
并将鼠标悬停在容器上时设置为 display:block
可以解决此问题。
我不太清楚你在找什么,因为你有 different story
。但是如果你的意思是你想阻止因为专注于你的link而跳转,你可以在你的link上使用tabindex="-1"
来让它不接受制表位。检查 Updated Pen
编辑
嗯,当看到你的笔时,我认为你需要将 display: none
设置为你的邪恶 link,并在悬停到你的容器时将其设置为 display: inline-block
。检查 Updated Pen.
经过更多研究,我发现问题是由 chrome 中的辅助功能引起的。
在我的例子中,我只需要确保只有在将鼠标悬停在容器元素上时才能访问锚标记。
因此解决方案是像这样改变 CSS:
.container {
position:relative;
overflow:hidden;
/* Optional */
border:1px solid gray;
}
.focus-me {
position:absolute;
display:none;
}
.container:hover .focus-me {
display:inline-block;
}