【问题标题】:How to prevent hidden element to be shown when focused in Chrome?如何防止在 Chrome 中聚焦时显示隐藏元素?
【发布时间】:2013-10-19 12:29:05
【问题描述】:

我今天有一个奇怪的问题,在 Chrome 中,当我关注一个绝对位于其溢出隐藏容器之外的元素时,它会在 Chrome 浏览器 (Mac) 中可见。

我做了一个小提琴来说明这个问题:http://jsfiddle.net/GHgtc/

HTML

    <div id="container">
        <a id="inner-button" href="#">You can see me !</a>
    </div>

CSS

#container{
    display: block;
    background: blue;
    width: 200px;
    height: 30px;
    position: relative;
    overflow: hidden;
}

#inner-button{
    display: block;
    background: red;
    width: 20px;
    height: 20px;
    position: absolute;
    top: 5px;
    right: -20px;
}

感谢您的帮助!

干杯!

【问题讨论】:

  • 好吧,这太可怕了……
  • 即使您使用#inner-button:focus{ right:-40px;},它也会变得可见,但会失去焦点。
  • 对于信息,同样适用于FF。

标签: css google-chrome focus overflow css-position


【解决方案1】:

在“内部按钮”上使用 tabindex="-1"。那会妨碍焦点。 http://jsfiddle.net/GHgtc/2/

<input placeholder="focus on me then press tab" type="text">
<div id="container">
    <a id="inner-button" tabindex="-1" href="#">You can see me !</a>
</div>

更新:

在处理我自己的一些焦点问题时,我意识到您的问题还有另一种可能的解决方案。如果您需要稍后通过 javascript 事件触发焦点,则可以使用 z-index:-1。

#inner-button{
    display: block;
    background: red;
    width: 20px;
    height: 20px;
    position: absolute;
    top: 5px;
    right: -20px;
    z-index:-1;
}

http://jsfiddle.net/GHgtc/3/

这将使它保持焦点但隐藏。您可以使用 z-index:0 动态使其可见。

【讨论】:

  • 嗨,是的,我是来使用该解决方案的,但它会妨碍焦点,这是不需要的。问题是如何在没有这种奇怪副作用的情况下保持焦点可用...
  • 嗯嗯。如果您点击一个锚链接,它将聚焦它,这是屏幕阅读器或“仅键盘”导航所需的与可访问性相关的行为。其实很正常。似乎 Safari 只在通用访问辅助下显示它......如果你想隐藏那个内部按钮直到另一个事件发生,那么首先用可见性隐藏它怎么样:隐藏; ?你的立场:绝对;方法目前在技术上并未隐藏该按钮。只有可见性:隐藏;或显示:无;专注时实际上会隐藏它。即,出于可访问性原因,将始终显示一个重点链接。
猜你喜欢
  • 2021-01-30
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多