アクセスホテルランクウィジェットを開発
中| 9:00 2010年8月24日には、ティエリKoblentzによって午前アクセシビリティ 、 開発 | 18コメント急いで? ナビゲーションをスキップデモページ 。
多くのeコマースサイト、ソーシャル·ネットワーキング·サービス、オンライン·コミュニティは、評価や評価機能が含まれています。 勧誘の人の意見もビジネスモデルになっており、定格の製品、サービス、企業、それ以上に専用のサイトが存在することになります。
票を表示するために使用される最も一般的なインタフェースがポイント(多くの場合、星のように表される)特定の数は、各校閲者が項目に割り当てられているの "星の評価システム"です。 我々は、AmazonからYelpに、多くのサイトでこのモデルを見つける。
として、 図 、マークアップベースがショーを、両方の視覚的なインタフェースが似ていますが、何がこれら2つのソリューションは、 興味深いものです。 一つは、依存している<map> 、上の他<img> 。
あなたは、ほとんどの評価システムは、多くのユーザエージェント間のセマンティックと "運用"であることが証明され、いくつかのマークアップに基づいていると思うかもしれない - それは評価システムが1つの動作を適用するHTML要素および属性の特定のセットに基づいてされることであり、 JSとCSSを介したスタイル。 それは理にかなっているが、それは真実から遠く離れている。 それがマークアップになると、著者らは、ちょうど約すべてを試してみてください。
-
<a>、 -
<img>、 -
<span>、 -
<li>、 -
<map>、 -
<div>、 -
<input>、 - など...
マイクロフォーマットの場合
評価をマークアップするためにいくつかの画像ベースの手法を提示する前に、私はそれが基本的かつ直接的なアプローチ(から言及する価値があると思うマイクロフォーマット 文字を使用しています ):
<abbr class="rating" title="3 stars">***</abbr> - プロ
- それは簡単とセマンティックです。
- マークアップは最小限で済みます。
- メソッドは、CSSに依存していません。
- 方法は、画像に依存していません。
- はHTTPリクエストはありません。
- 短所
- (すなわち、3.5つ星)の半分の値を表現することは不可能である
- それだけではアスタリスク( "星評価")と "作品"。
- スクリーンリーダーは、デフォルトでは、(このケースでは大したことないかもしれませんが)略語を展開していない。
注意 :スクリーンリーダーは、(少なくともので、私はむしろ★(★)より"*"を使用しJAWSとNVDA )は、HTMLエンティティを無視するように見える。
イメージベースの評価を表示するには、マークアップ
それは画像を表示するとなると、著者は多くのオプションがあります。
評価1枚に1画像
単一のイメージを使用する:
<img src="4stars.png" alt="4 out of five"> - 一つ星

- 二つの星

- 三ツ星

- 4つ星

- 五つ星

