• 締切済み

chromeでの擬似クラス:focus について

現在ホームページを作成中です。 cssで擬似クラス「:focus」を使った時の挙動について困っているので質問させて頂きます。 CSSを使って、サイト内でとあるサムネイルをクリックした時に、そのサムネイルの横に大きく画像を表示させようと思っています。 http://c-brains.jp/blog/wsg/08/06/27-210059.php こちらのサイトを参考にして作ったところ、FirefoxやIEでは期待したとおりに動いてくれたのですが、chromeでは残念ながら反応がありませんでした。 そこで何が原因かを調べるために、簡単なところから解決していこうと思い htmlに <a href="#">あいうえお</a> と記載し、cssに a:link { color:black; } a:focus { color:white; background:blue; } と、記載してみた処、リンクをクリックすればFirefoxやIEでは期待したとおりに文字色や背景色が変わりますが、chromeでは反応がありませんでした。 chrome自体が「:focus」に対応してないのかと思い、色んなサイトで調べてみましたが、数年前の記事では対応しているように見えました。(最近の記事は見つかりませんでした) そこで質問です。もしかして、バージョンが上がって、chromeでは「:focus」に対応しなくなったのでしょうか。

みんなの回答

回答No.4

フォーカスについてちょっと調べてみたのですが、 http://msdn.microsoft.com/en-us/library/ie/ms534654(v=vs.85).aspx MSDNによると、<a>要素は「focus可能」と「tabStop可能」の2つのプロパティを持ち、「<a>はデフォルトで両方がyes」になっています。 MDNでは言及されていないようです。 Webkitはどこに書かれているのかわかりません。。。 http://trac.webkit.org/wiki W3Cのドキュメントにも、<a>や<input>などをクリック操作、タブキー操作したときのデフォルト動作として、focusについての言及はないようです。 http://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#adef-tabindex 推測ですが、Webkitのみ「<a>はデフォルトでfocus可能要素であり、クリックではfocusしないがtabキーでfocus可能」となっていて、 Webkit以外が、「<a>はデフォルトでfocus可能要素であり、クリックでもtabキーでもfocus可能」となっているようです。 <input>は全てのブラウザで、デフォルトでfocus可能要素であり、クリックでもtabキーでもfocus可能となっているようでした。 W3Cの言語仕様にも書かれていないため対処療法(今後のブラウザアップデートで動作が変わる可能性がある)となりますが、tabindexを指定してみてください。 この方法なら、JavaScriptではなくHTMLで指定できるようです。 <a href="#" tabindex="0"> tabstopの操作を指示する物ですが、多くのブラウザがtabstopとfocusを連動しているようです。 また、webkitに関しては、<a>をクリックをした時のフォーカス処理をどう扱うかが変わるようです。 tabindexを0にすると、HTMLに書かれている順番通りにtabstopの順番が決定されます。(tabstopの動作はtabindexを書かない時と同じままで、focusの動作のみが変わる。) =============== 検証 <a href="#" tabindex="0">anchor-0</a> <a href="#" tabindex="0">anchor-1</a> <a href="#">anchor-2</a> <a href="#">anchor-3</a> <a href="#">anchor-4</a> anchor-1をクリックしてtabキーを押すとanchor-2がフォーカスされるので、anchor-1のクリックによりanchor-1にフォーカスが当たった事が確認できます。 しかし、anchor-3をクリックしてtabキーを押すとanchor-0がフォーカスされるので、anchor-3のクリックではanchor-3にフォーカスが当たっていない(全ての要素からフォーカスが外れる)ことが確認できます。 スタイルシートで a:focus{} を指定しておけば、フォーカスに合わせてスタイルが適用されることも確認できます。 ----------- Netscape、Gecko(Firefox)、Trident(IE)、Presto(旧Opera)、フィーチャーフォンなどの動作から考えれば、Webkitだけが特殊だと思いますけどね。 (全てのブラウザが異なる仕様のもとで動作しているそれぞれに正しい動作です。)

全文を見る
すると、全ての回答が全文表示されます。
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

