Chỉ sr trong Bootstrap 3 là gì?


748

Lớp học sr-onlyđược sử dụng để làm gì? Nó quan trọng hay tôi có thể loại bỏ nó? Hoạt động tốt mà không có.

Đây là ví dụ của tôi:

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

Câu trả lời:


772

Theo tài liệu của bootstrap , lớp được sử dụng để ẩn thông tin chỉ dành cho trình đọc màn hình khỏi bố cục của trang được hiển thị.

Trình đọc màn hình sẽ gặp sự cố với biểu mẫu của bạn nếu bạn không bao gồm nhãn cho mỗi đầu vào. Đối với các biểu mẫu nội tuyến này, bạn có thể ẩn nhãn bằng lớp chỉ .sr.

Dưới đây là một ví dụ về kiểu dáng được sử dụng:

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

Nó quan trọng hay tôi có thể loại bỏ nó? Hoạt động tốt mà không có.

Điều đó quan trọng, đừng loại bỏ nó.

Bạn nên luôn luôn xem xét trình đọc màn hình cho mục đích tiếp cận. Việc sử dụng lớp sẽ ẩn đi phần tử dù sao, do đó bạn không nên thấy sự khác biệt về thị giác.

Nếu bạn thích đọc về khả năng truy cập:



2
@katranci bài viết bạn tham khảo bị thiếu một vài điểm, ví dụ như các vấn đề với nội dung rtl. Câu trả lời ở đây có vẻ tốt hơn.
Christophe

1
@Christophe Tôi vẫn muốn giới thiệu bài viết đó để hiểu khái niệm. Mặc dù nó không giải thích các vấn đề với nội dung rtl, nhưng nó liệt kê các kỹ thuật khác nhau cũng bao gồmclipping
katranci

9
Thành thật mà nói, ngôn ngữ rất khó hiểu : the class is used to hide information used for screen readers? Nó có ẩn khỏi trình đọc màn hình không? Hoặc đơn giản là nó không được hiển thị trong trình duyệt? Sẽ rõ ràng hơn nếu tài liệu nói một cái gì đó như "lớp chỉ sr chỉ ra rằng phần tử chỉ dành cho trình đọc màn hình và không được hiển thị trong trình duyệt".
Stack0verflow

2
Tôi không nghĩ nó khó hiểu chút nào, nó nói rõ rằng lớp được sử dụng để ẩn thông tin, điều đó chỉ có nghĩa là được trình đọc màn hình nhìn thấy.
Lee

34

Như JoshC đã nói, lớp được sử dụng để ẩn thông tin được sử dụng cho trình đọc màn hình. Nhưng không chỉ để ẩn nhãn, bạn có thể xem xét để ẩn khỏi người dùng bị nhìn thấy một liên kết nội bộ "bỏ qua nội dung chính" mà người dùng mù mong muốn nếu bạn có điều hướng hoặc quảng cáo phức tạp trước nội dung chính.

Nếu bạn muốn trang web của mình tương tác nhiều hơn với trình đọc màn hình, hãy sử dụng các thuộc tính ARIA được tiêu chuẩn hóa của W3C và tôi chắc chắn khuyên bạn nên truy cập khóa học trực tuyến của Google , việc này sẽ chỉ mất tối đa 1-2 giờ hoặc ít nhất là xem video 40 phút của Google .

Theo Tổ chức Y tế Thế giới, 285 triệu người bị suy giảm thị lực. Vì vậy, làm cho một trang web có thể truy cập là quan trọng.

CẬP NHẬT 2019:

Là nhà phát triển, chúng tôi nên làm cho nội dung có thể truy cập chỉ đơn giản hoạt động cho tất cả các ứng dụng bên ngoài và không nhắm mục tiêu cụ thể đến trình đọc màn hình. Điều đó không phải lúc nào cũng có thể nhưng hãy cẩn thận khi sử dụng các điều chỉnh ARIA và "chỉ trình đọc màn hình" . Đừng làm điều đó nếu bạn không hiểu đầy đủ về nó. Việc thực hiện không chính xác có thể tồi tệ hơn nhiều so với việc không sử dụng nó. Vui lòng đọc hướng dẫn tiếp cận-nhà phát triển về các ví dụ xấu về ARIA . Ở đó bạn sẽ tìm thấy các thành phần / widget có thể truy cập đầy đủ mà không yêu cầu bất kỳ sự can thiệp "chỉ đọc màn hình" nào.


5
Hơi nhiều WHO thông tin : "285 triệu người được ước tính được khiếm thị trên toàn thế giới: 39 triệu mù và 246 có thị lực kém Khoảng 90% của thế giới của người khiếm thị sống trong môi trường có thu nhập thấp 82% số người sống chung với mù là.. từ 50 tuổi trở lên. "
Tiểu thuyết Cato

29

Tôi đã tìm thấy điều này trong ví dụ về thanh điều hướng và đơn giản hóa nó.

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

Bạn thấy cái nào được chọn ( sr-onlyphần bị ẩn):

  • Mặc định
  • Đầu tĩnh
  • Đầu cố định

