7
4

8 に答える 8

13

私自身がアクセシビリティに関して何度も行っているパターンは、誰もがアクセスできるものから始めて、クライアント側でそれを優先ソリューションに置き換えることです。そして、彼らがその技術を持っていない場合、それは優雅に劣化します。具体的には、ここでJavaScriptについて話します。

たとえば、フォームで通常のボタンを使用することから始めます。これは、JavaScriptが有効になっているかどうかに関係なく、すべての人に有効です。次に、javascriptを使用してそのボタンをアンカータグに置き換えるか(cssで:hoverを使用できます)、または単にjavascriptを使用して必要なホバー効果を実行します(jQueryを使用している場合は、イベントをボタンにバインドできます)マウスオーバー)。

つまり、JavaScriptが有効になっておらず、より高度な:hoverの使用法をサポートするブラウザを使用していない少数の人々は、ホバー効果を確認できませんが、常に正常に機能が低下することを保証します。

于 2009-05-22T15:01:44.130 に答える
3

Internet Explorer 6は、アンカーの:hoverCSS属性のみをサポートします。

IE6をサポートしている場合は、@ charlesが提案するようなJavaScriptソリューションを使用する必要があります。基本的には、要素にクラスを動的に追加/削除する必要があります。私は通常、これらの「修正」を条件付きコメント付きのIE6.jsファイルに入れます。

jQueryの使用はオプションですが、これらの効果を実現するために作成する必要のあるjavascriptの量を減らすのに役立ちます。

于 2009-05-22T15:02:07.127 に答える
2
于 2009-05-22T14:46:46.283 に答える
2

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を使用している人向けの素敵なスタイルのタグもあります。

于 2009-05-22T15:53:00.273 に答える
1

解決策を見つけることができたとしても(Matt Rossが言及したものが1つである可能性があります)、洗練されたルックアンドフィールよりもアクセシビリティを選択する必要があります。

于 2009-05-22T14:41:55.450 に答える
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");
});
于 2009-05-22T14:43:39.533 に答える
1

ここに足を入れているのかもしれませんが、他に考慮すべきことを指摘したかっただけです。ただし、この問題を解決することにした場合、ボタンまたはアンカーが何らかのアクション(レコードの削除や銀行口座の変更など)を実行することになっている場合は、ポストバック(POST)を実行していることを確認することを強くお勧めします。これは、ボタンがフォームで通常行うことです。GETを実行しないでください。これは、achorが通常行うことです。

これは、GETの後に、検索エンジン、ブラウザーのプリキャッシャーなどが偶然に発生しやすいためです。一方、POSTはアクションを実行するものとして認識され、自動的にはフォローされません。

一方、「ボタン」が何らかのクエリを実行している場合は、GETで問題ありません。

また、特にjavascriptを使用して、アンカーを使用して投稿を行うこともできます。

この新鮮な心を持っている人は、私がざっと見た詳細の束をプロバルビーで埋めることができます。

于 2009-05-22T15:17:10.183 に答える
1

あなたは間違いなく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だけでリンククリックをフォーム送信にバインドします。

于 2009-05-23T06:27:34.563 に答える