Bootstrap 3のsr-onlyとは何ですか?


748

sr-only使用するクラスは何ですか?重要ですか、それとも削除できますか?なしで正常に動作します。

これが私の例です:

<div class="btn-group">
    <button type="button" class="btn btn-info btn-md">Departments</button>
    <button type="button" class="btn btn-info dropdown-toggle btn-md" data-toggle="dropdown">
    <span class="caret"></span>
    <span class="sr-only">Toggle Dropdown</span>
    </button>
    <ul class="dropdown-menu" role="menu">
        <li><a href="#">Sales</a></li>
        <li><a href="#">Technical</a></li>
        <li class="divider"></li>
        <li><a href="#">Show all</a></li>
    </ul>
</div>

回答:


772

ブートストラップのドキュメントによると、このクラスは、スクリーンリーダー専用の情報をレンダリングされたページのレイアウトから隠すために使用されます。

すべての入力にラベルを付けないと、スクリーンリーダーでフォームに問題が発生します。これらのインラインフォームでは、.sr-onlyクラスを使用してラベルを非表示にできます。

使用されるスタイリングの例を次に示します。

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  border: 0;
}

重要ですか、それとも削除できますか?なしで正常に動作します。

重要です。削除しないでください。

アクセシビリティのために、常にスクリーンリーダーを検討する必要があります。クラスを使用すると、とにかく要素が非表示になるため、視覚的な違いはありません。

アクセシビリティについて読むことに興味がある場合:


12
推奨
記事

2
@katranciあなたが参照する記事には、RTLコンテンツの問題など、いくつかのポイントがありません。ここでの答えは良く見えます。
クリストフ

1
@Christopheコンセプトを理解するには、この記事をお勧めします。それはclipping
RTL

9
正直なところ、この言語は非常に混乱していますthe class is used to hide information used for screen readers。スクリーンリーダーから非表示になりますか?それとも単にブラウザに表示されませんか?ドキュメントに「sr-onlyクラスは要素がスクリーンリーダー専用であり、ブラウザに表示されないことを示している」のような記述がある場合は、より明確になります。
Stack0verflow、2015年

2
混乱を招くようなことはないと思います。クラスは情報を非表示にするために使用されていることをはっきりと示しています。これはスクリーンリーダーによってのみ表示されることを意図しています。
Lee

34

JoshCが言ったように、このクラスはスクリーンリーダーに使用される情報を非表示にするために使用されます。しかし、ラベルを非表示にするだけでなく、メインコンテンツの前に複雑なナビゲーションや広告がある場合は、視覚障害のあるユーザーにとって望ましい「メインコンテンツにスキップ」する内部リンクを目隠しユーザーから非表示にすることを検討してください。

サイトでスクリーンリーダーをさらに操作したい場合は、W3Cの標準化されたARIA属性を使用してください。Googleのオンラインコースにアクセスすることをお勧めします。このコースには最長1〜2時間、または少なくともGoogleの40分のビデオをご覧ください。

世界保健機関によると、2億8500万人が視覚障害を持っています。したがって、ウェブサイトをアクセシブルにすることは重要です。

アップデート2019:

開発者は、特にスクリーンリーダーをターゲットにするのではなく、すぐに使えるすべてのコンテンツにアクセスできるコンテンツを作成する必要があります。これは常に可能とは限りませんが、ARIAと「スクリーンリーダーのみ」の調整を使用する場合は注意してください。あなたがそれを完全に理解していないならそれをしないでください。不適切な実装は、まったく使用しないよりもはるかに悪い可能性があります。ARIAの悪い例については、accessibility-developer-guideをご覧ください。そこには、「スクリーンリーダーのみ」の介入を必要としない、完全にアクセス可能なコンポーネント/ウィジェットがあります。


5
WHOの情報:わずかに2億8500万人が世界中で視覚障害を抱えていると推定されています。 50歳以上。」
Cato Minor

29

navbarの例でこれを見つけ、簡略化しました。

<ul class="nav">
  <li><a>Default</a></li>
  <li><a>Static top</a></li>
  <li><b><a>Fixed top <span class="sr-only">(current)</span></a></b></li>
</ul>

どれが選択されているかがわかります(sr-only一部は非表示)。

  • デフォルト
  • スタティックトップ
  • 固定トップ

