Bootstrap 3'te sr-only nedir?


748

Sınıf ne için sr-onlykullanılır? Önemli mi yoksa kaldırabilir miyim? Olmadan iyi çalışır.

İşte benim örnek:

<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>

Yanıtlar:


772

Önyükleme belgelerine göre , sınıf yalnızca ekran okuyucular için tasarlanan bilgileri görüntülenen sayfanın düzeninden gizlemek için kullanılır .

Her giriş için bir etiket eklemezseniz ekran okuyucular formlarınızla ilgili sorun yaşayacaktır. Bu satır içi formlar için, yalnızca .sr sınıfını kullanarak etiketleri gizleyebilirsiniz.

İşte bir olan örnek kullanılan stil:

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

Önemli mi yoksa kaldırabilir miyim? Olmadan iyi çalışır.

Önemli, kaldırmayın.

Erişilebilirlik amacıyla her zaman ekran okuyucuları düşünmelisiniz. Sınıfın kullanımı öğeyi yine de gizleyecektir, bu nedenle görsel bir fark görmemelisiniz.

Erişilebilirlik hakkında okumak istiyorsanız:



2
@katranci referans verdiğiniz makalede, örneğin rtl içeriğiyle ilgili sorunlar gibi birkaç nokta eksik. Bu sorunun cevabı daha iyi görünüyor.
Christophe

1
@Christophe Bu makaleyi hala kavramı anlamak için tavsiye ederim. Her ne kadar rtl içeriği ile ilgili sorunları açıklamasa da, aynı zamanda farklı teknikler listeliyorclipping
katranci

9
Dürüst olmak gerekirse, dil çok kafa karıştırıcı: the class is used to hide information used for screen readers? Ekran okuyucularından gizleniyor mu? Yoksa tarayıcıda gösterilmiyor mu? Belgelerin "yalnızca sr sınıfı öğenin yalnızca ekran okuyucular için olduğunu ve tarayıcıda görüntülenmediğini gösterdiğini" belirtmesi daha açıktır.
Stack0verflow

2
Hiç kafa karıştırıcı olduğunu sanmıyorum, açıkça sınıfın bilginin gizlenmesi için kullanıldığını, yani sadece ekran okuyucular tarafından görülmesi gerektiğini söylüyor.
Lee

34

JoshC'nin dediği gibi, sınıf ekran okuyucular için kullanılan bilgileri gizlemek için kullanılır. Ancak yalnızca etiketleri gizlemekle kalmayıp, göremeyen kullanıcıdan, ana içerikten önce karmaşık bir gezinme veya reklamınız varsa kör kullanıcılar için istenen bir dahili bağlantı "ana içeriğe geç" gizlemeyi düşünebilirsiniz.

Sitenizin ekran okuyucularla daha da etkileşime girmesini istiyorsanız, W3C standart ARIA özelliklerini kullanın ve kesinlikle 1-2 saat sürecek veya en azından bir Google'ın 40 dakika videosunu izleyecek Google çevrimiçi kursunu ziyaret etmenizi tavsiye ederim .

Dünya Sağlık Örgütü'ne göre, 285 milyon insanın görme bozuklukları var. Bu yüzden bir web sitesini erişilebilir hale getirmek önemlidir.

GÜNCELLEME 2019:

Geliştiriciler olarak, özellikle ekran okuyucularını hedeflemeyen kutudan çıktığı haliyle çalışan erişilebilir içerikler hazırlamalıyız. Bu her zaman mümkün değildir, ancak ARIA ve "yalnızca ekran okuyucu" ayarlamalarını kullanırken dikkatli olun . Eğer tam olarak anlamadıysan yapma. Yanlış uygulama, onu hiç kullanmamaktan çok daha kötü olabilir. Lütfen ARIA bozuk örnekleriyle ilgili erişilebilirlik-geliştirici kılavuzunu okuyun . Burada, "yalnızca ekran okuyucu" müdahaleleri gerektirmeyen tamamen erişilebilir bileşenler / widget'lar bulacaksınız.


5
Biraz daha fazla DSÖ bilgisi : "Dünya genelinde 285 milyon insanın görme engelli olduğu tahmin ediliyor: 39 milyon kör ve 246 görüş azlığı var. Dünyadaki görme engellilerin yaklaşık% 90'ı düşük gelirli ortamlarda yaşıyor. 50 yaş ve üstü. "
Cato Minor

29

Bunu navbar örneğinde buldum ve basitleştirdim.

<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>

Hangisinin seçildiğini görürsünüz ( sr-onlyparça gizlidir):

  • Varsayılan
  • Statik üst
  • Sabit üst

