2013-04-18 5 views
5

今日、私は奇妙な問題を抱えています。Chromeでは、オーバーフローした隠しコンテナから絶対的に配置された要素に焦点を合わせると、Chromeブラウザ(Mac)で表示されます。Chromeにフォーカスしたときに隠し要素が表示されないようにするにはどうすればよいですか?

私は、問題を説明するためのバイオリン作りました:Htmlのhttp://jsfiddle.net/GHgtc/

<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; 
} 

あなたの助けをありがとう!

乾杯!

+1

OK、これは不気味です... – xpy

+1

'#inner-button:focus {right:-40px;}を使用しても、フォーカスを失うと表示されます。 – xpy

+0

情報については、FFでも同様です。 – xpy

答えて

2

「内側ボタン」に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> 

UPDATE:

私は自分自身のいくつかのフォーカスの問題に取り組んでいる間、あなたの問題への別の可能な解決策があると実感しました。必要なフォーカスが後で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を動的に表示することができます。

+0

こんにちは、はい、私はその解決策で作業するようになりましたが、フォーカスを妨げるので望ましくありません。問題は、この奇妙な副作用なしにフォーカスを利用できるようにする方法です... – Yukulelix

+2

ああ。アンカーリンクは、タブをクリックするだけでフォーカスを得ることができます。これは、スクリーンリーダーやキーボードのみのナビゲーションに必要なアクセシビリティに関連する動作です。それは実際には正常です。 Safariはユニバーサルアクセスアシスタンスでしか表示していないようです...別のイベントが発生するまでそのインナーボタンを隠したい場合は、まず可視性で非表示にします。 ?あなたの位置:絶対;メソッドは現時点では技術的にそのボタンを隠すことはありません。可視性のみ:非表示;または表示:なし。フォーカスしたときに実際に隠すでしょう。すなわち、アクセシビリティ上の理由からフォーカスされたリンクが常に表示される。 – hexalys

関連する問題