Bạn nghe thấy cái nào được chọn nếu bạn sử dụng trình đọc màn hình:

  • Mặc định
  • Đầu tĩnh
  • Đã sửa lỗi hàng đầu (hiện tại)

Kết quả của kỹ thuật này là những người mù có nhiệm vụ điều hướng dễ dàng hơn trên trang web của bạn.


3
Làm thế nào một người mù đọc văn bản hiện tại? Có loại màn hình đặc biệt có sẵn cho họ?
Santosh

6
Họ sử dụng một trình đọc màn hình, như được đề cập trong câu trả lời này. Đây là một chương trình đọc nội dung màn hình, do đó "Bạn nghe thấy cái nào được chọn nếu bạn sử dụng trình đọc màn hình :".
IronSean

Bạn có thể sử dụng ChromeVox tiện ích mở rộng để có trải nghiệm trình đọc màn hình. Nó đơn giản như thế
Hrvoje Golcic

12

.sr-onlylà một tên lớp được sử dụng đặc biệt cho trình đọc màn hình. Bạn có thể sử dụng bất kỳ tên lớp, nhưng .sr-onlyđược sử dụng khá phổ biến. Nếu bạn không quan tâm đến việc phát triển với sự tuân thủ trong tâm trí, thì nó có thể được gỡ bỏ. Nó sẽ không ảnh hưởng đến UI theo bất kỳ cách nào nếu bị xóa vì CSS cho lớp này không hiển thị với trình duyệt máy tính để bàn và thiết bị di động.

Dường như có một số thông tin còn thiếu ở đây về việc sử dụng .sr-onlyđể giải thích mục đích của nó và dành cho các trình đọc màn hình. Đầu tiên và quan trọng nhất, điều rất quan trọng là luôn luôn ghi nhớ người dùng bị suy yếu. Suy giảm là mục đích của việc tuân thủ 508: https://www.section508.gov/ , và thật tuyệt khi bootstrap xem xét điều này. Tuy nhiên, việc sử dụng .sr-onlykhông phải là tất cả những gì cần được xem xét để tuân thủ 508. Bạn có thể sử dụng màu sắc, kích thước của phông chữ, khả năng truy cập thông qua điều hướng, mô tả, sử dụng aria và nhiều hơn nữa.

Nhưng đối với .sr-only- CSS thực sự làm gì? Có một số biến thể hơi khác nhau của CSS được sử dụng cho .sr-only. Một trong số ít tôi sử dụng là dưới đây:

.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 ở trên ẩn nội dung trong các trình duyệt trên máy tính để bàn và thiết bị di động được bao bọc bởi lớp này, nhưng được trình đọc màn hình như JAWS: http://www.freedomscientific.com/ Products /Blindness / JAWS nhìn thấy . Ví dụ đánh dấu như sau:

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

Ngoài ra, nếu một phần tử DOM có chiều rộng và chiều cao bằng 0, thì phần tử DOM không được nhìn thấy. Đây là lý do tại sao các CSS trên sử dụng width: 1px; height: 1px;. Bằng cách sử dụng display: nonevà đặt CSS của bạn thành height: 0width: 0, phần tử không được DOM nhìn thấy và do đó có vấn đề. CSS ở trên sử dụng width: 1px; height: 1px;không phải là tất cả những gì bạn làm để làm cho nội dung không hiển thị với trình duyệt trên máy tính để bàn và thiết bị di động (nếu không overflow: hidden, nội dung của bạn vẫn sẽ hiển thị trên màn hình) và hiển thị cho trình đọc màn hình. Ẩn nội dung từ trình duyệt máy tính để bàn và thiết bị di động được thực hiện bằng cách thêm phần bù từ width: 1pxheight: 1pxđược đề cập trước đó bằng cách sử dụng:

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

Cuối cùng, để có một ý tưởng rất hay về những gì trình đọc màn hình nhìn thấy và chuyển tiếp đến người dùng bị khiếm khuyết của nó, hãy tắt kiểu dáng trang cho trình duyệt của bạn. Đối với Firefox, bạn có thể làm điều này bằng cách truy cập:

View > Page Style > No Style

Tôi hy vọng thông tin tôi cung cấp ở đây sẽ được sử dụng thêm cho ai đó ngoài các phản hồi khác.


7

Đảm bảo rằng đối tượng được hiển thị (hoặc nên) chỉ cho người đọc và các thiết bị tương tự. Nó có ý nghĩa hơn trong ngữ cảnh với phần tử khác với thuộc tính 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 sẽ được hiển thị trên tất cả các thiết bị khác, Lỗi từ : trên trình đọc văn bản.


1
Ấn tượng của tôi là aria-nhãn = "Lỗi" sẽ làm điều tương tự nhưng đơn giản hơn?
Kevin

6

Các .sr-onlylớp ẩn một yếu tố cho tất cả các thiết bị ngoại trừscreen readers:

Bỏ qua nội dung chính Kết hợp chỉ .sr với .sr chỉ có thể lấy nét để hiển thị lại phần tử khi nó được tập trung

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.