Ekran okuyucu kullanıyorsanız hangisinin seçildiğini duyarsınız:

  • Varsayılan
  • Statik üst
  • Sabit üst (mevcut)

Bu tekniğin bir sonucu olarak kör insanlar web sitenizde daha kolay gezinmeleri gerekiyordu.


3
Kör insanlar bu metni nasıl okur? Onlar için özel bir ekran var mı?
Santosh

6
Bu cevapta belirtildiği gibi bir ekran okuyucu kullanıyorlar. Ekran içeriğini okuyan bir programdır, dolayısıyla " Ekran okuyucu kullanıyorsanız hangisinin seçildiğini duyarsınız :".
IronSean

Ekran okuyucu deneyimi için Chrome uzantısı ChromeVox'u kullanabilirsiniz. Bu kadar basit
Hrvoje Golcic

12

.sr-onlyözellikle ekran okuyucular için kullanılan bir sınıf adıdır. Herhangi bir sınıf adını kullanabilirsiniz, ancak .sr-onlyoldukça yaygın olarak kullanılır. Uyumluluk göz önünde bulundurularak geliştirilmeyi umursamıyorsanız, kaldırılabilir. Bu sınıfın CSS'si masaüstü ve mobil cihaz tarayıcıları tarafından görülmediğinden, kaldırılırsa kullanıcı arayüzünü etkilemez.

Burada .sr-onlyamacını açıklamak ve ekran okuyucular olmak için bazı bilgiler eksik görünüyor . Her şeyden önce, engelli kullanıcıları daima akılda tutmak çok önemlidir. Değer düşüklüğü 508 uyumluluğunun amacıdır: https://www.section508.gov/ ve bootstrap'ın bunu dikkate alması harika. Bununla birlikte, kullanımı .sr-only508 uyumluluğu için dikkate alınması gereken tek şey değildir. Renk, yazı tipi boyutu, navigasyon yoluyla erişilebilirlik, tanımlayıcılar, aria kullanımı ve çok daha fazlasına sahipsiniz.

Ama .sr-onlygelince - CSS aslında ne yapıyor? Kullanılan CSS'nin biraz farklı varyantları vardır .sr-only. Kullandığım birkaç kişiden biri:

.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;
    }

Yukarıdaki CSS, bu sınıfla sarılmış masaüstü ve mobil tarayıcılardaki içeriği gizler, ancak JAWS gibi bir ekran okuyucu tarafından görülür: http://www.freedomscientific.com/Products/Blindness/JAWS . Örnek işaretleme aşağıdaki gibidir:

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

Ayrıca, bir DOM öğesinin genişliği ve yüksekliği 0 ise, öğe DOM tarafından görülmez. Bu nedenle yukarıdaki CSS kullanmaktadır width: 1px; height: 1px;. Kullanarak display: noneve CSS ayarlayarak height: 0ve width: 0, eleman DOM görülmeyecek şekilde problemlidir değildir. Yukarıdaki CSS width: 1px; height: 1px;kullanımı, içeriği masaüstü ve mobil tarayıcılar için görünmez yapmak için yaptığınız tek şey değildir ( overflow: hiddeniçeriğiniz hala ekranda görünmez) ve ekran okuyucuları tarafından görülebilir. İçeriği masaüstü ve mobil tarayıcılardan gizlemek, aşağıdakilerden bir ofset ekleyerek width: 1pxve height: 1pxdaha önce bahsedilenleri kullanarak yapılır:

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

Son olarak, bir ekran okuyucunun gördüğü ve engelli kullanıcısına ne aktardığı hakkında çok iyi bir fikre sahip olmak için tarayıcınızın sayfa stilini kapatın. Firefox için şunları yapabilirsiniz:

View > Page Style > No Style

Umarım burada verdiğim bilgiler, diğer yanıtlara ek olarak bir başkası için de yararlıdır.


7

Nesnenin yalnızca okuyuculara ve benzer cihazlara gösterilmesini (veya olması gerektiğini) garanti eder. Aria-hidden = "true" özelliğine sahip diğer öğelerle bağlamda daha anlamlı olur .

<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>

Glifikon diğer tüm cihazlarda görüntülenecektir, hata: metin okuyucularda.


1
Benim izlenimim aria-label = "Hata" aynı şeyi yapmak ama daha basit olurdu?
Kevin

6

.sr-onlySınıf tüm cihazlara unsurunu hariç gizlerscreen readers:

Ana içeriğe atla Öğeyi odaklandığında tekrar göstermek için .sr-only ile .sr-only-focusable birleştirin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.