障碍のある方向けの YouTube 動画を再生するためのアクセシブルなサイトを構築しています。:focus を使用するのではなく、onfocus (およびクラス名の変更) を使用しているため、より多くのブラウザーと互換性があり、選択したリンクに視覚的なフィードバックを与えることができます。
テキスト/画像リンクがキーボード フォーカスを取得したときにリスト アイテムの背景のスタイルを設定したいのですが、これは可能ですか?
どうもありがとう、
マイク
障碍のある方向けの YouTube 動画を再生するためのアクセシブルなサイトを構築しています。:focus を使用するのではなく、onfocus (およびクラス名の変更) を使用しているため、より多くのブラウザーと互換性があり、選択したリンクに視覚的なフィードバックを与えることができます。
テキスト/画像リンクがキーボード フォーカスを取得したときにリスト アイテムの背景のスタイルを設定したいのですが、これは可能ですか?
どうもありがとう、
マイク
<li>
プログラムで(キーボード)フォーカスを取得できるかどうかはわかりませんが、プログラムでクラス名を変更する方法を紹介できます。
[コメントに基づいて編集]それがあなたが意味するhrefsである場合、これは実際の例です。タブを使用して次のhrefにジャンプします。
"use strict";
(function () {
var refs = document.getElementsByTagName('a');
document.addEventListener('focus', hoverClass, true);
refs[0].focus();
setTimeout(emulateHover, 800);
function emulateHover() {
if (!document.activeElement.href) {return clearTimeout(0);}
var index = parseInt(document.activeElement.href.split(/#/)[1], 10);
var activeElement = refs[index] || refs[0];
if (activeElement) { activeElement.focus(); }
setTimeout(emulateHover, 800);
}
function hoverClass(evt){
var srcEl = evt.srcElement || evt.target;
var i = refs.length;
while(i--) { refs[i].className = 'a'; }
if (srcEl && !/a/i.test(srcEl.tagName)) { return clearTimeout(0); }
var isA = /a$/i.test(srcEl.className);
srcEl.className = isA ? 'b' : 'a';
}
}());
body {
font: normal 12px/15px verdana, arial;
}
.a {background-color: #eee; transition: all 0.5s 0s}
.b {background-color: green; color:white; transition: all 0.5s 0s}
a {text-decoration: none;}
<ul>
<li><a id="first" class="a" href="#1">line 1</a></li>
<li><a class="a" href="#2">line 2</a></li>
<li><a class="a" href="#3">line 3</a></li>
<li><a class="a" href="#4">line 4</a></li>
<li><a class="a" href="#5">line 5</a></li>
<li><a class="a" href="#6">line 6</a></li>
</ul>
list のような HTML 要素に focus を使用するのは (うまくいくか試したことがない) とは思えません。代わりにホバーを使用してください。
私は次のように行きます; ホバー、マウスエンター、マウスオーバー。
$("ul.someclass > li").mouseenter(function() {
$(this).addClass("current");
}).mouseleave(function() {
$(this).removeClass("current");
});
詳細については;
あなたができるクラスの新しい値を設定するには:
element.className = "A";
jQuery を使用すると、次のことができます。
$(element).addClass("A");
$(element).removeClass("B");
うまくいくと思われる厄介な方法を見つけました:
<?php while ($row = mysql_fetch_assoc($result)) {
$js = "<script language=\"javascript\">";
$js .= "function changeClass$id(){";
$js .= "document.getElementById(\"$id\").setAttribute(\"class\", \"popfocus\");}";
$js .= "function changeClass1$id(){";
$js .= "document.getElementById(\"$id\").setAttribute(\"class\", \"pop\");}";
$js .= "</script>";
echo $js;
echo "<li><div id=\"$id\" class=\"pop\">\n";
echo "<a
onFocus=\"changeClass$id()\"
onBlur=\"changeClass1$id()\"
onMouseover=\"changeClass$id()\"
onMouseout=\"changeClass1$id()\"