HTML-атрибут alt
Атрибут alt задаёт альтернативный текст для изображения. Узнайте, как правильно его писать и как он работает на разных элементах.
HTML-атрибут alt предоставляет текстовую альтернативу для изображения (или элемента, схожего с изображением). Он зачитывается программами чтения с экрана и отображается вместо изображения, если оно не загрузилось. На этой странице объясняется, как должен выглядеть хороший альтернативный текст, как alt работает на каждом поддерживаемом элементе и каких ошибок следует избегать.
Атрибут alt можно использовать на следующих элементах: <area>, <img> и <input type="image">.
Зачем нужен alt-текст
Атрибут alt выполняет три задачи одновременно:
- Доступность. Пользователи программ чтения с экрана не видят изображение — для них
alt-текст и есть само изображение. Описание содержимого позволяет им следить за страницей. Осмысленныйalt— это то, что делает изображение доступным. - Запасной вариант при недоступном изображении. Если файл изображения отсутствует, путь указан неверно или соединение медленное, браузер показывает
alt-текст вместо пустого блока. Это сохраняет удобство использования страницы. - SEO (небольшой бонус). Поисковые системы читают
alt-текст, чтобы понять, что изображено на картинке, — это помогает в поиске изображений. Воспринимайте это как приятный побочный эффект — пишитеaltдля людей, а не ради вставки ключевых слов.
Для элемента <img> атрибут alt обязателен. Его полное отсутствие является нарушением доступности: программа чтения с экрана будет объявлять имя файла, что редко бывает полезным. Пустой alt="" — это намеренный, допустимый выбор для декоративных изображений; он не равнозначен отсутствию alt.
Как писать хороший alt-текст
Старайтесь описывать изображение так, как вы описали бы его человеку, который не может его увидеть, — с учётом окружающего контекста.
- Будьте описательны и конкретны, но лаконичны — примерно 125 символов или меньше. Программы чтения с экрана могут неудобно прерываться на очень длинном альтернативном тексте.
- Не начинайте с «изображение» или «картинка». Программы чтения с экрана уже сообщают, что это изображение, поэтому такой префикс избыточен.
- Передавайте функцию или содержание, важное в данном контексте, а не каждую визуальную деталь.
- Пропускайте alt-текст для чисто декоративных изображений, используя
alt=""(см. ниже).
Хороший и плохой alt-текст
На примере одной и той же фотографии золотистого ретривера, ловящего фрисби в парке:
<!-- Bad: vague, redundant prefix, or just the file name -->
<img src="dog.jpg" alt="image" />
<img src="dog.jpg" alt="dog.jpg" />
<img src="dog.jpg" alt="picture of a dog" />
<!-- Good: describes what the image shows, in context -->
<img src="dog.jpg" alt="A golden retriever leaping to catch a frisbee in a park" />Декоративные изображения: используйте пустой alt
Если изображение не несёт никакой информации — разделитель, декоративный элемент фона, иконка рядом с текстом, который уже говорит то же самое — задайте ему пустой alt="". Это указывает программам чтения с экрана полностью пропустить изображение вместо того, чтобы объявлять имя файла.
<!-- Decorative divider: nothing meaningful to announce -->
<img src="ornament.png" alt="" />
<!-- Icon next to text that already conveys the meaning -->
<button>
<img src="trash.svg" alt="" /> Delete
</button>Запомните разницу: alt="" = «это изображение декоративное, пропустить его». Отсутствие alt вообще = ошибка, которая лишает пользователей программ чтения с экрана какой-либо альтернативы.
Синтаксис
<img src="photo.jpg" alt="alternative text">
<area alt="alternative text">
<input type="image" alt="button action">Атрибут alt на элементе <area>
В карте изображения каждая кликабельная <area> действует как ссылка, поэтому её alt должен описывать куда ведёт эта область — так же, как вы написали бы текст ссылки. Каждая <area> нуждается в собственном, отличном от других alt; повторное использование одного значения для разных назначений не позволяет пользователям различить области.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<p>Click on the logo to open a topic:</p>
<img src="/uploads/media/news_gallery/0001/01/thumb_316_news_gallery_list.jpeg" width="250" height="150" alt="W3docs topic logos" usemap="#blockmap" />
<map name="blockmap">
<area shape="circle" coords="50,32,25" alt="HTML logo" href="/uploads/media/book_gallery/0001/01/d450f0358f947dffb3af91195c3002600d74101b.png" />
<area shape="circle" coords="218,115,25" alt="CSS logo" href="/uploads/media/book_gallery/0001/01/25521e981b34da57c8f51baddc5b76351b855818.png" />
<area shape="circle" coords="195,32,28" alt="PHP logo" href="/uploads/media/book_gallery/0001/01/4bbee6698c4884f25c46010d61b658dd62d2c04f.png" />
<area class="homepage" shape="rect" coords="90,90,35,55" alt="W3docs home page" href="https://www.w3docs.com/" />
</map>
</body>
</html>Атрибут alt на элементе <img>
Это наиболее распространённый случай использования. Опишите, что изображено на картинке, в контексте страницы. Если у изображения есть видимая подпись, рассмотрите вариант оборачивания в <figure> с <figcaption>.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<img src="/uploads/media/default/0001/01/25acddb3da54207bc6beb5838f65f022feaa81d7.jpeg" alt="A young woman smiling at the camera outdoors" width="200" height="185"/>
</body>
</html>Атрибут alt на элементе <input type="image">
Элемент <input type="image"> является графической кнопкой отправки формы. Здесь alt должен описывать действие кнопки, а не саму картинку — например alt="Submit" или alt="Search" — потому что именно это нужно знать пользователю, когда изображение не загружается. Атрибут alt допустим на <input> только при type="image".
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
input {
vertical-align: middle;
}
</style>
</head>
<body>
<form action="/form/submit">
Email:
<input type="email" name="Email" />
<input type="image" src="https://i7.pngguru.com/preview/278/823/594/computer-icons-button-clip-art-green-submit-button-png.jpg" alt="Submit" width="60" height="60" />
</form>
</body>
</html>Практика
Связанные темы
- HTML-тег
<img>— элемент, на котором вы будете использоватьaltчаще всего. - HTML-тег
<figure>и HTML-тег<figcaption>— для изображений с видимой подписью. - HTML-тег
<area>и HTML-тег<map>— для кликабельных карт изображений. - HTML-тег
<input>— включая тип кнопки-изображения.