- プロ
- 評価ごとに1つのイメージを使用するのは簡単とセマンティックです。
- メソッドは、CSSに依存していません。
- 最小限のマークアップ。
- 短所
- 多くの異なったイメージがあるので、それは多くのHTTPリクエストを作成します。
- 著者は多くのアセット(イメージ時にサイトの色の変更変更するには、CDNにプッシュするために、作成する、など)に対処しなければならないとして、パフォーマンスの問題の上に、それはメンテナンスの悪夢にすることができます。
- 代替テキストは無視されているテキストを選択すると、オペラ(少なくともバージョン9.52で) ことはできません
単位あたり1つの画像
WHATWG 'sからのワーキングドラフト :
<img alt="4 out of 5" src="one-star.png"> <img alt="" src="one-star.png"> <img alt="" src="one-star.png"> <img alt="" src="one-star.png"> <img alt="" src="no-star.png"> - 一つ星
- 二つの星
- 三ツ星
- 4つ星
- 五つ星
- プロ
- 2を使用して
img評価ごとの要素は、HTTP要求の数を減少させる。 - メソッドは、CSSに依存していません。
- 短所
- オペラでは、画像が無効になっている場合、 代替テキストは選択できません、と(小画面表示)で、そのテキストはそれ以下読みやすくなり境界線が描画されます。
これは物議を醸すのワーキングドラフトから取られることに注意してください。 代替テキストは、 正確かつ簡潔にイメージを説明していませんので、私の考えでは、このメソッドは許容できません。 また、このアプローチの基本は、これらのイメージは、コンテンツを表していることであれば、理由なしでそれらのいくつかを残すaltテキスト?
にAjaxian例えば、著者は、彼はそれぞれがコンテンツであることを考慮すれば理にかなっているすべての単一のイメージ 、で代替テキストを使用しています:
<img [snip] alt="+" src="star1.png"/> <img [snip] alt="+" src="star1.png"/> <img [snip] alt="+" src="star1.png"/> <img [snip] alt="-" src="star0.png"/> <img [snip] alt="-" src="star0.png"/> いずれにせよ、単一の要素を使用して対星があるように多くの画像として使用する( imgまたは他の何か)投票機構を容易にする主な利点を持っている-ユーザは自分の投票をキャストするスターの一人を選択する場所。 だから我々はこれを覚えておくべき...
背景画像のスプライト
次のテクニックは、もともとの開発者によって実装された戦略を適応したものですヤフー 音楽 :
マークアップ
<span class="rating r1 stars">1 of 5</span> <span class="rating r2 stars">2 of 5</span> <span class="rating r3 stars">3 of 5</span> <span class="rating r4 stars">4 of 5</span> <span class="rating r5 stars">5 of 5</span> CSS
.stars { background: transparent url(img/sprite.png) no-repeat; } .rating { font-size: 0; height: 19px; overflow: hidden; vertical-align: middle; width: 96px; display: block; } .r1 { background-position: -385px 0; } .r2 { background-position: -288px 0; } .r3 { background-position: -192px 0; } .r4 { background-position: -96px 0; } - 一つ星
- 5の1
- 二つの星
- 5の2
- 三ツ星
- 5の3
- 4つ星
- 5星中の4星
- 五つ星
- 5の5
- プロ
- このメソッドは、単一のスプライトのイメージに依存している単一のHTTPリクエストを必要とします。
- 最小限の "フットプリント"。
- 短所
- コンテンツは画像をオフにして明らかにされていません。
- 何もページが(印刷スタイルシートは、この問題の世話をすることができます)印刷するときに表示しません。
- オペラでは、コントラストの高いスタイルシートは、すべての星が消えます;同じで真であるハイコントラストモードの最適化 。
- (ハイライトを介して)テキストの選択が可能ですが、それは明確ではありません。
マークアップ内のスプライト
このアプローチは基づいているTIP法を使用し、 スプライト画像として<img>要素ではなく、背景画像:
マークアップ
<span title="1 of 5" class="rating r1"><img width="0" height="1" src="sprite.gif" alt=""/>1 out of 5</span> <span title="2 of 5" class="rating r2"><img width="0" height="1" src="sprite.gif" alt=""/>2 out of 5</span> <span title="3 of 5" class="rating r3"><img width="0" height="1" src="sprite.gif" alt=""/>3 out of 5</span> <span title="4 of 5" class="rating r4"><img width="0" height="1" src="sprite.gif" alt=""/>4 out of 5</span> <span title="5 of 5" class="rating r5"><img width="0" height="1" src="sprite.gif" alt=""/>5 out of 5</span> CSS
.rating { position: relative; height: 1.6em; width: 8.1em; overflow: hidden; vertical-align: middle; display: block; } .rating img { position: absolute; width: 40.5em; height: 1.55em; top: 0; border: 1px solid #fff; } .r1 img { right: 0; } .r2 img { left: -24.4em; } .r3 img { left: -16.2em; } .r4 img { left: -8.1em; } - 一つ星
-
5のうち1 - 二つの星
-
5のうち2 - 三ツ星
-
5のうち3 - 4つ星
-
4 5のうち - 五つ星
-
5のうち5
- プロ
- このメソッドは、単一のHTTPリクエストを必要とします。
- この手法では、Firefoxユーザーは"非表示の画像"または"画像が見えないように"(開発者のツールバーから)選択したときに内容を明らかに上記の4つの方法のひとつに過ぎません。
- それが依存する他のソリューションの場合のようにイメージが使用できない場合、赤い"x"は、それぞれの代わりに、最高評価(5すなわち5位)にのみ表示されます
img要素。 - 短所
- 画像の表示は、CSSに依存しています。
それは他の画像置換のテクニックとは異なり、このメソッドは許可されている注目に値する。
- 画像は、テキストサイズの設定に応じて拡張できます。
- 画像が出力されます。
- 簡単に全体像として選択される代替テキストは、(Firefox)の強調表示されます。
- 画像は、高コントラストの設定/スタイルシートで消えないし。
- Operaの代替テキストの選択(画像が無効になっている場合)。
- Operaのスモールスクリーン表示でボーダレス代替テキスト。
票を投じるようにマークアップ
ネイティブメカニズムで始まる
票を投じるために、我々は、単純なユーザーの選択と提出することができ、低レベルの投票メカニズムを必要としています。 このため、我々は、ラベルとコントロールを持つフォームを使用して頼ることができます。
マークアップ
<fieldset> <legend>Rating</legend> <label><input type="radio" name="movie" value="1_5">1/5</label> <label><input type="radio" name="movie" value="2_5">2/5</label> <label><input type="radio" name="movie" value="3_5">3/5</label> <label><input type="radio" name="movie" value="4_5">4/5</label> <label><input type="radio" name="movie" value="5_5">5/5</label> </fieldset> 結果
追加改行と空白
優れた読みやすさのために、私たちは追加<br>と空白を。
マークアップ
<fieldset>
<legend>Rating</legend> <label><input type="radio" name="movie" value="1_5"> 1/5</label><br> <label><input type="radio" name="movie" value="2_5"> 2/5</label><br> <label><input type="radio" name="movie" value="3_5"> 3/5</label><br> <label><input type="radio" name="movie" value="4_5"> 4/5</label><br> <label><input type="radio" name="movie" value="5_5"> 5/5</label> </fieldset> 結果
マークアップでスプライトのイメージを導入
このソリューションでは、我々は上記の例では1より小さいスプライトを使用しています。 それは今で構成されている2つの星 ( "オン"と"オフ")。
我々は置くimgラベル内の要素を。 我々は、彼らが我々は彼らを介して特定の寸 法を設定することにより、それらを"隠す"ため、CSSのサポートなしで値を持たないと仮定widthとheight属性を指定します。 を使用していることに注意してください0両方の属性を持つことは、いくつかのUAのに壊れたイメージを示すだろう。
<form ...> <fieldset> <legend>Rating</legend> <label class="one" title="1 out of 5"><input name="LandOf" value="1" checked="checked" type="radio"> 1/5<img src="star-sprite.gif" alt="" height="0" width="0"></label> <label class="two" title="2 out of 5"><input name="LandOf" value="2" type="radio"> 2/5<img src="star-sprite.gif" alt="" height="0" width="0"></label> <label class="three" title="3 out of 5"><input name="LandOf" value="3" type="radio"> 3/5<img src="star-sprite.gif" alt="" height="0" width="0"></label> <label class="four" title="4 out of 5"><input name="LandOf" value="4" type="radio"> 4/5<img src="star-sprite.gif" alt="" height="0" width="0"></label> <label class="five" title="5 out of 5"><input name="LandOf" value="5" type="radio"> 5/5<img src="star-sprite.gif" alt="" height="0" width="0"></label> </fieldset> </form> 上記のマークアップで、我々は(ほとんどのブラウザで)ラベルを選択を介してフィールドの選択を期待できることに注意してください。
アクセシビリティを考慮し
: は残念ながら、このマークアップは、少なくとも2つのスクリーンリーダーで問題を作成し、 JAWSとNVDA (参照テストケースこれらのバグのためにを参照)。 この問題は、の使用に関連しているtitle属性と代替テキストは空の文字列。
スクリーン·リーダー·ユーザーを混乱しないようにこの問題を回避するには、代替テキスト( "星"を使用することであるalt )を挿入するにはJavaScriptを使用してtitle マウスで。
優れたマークアップ
<fieldset>
<legend>Rating</legend> <label><img src="img/small-sprite.gif" width="0" height="1" alt="stars"><input type="radio" name="movie" value="1_5"> 1/5</label><br> <label><img src="img/small-sprite.gif" width="0" height="1" alt="stars"><input type="radio" name="movie" value="2_5"> 2/5</label><br> <label><img src="img/small-sprite.gif" width="0" height="1" alt="stars"><input type="radio" name="movie" value="3_5"> 3/5</label><br> <label><img src="img/small-sprite.gif" width="0" height="1" alt="stars"><input type="radio" name="movie" value="4_5"> 4/5</label><br> <label><img src="img/small-sprite.gif" width="0" height="1" alt="stars"><input type="radio" name="movie" value="5_5"> 5/5</label> </fieldset> 結果
スタイリング
CSSを介して画像に寸法を与える
我々は使用emイメージフォントサイズに応じて拡張または縮小できるようにします。
マークアップ
変わらない
CSS
img { width:2.8em; height:1.4em; } 結果
既に見ることができるように、画像をクリックすると、対応するラジオボタンを選択します。 暗黙の標識は、この動作を(IEを除く)を生成し、スクリプティングの必要はありません。
流れからイメージを削除する
スタイリングlabelとposition:relativeとした画像position:absoluteのtop / leftの値は、非表示にするに十分であるinputラベルの内側と、テキストを。
マークアップ
変わらない
CSS
ラベル{ 位置:相対; } IMG { 幅:2.8em; 高さ:1.4em; 位置:絶対; トップ:0; 左:0; }
結果
ラベルごとに1つ星を表示する
私たちはスタイルのラベルを、その寸法は、単一の星の高さと幅を一致させるようにします。
マークアップ
変わらない
CSS
label { position:relative; 高さ:1.4em;
幅:1.4em;
オーバーフロー:隠された;
表示:ブロック;
}
IMG {
幅:2.8em;
高さ:1.4em;
位置:絶対;
トップ:0;
左:0;
} 結果
水平方向の星を表示する
我々は削除br sを、我々は、ラベルをフロートさせます。
マークアップ
変わらない
CSS
BR { ディスプレイ:なし; } ラベル{ 位置:相対; 高さ:1.4em; 幅:1.4em; オーバーフロー:隠された;表示:ブロック;フロート:左; } IMG { 幅:2.8em; 高さ:1.4em; 位置:絶対; トップ:0; 左:0; }
結果
評価に応じてスプライト画像を表示する
評価 "5のうち3つの"を設定するために、我々は最後の二つのラベルに同じクラスを適用します。 このクラスは、ラベル内の画像の位置をシフトします。
マークアップ
<fieldset> <legend>Rating</legend> <label><img src="img/small-sprite.gif" width="0" height="1" alt="stars"><input type="radio" name="movie" value="1_5"> 1/5</label><br> <label><img src="img/small-sprite.gif" width="0" height="1" alt="stars"><input type="radio" name="movie" value="2_5"> 2/5</label><br> <label><img src="img/small-sprite.gif" width="0" height="1" alt="stars"><input type="radio" name="movie" value="3_5"> 3/5</label><br> <label クラス= "no_star" > <img src="img/small-sprite.gif" width="0" height="1" alt="stars"> <input type="radio" name="movie" value="4_5"> 4 / 5 </ラベル> <br>
<ラベル クラス= "no_star" > <img src="img/small-sprite.gif" width="0" height="1" alt="stars"> <input type="radio" name="movie" value="5_5"> 5 / 5 </ラベル>
</ fieldset要素> CSS
br { display:none; } label { position:relative; height:1.4em; width:1.4em; overflow:hidden; float:left; } img { width:2.8em; height:1.4em; position:absolute; top:0; left:0; } 。no_star IMG {
左:-1.4em;
} 結果
情報を表示するだけで画像に依存しない
それは画像が利用できない場合にはすべてのディスプレイへの選択肢を提供することが重要です。 ラベルやラジオボタンが互いの上にあるようにスタイリングされているためです。 簡単な解決方法は、移動することですinput (つまり、使用してテキストをオフスクリーンtext-indent:-999em )とラベルに背景色を適用します。
マークアップ
変更なし
CSS
br { display:none; } label { position:relative; height:1.4em; width:1.4em; overflow:hidden; float:left; 背景:ティール。
マージン右:1pxの。
テキストインデント: - 999em。
}
IMG {
幅:2.8em;
高さ:1.4em;
位置:絶対;
トップ:0;
左:0;
}
。no_star {
背景:#cccの;
}
。no_star IMG {
左:-1.4em;
} 注 :
-
text-indentも上向きには、イメージのコントロールがフォーカスを取得するたびにジャンプが修正されています。 - 右マージンは背景色が正方形ではなく、矩形を(同じ背景色を共有する隣接したラベルで起こるでしょう)を作成を確認することです。
結果
タッチ仕上げ
- 我々は、擬似クラスを使用して
:hover、いくつかのロールオーバー効果を作成する - 我々は、fieldset要素のボーダーを非表示
- 我々は、凡例を非表示
- 我々は、スタイルにカーソルを。
マークアップ
変わらない
CSS
br { display:none; } label { position:relative; height:1.4em; width:1.4em; overflow:hidden; float:left; background:teal; margin-right:1px; text-indent:-999em; } input { position:absolute; left:-999em; top:.5em; } img { width:2.8em; height:1.4em; position:absolute; top:0; left:0; カーソル:ポインタ;
}
。no_star {
背景:#cccの;
}
。no_star IMG {
左:-1.4em;
}
ラベル:ホバー{
不透明度:0.5;
フィルタ:アルファ(不透明度= 50);
}
fieldset要素{
国境:0;
}
伝説{
テキストインデント: - 999em。
} 注 : label:hover画像を介してIE6とOperaで背景色の出血では無視されます。 でデモ·ページは、代わりに使用するのではopacity 、私が使用して別のスプライト 4つの状態を示しています。
結果
ユーザーとの対話を可能にすることなく、評価を表示する
我々は、追加することによって、 "読み取り専用"の評価を行うことができますdisabledしてchecked 、適切に属性をinputフィールド。
マークアップ
<fieldset> <legend>Rating</legend> <label><img src="img/small-sprite.gif" width="0" height="1" alt="stars"><input type="radio" name="movie" value="1_5" 無効にする > 1月5日</ラベル> <br>
<label>は<img src="img/small-sprite.gif" width="0" height="1" alt="stars"> <入力タイプ= "ラジオ"名前= "映画"値= "2_5" 無効にする > 2月5日</ラベル> <br>
<label>は<img src="img/small-sprite.gif" width="0" height="1" alt="stars"> <入力タイプ= "ラジオ"名前= "映画"値= "3_5"にチェック= " チェック "> 3月5日</ラベル> <br>
<label class="no_star"> <img src="img/small-sprite.gif" width="0" height="1" alt="stars"> <入力タイプ= "ラジオ"名前= "映画"の値= "4_5" 無効にする > 4月5日</ラベル> <br>
<label class="no_star"> <img src="img/small-sprite.gif" width="0" height="1" alt="stars"> <入力タイプ= "ラジオ"名前= "映画"の値= "5_5" 無効にする > 5月5日</ラベル>
</ fieldset要素> CSS
使用してルール:hover削除されました
プロセスに多くの思考を与え
この時点では、スクリプトのサポートなしで投票をすることは可能ですが、晴眼者ユーザーは自分の選択についての見当がつかない。 だから我々はにJavaScriptを使用します。
- 、彼の選択に関してユーザーにフィードバックを与える
- 彼らはラジオボタンをナビゲートするときにキーボードのユーザーに視覚的な手掛かりを与える。
同時に、我々は挿入するスクリプトを使用することの利点を取るtitle 、ユーザーがラベル/星にカーソルを合わせると"ツールチップ"を作成する属性を。
JavaScriptをせずに選択に関するフィードバックの不足のため、我々のスタイルのラベルとフォーム·コントロールのスクリプトのサポートがある場合のみ 。 我々はフラグを設定するには、JavaScriptを使用してこれを行うにはhtml要素とし、我々はそのフックを含む子孫セレクタに基づいてルールを作成します。 フラグが指定されていない場合、そのルールは適用されないと要素が表されていない 。
これは、 デモページ 、最終的な製品。 このソリューションは、さまざまな設定に応じてどのように動作するかを確認するには、テキストサイズを増やしてイメージのパスを破るには、JavaScriptを無効にするには、CSSの電源をオフにし、より多くのためにお好みの開発ツールを使用することができます...
包む
"許容できる"ソリューションを考え出すことは、ユーザーのニーズ、ユーザエージェント "の特殊性、ユーザエージェントの設定や詳細情報を識別する必要があります - これは、広範なテストを意味します。
ベストプラクティスに従うことが常に確実なものではないため、このプロセスでは、ユーザのフィードバックが不可欠である。 例えば、のために値を設定しませんが、前述のようにaltラベル内の画像の属性を行うための安全なものになるように見えるが、それは少なくとも2つのスクリーンリーダー(参照の問題を作成することが判明したテストケースを )。
また、補助デバイスのユーザーからのフィードバックは、いくつかの検証エラーメッセージを無視することができます- 1つとして、Firefoxのアクセシビリティツールバーのレポート(に従ってhttp://bestpractices.cita.uiuc.edu/html/nav/form/ )。
ここでの目標は、しかし、すべてを修正することはなかった。 ポインティング·デバイスなしで票を投じることができることが私の最優先課題の一つであったが、画像が無効になっているOperaのソリューションのルックアンドフィールを向上させ、私は不可欠と考えるものではありません。
この "旅"の中で最も興味深い部分は、次のような問題に対処する、様々な条件下で多くのユーザーへのソリューションにアクセスできるようにすることでした。
- 画像オフ、
- JavaScriptをオフ、
- CSSオフ、
- 上記の組み合わせ。
それは、この技法が依存しているかを知ることもいいですimgむしろ星が可能になります背景画像よりも要素:
- は、ユーザーの設定に従って、自分自身のサイズを変更する
- ハイコントラストモードでshow、
- デフォルトでは、印刷される(背景画像とは異なります)。
このソリューションは、この単一のスプライトに依存しているとして、このすべてが、パフォーマンスを犠牲にせずに付属しています。 ![]()
遅く見つける
私は最近、Amazonがその投票ページ用に構築したシステムを発見しました。 彼らはスクリプトのサポートに応じてさまざまなソリューションを提供するとして、それはかなり興味深いものです。 スクリプトのサポートがある場合、それらは画像の使用<map>彼らはラジオボタンを使用しないスクリプトのサポートがない場合は、(興味深いアプローチ)。 両方のケースで、このソリューションは、キーボードのユーザーにアクセス可能で、これはAmazonのプラットフォームの差別化コアである機能へのアクセスを最大化することができます。
彼らは画像とラジオボタンを置き換えるためにJavaScriptを使用しないことに注意してください<map>はなく、彼らが使用noscriptマークアップは、ラジオボタンが含まれているテーブル内の要素を。
"アウトボックス"ソリューション
- Dreamweaver®の
- Spryの評価ウィジェット
- YUI
- YUIのためのランクスクリプト
- YUIのランクスクリプト
- jQueryの
- ハーフ星評価プラグイン
- アハトのjQueryのAjax
- シンプルな星の評価システム
- PHP、MySQLとjQueryで5つ星の評価システム
- ワードプレス
- WordPress用GD星の評価システム
- GD星評価
- レビューのためのランク
- フラッシュ
- 5つ星評価システムのコンポーネント
- その他。
- 星の評価はどうあるべきか
- 星空ウィジェット2
特別な感謝
彼らの貴重なフィードバックのためにビクターTsaranとトッドKlootsに感謝します。
共有および拡張: del.icio.usでブックマーク | Diggそれ! | reddit!
18コメント
申し訳ありませんが、コメントフォームは、この時点でクローズされます。





[...]アクセスホテルランクウィジェット»Yahoo!のユーザーインターフェイスブログ(YUIBlog)の開発を介して。 [...]
でpingbackのアクセスホテルランクウィジェットを開発 - 2010年8月24日#
ちょっとあなたが評価ウィジェットのNetflixの実装を調べませんでした驚いた...?
ジムGによるコメント- 2010年8月25日#
@ジム
私もそれについて考えていなかったので、私はNetflixのユーザーではないが、それは良い点です。
あまりにも悪い彼らは私が彼らの解決策を見てみることができます前に、私は月にサインアップしたいと思います。 あなたが;)私が興味を持ったように私はそれでも行うことができます
によるコメントティエリKoblentz - 2010年8月25日#
記事をありがとう! それは、アクセシビリティを考えると、ラジオボタンが便利しばしば入って来ているようです。 我々はそれがラジオボタンでそれをコーディングする完璧なセンスアクセシビリティ賢明行われる検索のドロップダウンフィルタ(検索画像検索Wikipediaなど)を持ってどこに我々は最近、問題があった。 にもかかわらず、視覚的にそれは間違いなくラジオボタンを使用する最初の考えではなかった...
ところで、ここで星の数(私はこのコードは文字化けないことを願って...)のためにNetflixのコードは次のとおりです。
<a rel="nofollow" class="rv5"率にtitle="Click映画"Loved It""href="…"tabindex="0">レート5つ星</ a>を
によるコメントデビッド·カルフーン - 2010年8月26日#
私はあなたが本当にmicroformatsのアプローチを理解していないと思う。 それは半分の値を持つことは完全に可能だとは '星'をする必要はありません。 これは完全に許容される必要があります。
<span class="rating"> <img src="3-5-stars.png" alt="3.5"> </ SPAN>
あなただけレート1.0から5.0までという制限があります。
によるコメントロブ·クラウザー - 2010年8月27日#
@デビッド:ありがとう:)
@ジム:
ダビデは掲載しスニペットを見て、それはマークアップ/ CSSに来るときNetflixは特別何もしないと思われる。 彼らはリンクを使用して、私の知る限り、彼らは私がこの記事で言及の問題が付属して背景画像のテクニックを使用しています。
もちろん、そのスニペットから私は行動について言うとメカニズムをフォールバックすることはできません...
しかし私には奇妙に思えることの一つは、href属性(彼らはリンクを "無効"にする値を切り替えるコースの場合を除きます)のリンク上でtabindex = "0"を使用することである。
@ロブ:
私は、あなたがポイントを逃したと信じています。 私がこの記事でmicroformatsを言及する場合は、代わりに画像の文字の使用(*)のために、彼らの"画像なし"のアプローチのためのものです。 その場合、それは半分の値を表現することはできません、あなたはかなりのアスタリスク( "*")で立ち往生している。
サイドノートとして、あなたが投稿ソリューションは、9画像にほかならを必要としないだろう。
私はより良いアプローチになると思い。
1。 星は透明されている画像を使用し
2。 スパン内の画像をラップ
3。 (それがすべて透けて見えます)スパンに背景色を適用する
4。 評価に応じてサイズスパン
この方法では、単一のイメージで、それは半分の値を含む0から5までのすべての可能な状態を表すために可能でなければなりません。
このケースでは、私の例のように、プレーンテキスト値を伝える必要があり、全くの "alt"の値が設定されてはいけません。
@デビッド、@ジム、@ロブ:あなたのフィードバックのおかげ
によるコメントティエリKoblentz - 2010年8月27日#
私は1つの例で2つのポイントを作るしようとしていたので、申し訳ありませんが、イメージは、物事を混同した - 私は再び説明しよう。
値はabbr要素のtitle属性から来ているので、あなたの例では(*)文字は無関係です。 これは、 abbr要素設計パターン 。 したがって、これらの:
<abbr class="rating" title="3.5"> 3年半の星</ ABBR>
<abbr class="rating" title="3.5"> 70パーセント</ ABBR>
<abbr class="rating" title="3.5">ロバ</ ABBR>
すべてが5.0 3.5の評価を示しています。 もちろん、残念なことなので、これらの操作を行います。
<abbr class="rating" title="3.5"> *** </ ABBR>
<abbr class="rating" title="3.5"> ****** </ ABBR>
しかし、あなたが例えば "半分の星 'をマークするために適当な文字を持っている限り、文字を使用して、3.5つ星をマークアップできます。
<abbr class="rating" title="3.5"> *** X </ ABBR>
私は記事の残りの部分が大きいと言及すべき、と私は今、マイクロフォーマットについては上でくどくどやめておこう:)
によるコメントロブ·クラウザー - 2010年8月27日#
@ロブ
私はABBRデザインパターン;)で始めるしないでください
私はABBR要素を理解する方法は、タグの間に内容が略語であり、title属性は、拡張のために使用されていることです。
私の例では、*の文字は、メインデータを*である。 二人の関係が重要であるので、タイトルはマイクロフォーマットに他のユーザーに関連するだけではありません。 関連したタイトルは、タイトルの値を読み取ることを選択したマウスのユーザー(ツールチップ)もSRのユーザーを混乱させることはありません。
私の例では、 "***"は"三つ星"の略です 。
あなたには、 "***"、 "****"、ロバなどが "三半の星"のすべての略語です。 それはマイクロフォーマットの外で意味をなすのでしょうか?
すみませんが、私見では、マイクロフォーマットは、ABBRの使用方法はハックに過ぎません。 それはマイクロフォーマットのために働くかもしれないが、多くのユーザーにドキュメントの品質を低下させる:-(
によるコメントティエリKoblentz - 2010年8月27日#
はい、そうでしたが、私のポイントはである必要はありませんでした。 マイクロフォーマットが関係している限り、要素のテキストの内容は関係ありません。
よくロバは、動物の名前に基づいて評価システムを持ついくつかの風変わりなサイトがあった場合かもしれないが、他の2つは悪い例になるはずだった。
はい彼らは、それはそれを使用して、元の例でした。 私は、分数の値は実際に可能であったことを示すためにしようとしていた私の元の例では、しませんでした。 しかし、その後、代わりにポイントの画像の使用に焦点を当てたので、代わりにあなたの例に基づいて、同じポイントを作ってみました。
私はちょうどあなたの3両論の二つは、実証されたマイクロフォーマットの制限されていないことを指摘しようとしている。 私はあなたが私を誤解しているように見える理由かもしれないマイクロフォーマットのアクセシビリティまたはそれ以外の場合、約いかなる請求をしなかった。
あなたはABBRを使用しない場合は、使用価値のタイトルを 、代わりに、マイクロフォーマットで分数の評価値を表すことが可能であるいずれかの方法を、彼らは(必ずしもアクセシビリティと互換性のファッションでも)アスタリスク(*)以外のもので"仕事"か。
私は初めに小さなマイクロフォーマットの例では、すべてを指していました知っているので、私は本当に、この時間をシャットダウンします。
によるコメントロブ·クラウザー - 2010年8月27日#
ごめんなさい、私はプレゼンテーションのために、マークアップだけを記事全体を読み、すべてのコメントをスキップしますが、私はHTML5を利用するアイデアを、持っていけない。
実際に、我々は唯一の、1つの要素が必要になります。
残りの部分は、CSS(3)で行うことができます。 私は2つのアイデアを持っています:
黄色の星、ハーフスターと灰色の星:1)これは、3つの項目を含む、スプライトに基づいています。 複数の背景を使用すると、そのすべてを構築することができます。 最初の背景には、必要に応じて、それらグレースター、ハーフスターではなく、黄色の星を繰り返すことになります。 このマークは、CSSと重いセレクタの非常に多くの使用が必要にもかかわらず:
meter.rating [値= "2"] {...}のすべての異なる値を持つ= "x"のセレクタ。
2)これはまた、2つの行と、スプライトに基づいています。
最初の行:5、黄色、5灰色の星
番目の行:4.5黄色、4.5灰色の星
セレクタは、まだ上記と同じになりますが、それは背景を一緒に得ることが容易になるだろうと思います。 どちらかのスプライトの第一または第二の行を使用し、背景の位置と、それが正しいの星を表示し、その目的の位置に行をシフトします。
これはおそらくjavascriptのハック(document.createElement( "メートル"))で、このような方法を実装することも可能です。 アクセシビリティツールはこれを読むためにいくつかの時間がかかるだろうが、我々はクリーンなマークアップがあります。 したがって、現在の将来:)いくつかの考え
によるコメントgossi - 2010年8月31日#
OUは、優れたマークアップは次のように次のようになります。
5のうち3.5
または任意のいずれかのメーターやtitle属性に入れます。
によるコメントgossi - 2010年8月31日#
Harch、マークアップが取り除か、いまいましいGOTS
<meter class="rating" min="1" max="5" value="3.5" title="Stars"> 5のうち3.5 </計>
これが動作するようになりました期待
によるコメントgossi - 2010年8月31日#
素晴らしい記事ですが、後でjsで隠すべきか、プッシュボタン "投票"について忘れてはいけません。
ローマ人によるコメント- 2010年9月2日#
@ローマ
あなたは、デモページをチェックしましたか? デモページの下部? ;-)
ご意見をいただきありがとうございます
@ Gossi
この資料では、ブラウザ間で、様々な条件(ハイコントラストスタイルシート、画像オフ、JSオフなど)で動作するソリューションを作成する方法についてです。
私は、1つはHTML5の要素、属性セレクタと、スプライトの画像を使用してこれを達成することができるかわからない。 少なくともまだ;-)
あなたのコメントをありがとう
によるコメントティエリKoblentz - 2010年9月3日#
[...]年、ティエリKoblentzは、星の評価ウィジェットを近くで見ていたアクセスホテルランクウィジェットの開発と呼ばれるヤフーのユーザーインターフェイスのブログに興味深い記事を公開しました。 その記事では、ティエリーは素晴らしい仕事[...]をしました
ピンバックによるシンプルアクセスランクウィジェット«ライフ@高速道路通信 - 2011年4月28日#
ティエリー、私は上のフィードバックを得ることを期待していたわずかに異なる手法を試みたガイドラインとして、ソリューションを使用して...
http://www.lifeathighroad.com/web-development/a-simple-and-accessible-star-rating-widget/~~V
によるコメントマイクバッジリー - 2011年4月28日#
@マイク
私は、あなたのブログであることをしました
によるコメントティエリKoblentz - 2011年4月28日#
これは素晴らしい。 私のプロジェクトのいずれかでこれを実装し、HTTP要求を削減します
によるコメントラス - 2011年5月3日#