スクリーンリーダーを使用している場合は、どちらが選択されているかが聞こえます。

  • デフォルト
  • スタティックトップ
  • 固定トップ(現在)

このテクニックの結果として、視覚障害者はあなたのウェブサイト上をより簡単にナビゲートするはずです。


3
視覚障害者は現在のテキストをどのように読んでいますか?彼らのために利用できる特別な種類の画面はありますか?
Santosh

6
この回答で述べたように、彼らはスクリーンリーダーを使用しています。これは画面の内容を読み取るプログラムなので、「スクリーンリーダーを使用すると、どちらが選択されているかを聞くことができます」ということになります。
IronSean 2016

Chrome拡張機能ChromeVoxを使用して、スクリーンリーダーを体験できます。それはそれと同じくらい簡単です
Hrvoje Golcic '20

12

.sr-onlyスクリーンリーダー専用のクラス名です。任意のクラス名を使用できます.sr-onlyが、かなり一般的に使用されています。コンプライアンスを考慮して開発する必要がない場合は、削除できます。このクラスのCSSはデスクトップおよびモバイルデバイスのブラウザーには表示されないため、削除してもUIには影響しません。

.sr-only目的を説明するためのの使用とスクリーンリーダー向けであることについて、ここではいくつかの情報が欠けているようです。何よりもまず、障害のあるユーザーを常に念頭に置くことが非常に重要です。障害は508準拠の目的であり、https//www.section508.gov/であり、ブートストラップがこれを考慮に入れていることは素晴らしいことです。ただし、.sr-only508への準拠を考慮する必要があるのは、の使用だけではありません。色の使用、フォントのサイズ、ナビゲーションによるアクセシビリティ、記述子、ariaの使用などがあります。

しかし、に関して.sr-onlyは-CSSは実際に何をしますか?に使用されるCSSには、若干異なるバリアントがいくつかあります.sr-only。私が使用する数少ないものの1つを以下に示します。

.sr-only {
    position: absolute;
    margin: -1px 0 0 -1px;
    padding: 0;
    display: block;
    width: 1px;
    height: 1px;
    font-size: 1px;
    line-height: 1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    border: 0;
    outline: 0;
    }

上記のCSSは、このクラスでラップされたデスクトップおよびモバイルブラウザーのコンテンツを非表示にしますが、JAWSなどのスクリーンリーダーで表示されます:http : //www.freedomscientific.com/Products/Blindness/JAWS。マークアップの例は次のとおりです。

<a href="#" target="_blank">
    Click to Open Site
    <span class="sr-only">This is an external link</span>
</a>

さらに、DOM要素の幅と高さが0の場合、その要素はDOMからは見えません。これが、上記のCSSがを使用する理由width: 1px; height: 1px;です。display: noneCSS をとに設定するheight: 0width: 0、要素はDOMから見えなくなり、問題が発生します。上記のCSSを使用width: 1px; height: 1px;して、コンテンツをデスクトップおよびモバイルブラウザーに表示せず(overflow: hiddenコンテンツが画面に表示されない場合)、スクリーンリーダーに表示するだけではありません。デスクトップおよびモバイルブラウザーからコンテンツを非表示にするには、以下を使用してwidth: 1pxheight: 1px前述のオフセットを追加します。

position: absolute;
margin: -1px 0 0 -1px; 
overflow: hidden;

最後に、スクリーンリーダーが何を見て障害のあるユーザーに中継するかについて非常によく理解するには、ブラウザのページスタイルをオフにします。Firefoxの場合、次のようにしてこれを行うことができます。

View > Page Style > No Style

私がここで提供した情報が他の回答に加えて誰かにさらに役立つことを願っています。


7

オブジェクトがリーダーおよび類似のデバイスにのみ表示される(または表示される必要がある)ことを確認します。これは、属性aria-hidden = "true"を持つ他の要素との関連でより意味があります。

<div class="alert alert-danger" role="alert">
  <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
  <span class="sr-only">Error:</span>
  Enter a valid email address
</div>

Glyphiconは他のすべてのデバイスで表示されます。エラー:テキストリーダーでは。


1
私の印象は、aria-label = "Error"は同じことをするがより単純であるということですか?
ケビン

6

.sr-onlyクラスは除くすべてのデバイスに要素を隠しますscreen readers:

メインコンテンツにスキップ.sr-onlyと.sr-only-focusableを組み合わせて、要素がフォーカスされたときに要素を再度表示します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.