No.2です。 ですからactiveだけに指定すれば良いです。 同じ優先順位、詳細度でしたら後出のもので上書きされます。chromeはactiveだとfocusでないと排他的に解釈しているだけです。 a{display:inline-block;width:10em;text-align:center;} a:link{background-color:red;} a:visited{background-color:yellow;} a:focus{background-color:lime;} a:hover{background-color:aqua;} a:active{background-color:black;} とすると、キーボードでタブやショートカットキー(ALT+A)などで移動したりして試すと良いでしょう。 <p><a href="./A.html" accesskey="A" tabindex="1">A</a></p> <p><a href="./R.html" accesskey="J" tabindex="2">J</a></p> <p><a href="./J.html" accesskey="R" tabindex="3">R</a></p> <p><a href="./W.html" accesskey="W" tabindex="4">W</a></p> スタイルシートを身につけるときは、プロパティなどよりまず先に 5 セレクタ( http://momdo.s35.xrea.com/web-html-test/spec/CSS21/selector.html ) 6 プロパティ値とカスケーディング、継承の割り当て( http://momdo.s35.xrea.com/web-html-test/spec/CSS21/cascade.html ) を徹底的に身につけましょう。  だったら、そもそも、 <div id="album"> <ul> <li><a id="photo01" href="#slide"><em><img src="css_album/img/photo01.jpg" /></em><span>日本大通り駅</span></a></li> そんなHTML書かなくてもCSSだけで良いですよね。これじゃ検索エンジンに意味通じないし・・

全文を見る
すると、全ての回答が全文表示されます。
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

>サイト内でとあるサムネイルをクリックした時に、  ポインターを乗せたときは、:hover、クリックでアクティブなときは:active擬似要素ですよ。focusはキーボードなどで対象となったときです。 よって、ナビゲーション内のリンクでしたら nav ol li a:visited{} nav ol li a:link{} nav ol li a:focus,nav ol li a:hover{} nav ol li a:active{} とこの順番、(:linkと:visitedは排他的ですから順不同) で記述します。HTML4の場合はdiv.nav ol li:linkですかね。  ちゃんとしたものを参考にしましょうね。

css_focus_a
質問者

お礼

お返事ありがとうございます。 focusは本来タブキーとかで対象に取った時の挙動なのですね。 参考にしたサイトだとクリックで対象に取った時に表示するような説明でしたので、勘違いしてしまいました。 今後気をつけていきます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

キーボードのタブキーを使ってフォーカスを当ててみてください。 chromeは、クリック操作ではフォーカスが当たらないか、clickの後にフォーカスが外れるようです。 代替案はJavaScriptで特定のclassを付けるなどでしょうか。CSSだけでは思いつきません。

css_focus_a
質問者

お礼

お返事ありがとうございます。 そうですね、クリックした時に一瞬だけ大きい画像が表示されるのですが、すぐに消えてしまって何故だろうと思っていました。 CSSだけでは難しいということですので、少し苦手ですがJavaScriptで対応してみます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Chrome はそんなに速さはないし、実際は遅い!?

    Chrome はそんなに速さはないし、実際は遅い!? Chromeはそんなに速さはないし、実際は遅い!? firefoxと比べるとページ表示がおそっ!エクステも使えそうな感じだし、すっきりとしたデザインもOK。で速いならchromeに移行しようとしたけど肝心の速さが期待以下でがっかりだ。 エクステ取っ払ってもアドオンてんこ盛りに劣るのかよw 速さ的にはIE8といい勝負かも。firefoxがシャキーン!って感じで表示するのにChromeはシャ・・キーン!っていう具合です。 世間では最近評判いいような記事も見るけど信じられん。(起動だけは速いけど) 頑張ってエクステも集めたのに・・・・せめてfirefox程度まで速くする方法などはないものでしょうか

  • [CSS] focusについて

    入力フォームを作っています。 CSSを使って入力フォームにフォーカスがある場合の表示方法を変えたいのです。 input:focus { background-color: #000000; } 上記の方法で可能なはずですが全く変化ありません。 ブラウザはIE6です。

    • ベストアンサー
    • HTML
  • 擬似クラスの子要素を指定するセレクタ

    リンク色を変えるセレクタについて質問です。 以下のHTMLがある場合に、abcの文字色を変えるCSSセレクタを a:link { color:blue } ←これ以外で教えて下さい。 <div id="id"> <a href="#"><span>abc</span></a> </div> 以下のCSSでは色が変わりませんでした。 #id a:link { color:pink } #id a:link span { color:pink } #id a:link * { color:pink } (HTML構造は都度変わるため隣接セレクタではなく汎用性のある下位セレクタで指定したいです。)

    • ベストアンサー
    • CSS
  • 擬似クラスがupできない

    こんばんは。どうしても擬似クラスがupできません。 =01.css= <style type="text/css"> a:hover{ font-weight:bold; text-decoration:none; color:red; } </style> =index.html= <html> <head> <title>○▲□×</title> <link rel="stylesheet" href="01.css" type="text/css"> </head> どうして擬似クラスがupできないのですか? どこか打ち間違いでしょうか? hoverだけ使いたいので、それ以外は打つ必要ないと 思いますし、今後、他のスタイルも加えて行きたくも 思ってます。 どうぞよろしくお願いします。

  • Google chrome でYAHOOのトップページ表示がおかしい

    ブラウザ Google chromeを使用していますが先ほどからYAHOOのトップページ(通常版)のみCSSがリンクしていないような表示になっています。 IE8やFirefoxでは問題なさそうです。 Google chromeキャッシュ等はクリアーしましたが、症状変わりません。 どなたか、原因のわかる方はいらっしゃいますでしょうか?

  • Chrome ブラウザの配色

    googleブラウザChromeを使っている方で配色の変更方法がわかるかたいらっしゃいませんか? FirefoxやIEなどでは、そのサイトの色を無視して配色をすることができます。(例えば目に優しいようにどんなサイトでも黒地に白文字でリンクは水色など) Chromeではそのようなことはできませんでしょうか? アドオンなどで実現できるのであればそれでも良いのですが・・・ 宜しくお願いします。

  • 送ったURLをChromeで開かせたい

    人にhttps://で始まる、とあるURLをメールで送ります。 そのメールを見る相手側のパソコンにはIEもFirefoxもChromeも導入されている前提で、かつそのパソコンのデフォルトのブラウザは上記3種類のどれかに決まってはいません。(ばらばらです) そんな場合でも、送ったURL Linkをクリックすると、そのLinkに限っては必ずChromeで開くようにする方法(メールへのLinkの貼り付け方)はあるのでしょうか。 確か、Chrome :// とかをつけてhttps:// を送っているようなメールを見たような記憶があるのですが、勘違いでしょうか。

  • Chromeで表示するとズレてしまう

    作成したホームページをIEで表示すると全く問題ないのですが、Google Chromeでチェックするとぐちゃぐちゃで全くでたらめに表示されてしまいます。どうすればきちんと表示することができるのでしょうか?これがCSS ハックというものなのでしょうか?だとすれば、CSSの中にChrome対応の一文を挿入すれば回避できるのでしょうか?どなた様かご教授願えませんでしょうか。どうぞ宜しくお願い致します!!

  • クラス属性?

    CSSの外部呼出しで、 A:link { color: #0033cc; } A:visited { color: #0033cc; } A:active { color : red; } 上記をdivでまとめたいのですが、記述の仕方がわかりません。 そしてもう1パターン A:link { color: #FFFFFF; } A:visited { color: #FFFFFF; } A:active { color : red; } というものもdivでまとめて、外部呼出しのCSSファイルに記述したいのですが、可能でしょうか?

  • style属性を使って擬似クラスを表現することは可能ですか?

    CSSの読み込み方には3通りあります。 1)<head>~</head>内にstyle要素をマークアップする。 2)外部CSSファイルをHTMLに読み込ませる。 3)任意のタグにstyle属性を指定する。 そこで質問なのですが、3)のstyle属性で擬似クラスを指定する事は可能でしょうか? 1)と2)の方法であれば、 div a:link { color : #fff ; background : blue ;} div a:visited { color : #fff ; background : purple ;} div a:hover { color : #fff ; background : aqua ;} div a:active { color : #fff ; background : purple ;} のように指定すればよいだけですが、 3)の方法、つまりstyle属性を用いて擬似クラスの指定の仕方が分かりません。 宜しくお願いします。

    • ベストアンサー
    • CSS