8 に答える
私自身がアクセシビリティに関して何度も行っているパターンは、誰もがアクセスできるものから始めて、クライアント側でそれを優先ソリューションに置き換えることです。そして、彼らがその技術を持っていない場合、それは優雅に劣化します。具体的には、ここでJavaScriptについて話します。
たとえば、フォームで通常のボタンを使用することから始めます。これは、JavaScriptが有効になっているかどうかに関係なく、すべての人に有効です。次に、javascriptを使用してそのボタンをアンカータグに置き換えるか(cssで:hoverを使用できます)、または単にjavascriptを使用して必要なホバー効果を実行します(jQueryを使用している場合は、イベントをボタンにバインドできます)マウスオーバー)。
つまり、JavaScriptが有効になっておらず、より高度な:hoverの使用法をサポートするブラウザを使用していない少数の人々は、ホバー効果を確認できませんが、常に正常に機能が低下することを保証します。
Internet Explorer 6は、アンカーの:hoverCSS属性のみをサポートします。
IE6をサポートしている場合は、@ charlesが提案するようなJavaScriptソリューションを使用する必要があります。基本的には、要素にクラスを動的に追加/削除する必要があります。私は通常、これらの「修正」を条件付きコメント付きのIE6.jsファイルに入れます。
jQueryの使用はオプションですが、これらの効果を実現するために作成する必要のあるjavascriptの量を減らすのに役立ちます。
JavaScriptを使用すると、Jonが提案するように、ボタンをaタグに置き換えることもできます。これはjQueryを使用していますが、通常のjavascriptまたはその他のライブラリを使用してこれを行うことができます。
var ahtml = "<div class='button'><a href=#>blabla</a></div>"; //whatever the HTML is for the styled a tag
$('button.submit') //select button
.hide()//Hide the button
.after(ahtml) //insert the styled a html
.next() //find the inserted html
.click( function(e) { //add click behaviour to the inserted HTML
$(this).prev().click(); //trigger click event of submit button
return false; //stop both event bubbling and event triggering
});
このようにして、JavaScriptを持たない人のためのボタンがあります。また、JavaScriptを使用している人向けの素敵なスタイルのタグもあります。
解決策を見つけることができたとしても(Matt Rossが言及したものが1つである可能性があります)、洗練されたルックアンドフィールよりもアクセシビリティを選択する必要があります。
次のようなjQueryソリューションはどうですか?
$("input:button").mouseover(function(e) {
$(this).addClass("hovered");
}).mouseout(function(e) {
$(this).removeClass("hovered");
}).mousedown(function(e) {
$(this).addClass("pressed");
}).mouseup(function(e) {
$(this).removeClass("pressed");
});
ここに足を入れているのかもしれませんが、他に考慮すべきことを指摘したかっただけです。ただし、この問題を解決することにした場合、ボタンまたはアンカーが何らかのアクション(レコードの削除や銀行口座の変更など)を実行することになっている場合は、ポストバック(POST)を実行していることを確認することを強くお勧めします。これは、ボタンがフォームで通常行うことです。GETを実行しないでください。これは、achorが通常行うことです。
これは、GETの後に、検索エンジン、ブラウザーのプリキャッシャーなどが偶然に発生しやすいためです。一方、POSTはアクションを実行するものとして認識され、自動的にはフォローされません。
一方、「ボタン」が何らかのクエリを実行している場合は、GETで問題ありません。
また、特にjavascriptを使用して、アンカーを使用して投稿を行うこともできます。
この新鮮な心を持っている人は、私がざっと見た詳細の束をプロバルビーで埋めることができます。
あなたは間違いなくCSSだけでこれを行うことができます(そして貧しいIE6のための小さなjs)。
まず、FFで:hover、:activeなどを使用して動作させます。次に、いくつかのjsを追加して、ホバーのボタンにクラスを追加し、[...]をクリックします。これらのクラスを:hover、:active ...宣言(button:hover、button.hover {color:red})に追加すると、すぐに使用できます。 。サファリとIEのマッサージをする必要がありますが、絶対に行うことができます。
もう1つの可能性は、前の提案の一種のマッシュアップです。私が間違っていなければ、JAWSはvisibility:hidden(ウィンドウの目についてはわかりません)で要素を読み取ります。jsでボタンを削除したり、display:noneに設定したりする代わりに、ボタンをinvisibleに設定すると、クロスユーザーエージェントで機能するはずです。次に、JSだけでリンククリックをフォーム送信にバインドします。