Современный вариант
Opened this issue · 2 comments
Современный он по сравнению с этими древними батареями свойств. Но на самом деле он поддерживается начиная с IE9.
.visually-hidden {
position: absolute;
transform: scale(0);
}
В отличие от остальных вариантов тут:
- предельно понятно, что происходит — почти всю работу делает скейл, схлопывая до нуля визуально (вот уж действительно visually), а абсолют просто вырывает из потока оставшийся пустой прямоугольник, чтобы место не занималось;
- нет манипуляций с размером элемента, а значит и нет проблемы от нулевых или мизерных размеров, которую в батареях приходится решать добавлениями других костылей.
Ещё более современный вариант (но поддержка уже тоже хорошая — 2 года в хроме, 3 года в сафари, в лисе вообще давно уже):
.visually-hidden {
position: absolute;
scale: 0;
}
Преимущество — этот скейл не перебьётся случайным трансформом с другой функцией от соседнего класса.
Спасибо. Буду исследовать.
Кажется это не должно сработать для JAWS. Если длинный текст схлопнуть вот так, то текст начинает вытягиваться в колонку по одному слову. В этом случае JAWS решает прочесть только первое слово, поэтому в "батарейном варианте" есть white-space: nowrap;
Я же говорю, это не аффектит размеры элемента, они остаются прежними, а слова не переносятся, то есть новрапать нечего. Просто отрисовка его визуала уменьшена. Если вместо нуля поставить 0.2
— видно, что этот самый визуал в 5 раз уменьшенный даже расположен по центру самого элемента, который никуда не девается, но и не перекрывает контент под ним (только визуальная часть перекрывает), к примеру ссылки нормально прокликиваются.
В демке вывожу размеры скрытого элемента.
Пока что мне никто не принёс ни одной проблемы с этим сниппетом из тех, кому давал на пощупать ассистивными технологиями. Но да, это всё были не масштабные исследования экспертами, а просто пользователи своими обычными способами щупали.