Работа с изображениями на HTML

Давайте теперь разберемся с тем, как разместить изображение на странице вашего сайта. Для этого предназначен тег <img>, имеющий обязательный атрибут src, в котором следует задавать путь к файлу картинки. При этом сам тег не требует закрывающего тега.

Давайте посмотрим на примере. Пусть в корневой папке нашего сайта находится файл smile.png с картинкой. Давайте выведем ее на странице нашего сайта:

<img src="smile.png">

:

Разместите на странице вашего сайта какую-нибудь картинку.

Ширина картинки

По умолчанию картинки отображаются своим реальным размером. Например, та картинка со смайлом, которую мы выводили выше, имеет реальный размер 130 на 130 пикселей и такой же размер картинки мы и видим в браузере.

При желании можно изменить размер картинки, задав ей ширину.

Это делается с помощью атрибута width

Давайте для примера зададим нашей картинке ширину 100 пикселей. Для этого значением атрибута width укажем число 100, вот так: width=»100″.

Какого же размера будет картинка на экране? Можно подумать, что следующая: ширина 100 пикселей, как мы задали, и реальная высота 130, так как мы ее не задавали. На самом деле, это будет не так.

Ширина действительно будет 100 пикселей, а вот высота подстроится так, чтобы пропорции картинки не исказились, то есть также станет 100 пикселей.

Давайте запустим и убедимся в этом:

<img src="smile.png">

:

Установите вашей картинке ширину в 300 пикселей.

Высота картинки

Можно вместо атрибута width написать атрибут height — в этом случае уже высота будет задана как 100 пикселей, а ширина подстроится под нее так, чтобы не исказить пропорции:

<img src="smile. png">

:

Установите вашей картинке высоту в 100 пикселей.

Одновременно ширина и высота

Если задать одновременно и ширину, и высоту, то картинку можно исказить. Например, если задать ширину 100 пикселей, а высоту 70px, то наш смайл станет растянутым по ширине:

<img src="smile.png">

:

Картинка не обязательно исказится, ведь мы можем просто задать и ширину, и высоту по 100 пикселей, в этом случае наша картинка станет меньше, чем была (а была она 130), но пропорции ее не исказятся:

<img src="smile.png">

:

Установите вашей картинке ширину и высоту так, чтобы пропорции изображения исказились.

Установите вашей картинке ширину и высоту так, чтобы пропорции изображения НЕ исказились.

Как правильно оптимизировать картинки для сайта

Постараюсь сделать краткую инструкцию по правильному использованию изображений на сайте.

Речь пойдет не об элементах дизайна, а о картинках в виде контента (фото, галереи, скриншоты, инструкции, сканы документов и т.д.).

Главная проблема – Контент-менеджер или сам заказчик получает фото для размещения на сайте и сразу загружает их на сайт.

Это проблема №1, потому что никто не смотрит, что там за фотки, какого они размера, веса и как называются, а это всё важные моменты, потому что:

  • Размер фото не должен превышать ширину того блока, в котором изображение будет находиться, то есть, если это фото размещенное внутри статьи и его размер внутри контента будет 300px, то совершенно не нужно загружать фото шириной 5000px, если же это фото для слайдера или галереи, которая может использовать попап, тогда максимальная ширина фото будет соответствовать ширине экрана, я обычно задаю 1920px.
  • Вес фоток не должен измеряться в Мегабайтах, оптимально, чтобы размер фоток был до 200 КБ, но может быть и больше в зависимости от размера и формата изображения. Но если фото весит больше 1Мб, тогда это проблема.
  • Название фото должно быть прописано только латиницей без пробелов и спецсимволов. Нельзя использовать кириллицу, пробелы и спецсимволы, из-за того, что на различных хостингах с таким форматом могут возникнуть проблемы, и почти на всех хостингах после архивации-разархивации (при переносе или восстановлении из бекапа) кириллица будет преобразована в какие-то непонятные знаки, и пути к файлам, сохраненные в базе данных или прописанных в коде не будут соответствовать обновленным именам файлов… Только латиница.

Теперь представим ситуацию, что мы получили от заказчика 20 фоток, которые нужно добавить в галерею. Мы могли бы просто взять и сразу их загрузить, но вы уже начали читать эту статью и начали думать.

20 фоток весят 93МБ? Наверное, стоит уменьшить их вес. Ширина некоторых фото 5000px? Зачем, если галерея сайта ограничивает размер фото до 1200px. Все фотки имеют разные названия и, чаще всего, это набор символов и цифр, сгенерированный камерой и ничем не полезный ни для пользователя, ни для поисковых систем? Тогда лучше использовать простой шаблон в названии фоток с привязкой к какому-то событию или названию статьи.

[vc_message color=”alert-success”]Если, нужно изменить одно или два изображения, тогда это будет проще и быстрее сделать с помощью Photoshop, через CTRL+ALT+i поменять размер и сохранить результат для WEB через CTRL+ALT+SHIFT+S.[/vc_message]

Но у нас 20 фоток (а бывает и больше), тогда нужен инструмент для пакетного изменения изображений.

С помощью программы FastStone Photo Resizer мы можем пакетно изменить размеры и названия для фоток. Скачать ее можно здесь faststone.org/FSResizerDownload.htm.

Краткая инструкция:

  1. Добавляем файлы для обработки (1), выбираем папку для обработанных файлов (2), задаем новое имя для файлов (3) и задаем настройки для ресайза (4)
  2. В настройках для данного сайта я задаю ресайз до 1200px, потому что там галерея ограничивает размер фото до 1200, а, обычно, для галерей я задаю размер 1920
  3. На выходе получаем такие результаты:

    как видим, общий вес был 93МБ, а стал 6Мб, что для 20 файлов довольно таки неплохо.

Данный результат неплох, но не идеален. Для того, чтобы Google Page Speed не ругался на вес фоток, мы их еще немного оптимизируем.

Для финальной оптимизации изображений отлично подойдет 1 из 2 онлайн ресурсов tinypng.com или kraken.io. Я сейчас пользуюсь, в основном, первым.

И это позволяет нам сжать фотки еще на 46% сохранив при этом еще 3МБ

По итогу, наша страница будет загружать пользователю не 93Мб больших изображений, а загрузит всего навсего 3Мб фоток нужного размера. Плюс экономится место на вашем хостинге, потому что 10 таких галерей и дешевый хостинг уже будет забит почти на 1 Гигабайт, тогда как 10 галерей по 3МБ займет всего 30МБ.

В данной статье всего 4 картинки, но оптимизировав их через tinypng.com я уменьшил вес с 1370КБ до 350КБ, или на 75%, может и мелочь, но пользователю нужно будет загрузить на 1МБ меньше, значит страница загрузится быстрее.

[vc_message color=”alert-info”]Важно проверить качество изображений после всех процедур, так как могут появиться артефакты, тонкие линии могут размыться, а сложные рисунки с мелкими деталями могут поплыть. Поэтому, если вам качество графических материалов важнее их веса и скорости загрузки на сайте, тогда можно пропустить последний шаг.[/vc_message]

Чуть позже я еще напишу что-нибудь про альты и тайтлы, но неизвестно когда.

Использование соотношений сторон изображения для избежания скачкообразной загрузки страниц — Tempertemper

В обзоре самых интересных функций, анонсированных на WWDC 2020 на прошлой неделе, я упомянул, что Safari теперь будет поддерживать соотношения сторон изображения, но что это значит?

Помните атрибуты размера изображения?

Позвольте мне начать с еще одного путешествия по воспоминаниям. Я помню, когда лучше всего было добавлять атрибуты размера изображения к каждому изображению. Я думаю, что было даже преимущество SEO в указании ширина и высота . Но затем появился адаптивный веб-дизайн и экраны высокой четкости, и эти атрибуты стали излишними.

Поскольку отзывчивый веб сжимает и растягивает объекты в зависимости от размера экрана, изображения не собирались соответствовать тому, что мы указали в атрибутах width и height , за исключением очень специфической ширины экрана . Поэтому мы перестали добавлять размеры изображения в наш HTML и даже удалили их из существующего кода.

Оказывается, они снова полезны, так что мы можем начать их добавлять!

Размеры изображения снова полезны

Прежде чем я расскажу, почему размеры изображения снова полезны и как их использовать, стоит проиллюстрировать распространенную в Интернете раздражающую проблему: «дерганье».

Дерьмовые веб-страницы

Есть только одна вещь, которая раздражает больше, чем медленный веб-сайт, и это медленный веб-сайт, на котором вам приходится бегать по странице, пока изображения загружаются сверху.

Проблема в том, что браузер знает ширину изображения, так как обычно установлено значение 100% , но высота должна быть определена после того, как само изображение получено с сервера и браузер вычислит его размеры. До тех пор браузер понятия не имеет, поэтому он использует 0 , пока не узнает. Таким образом, высота 0 внезапно переходит к высоте изображения по отношению к его ширине после загрузки изображения, перемещая содержимое под ним вниз по странице.

Браузеры читают веб-страницу сверху вниз, отображая все, что могут, по мере продвижения. Пока они извлекают изображение, они будут продолжать выводить остальную часть страницы, поэтому вы часто видите, как пара абзацев текста внезапно отделяется, когда наконец появляется изображение между ними, и это заставляет второй абзац прыгать вниз. страница.

Что, если бы вы читали второй абзац? Или собирается щелкнуть чок в нем? Теперь это движущаяся цель!

Остановка загрузки с помощью CSS

Загрузку всегда можно остановить с помощью CSS и обертки

, но только если бы мы знали соотношение сторон изображения (скажем, 16:9). Затем мы использовали бы CSS и хак заполнения:

 .image-wrapper { 
padding-bottom: 56,25%;
позиция: относительная;
}

.image-wrapper img {
ширина: 100%;
высота: 100%;
позиция: абсолютная;
слева: 0;
верх: 0;
}

Взлом возможен, потому что вертикальный отступ вычисляется на основе ширины элемента, а не высоты, как можно было ожидать.

Значение % основано на соотношении сторон 16:9: 9 ÷ 16 = 0,5625, что соответствует 56,25 при выражении в процентах. Высота составляет 56,25% от ширины.

Проблемы здесь:

  • дополнительная разметка — вам понадобится
    около каждое изображение на вашем сайте
  • дополнительный стиль — CSS выше
  • все изображения застряли бы с одинаковым соотношением сторон (16:9 в приведенном выше примере)
  • для любых изображений с другим соотношением сторон (скажем, 4:3) потребуется:
    • выделенный класс в HTML
    • еще немного CSS для оформления этого класса

Надлежащее исправление

width и height атрибуты в нашей разметке теперь снова имеют смысл. Браузер использует их для расчета соотношение сторон изображения в то же время, когда он запрашивает изображение, поэтому он может гарантировать, что правильный объем пространства остается перед изображением, поступающим с сервера.

Более того, если CSS говорит, что изображение имеет ширину : 100%; или максимальная ширина: 100%; , он знает ширину, что позволяет ему установить высоту, используя соотношение сторон, полученное из ширины и высоты в разметке.

Таким образом, вы можете продолжать читать этот абзац под изображением — или даже щелкнуть эту ссылку! — не беспокоясь о том, что содержимое выпрыгнет вниз.

Как должен выглядеть наш код

Итак, теперь мы знаем, что делать, как мы это делаем?

HTML

Начнем с разметки. Все, что вам нужно сделать, это добавить ширины и высоты к вашим изображениям!

 Мой альтернативный текст 

Прежде всего, обратите внимание, что нет единиц измерения ( width="800" , а не ширина = "800 пикселей" ). Как и в случае с SVG, пропуск единиц измерения является наименее специфичным (самым слабым) способом сделать это, что означает, что его легче всего переопределить.

Без единиц измерения браузер все равно будет вычислять размеры, используя пиксели (независимо от того, что означают пиксели), поэтому, если CSS не работает, эти изображения сетчатки остаются в разумном размере и не занимают всю ширину экрана вашего ноутбука, поэтому содержимое по-прежнему хорошо читается.

Можно сразу уменьшить размеры, зная, что CSS вмешается и сделает их полноразмерными, например:

 My alt= 

Но не делайте этого . в сценарии, когда CSS не загружается, ваше изображение будет крошечным (16 пикселей × 9 пикселей в этом примере), поэтому я рекомендую вам использовать более разумные размеры, такие как 800 × 450 .

CSS

Минимальный CSS. Вы устанавливаете ширину и высоту, которые переопределяют значения в HTML:

 img { 
width: 100%;
высота: авто;
}

Если это слишком широко, вы можете ограничить это, например, изображениями в статьях:

 article img { 
ширина: 100%;
высота: авто;
}

Итак, мы говорим браузеру:

  • сделать изображения той же ширины, что и их контейнер
  • для высоты изображения должны рассчитываться автоматически на основе
    • ширина контейнера
    • соотношение сторон самого изображения

Не нужно предугадывать соотношение сторон в CSS!

Ограничения Markdown

Следует отметить, что Markdown не может добавлять атрибуты изображения, поэтому, если вы добавляете изображения в запись блога, написанную в Markdown, вместо ![Мой альтернативный текст](/my-great-image. jpg) вам придется использовать HTML: Мой альтернативный текст . Это нормально, так как Markdown позволяет смешивать HTML.

Я не возражаю против этого, отчасти потому, что я не большой поклонник нотации ![]() для изображений (слишком близкой к []() , используемой для ссылок), но в основном как это означает, что я могу добавить тактический атрибут loading="lazy" к определенным изображениям.

Поддержка браузера

Firefox, Chrome (следовательно, Edge и Opera) сегодня поддерживают пропорции, основанные на атрибутах width и height . Apple объявила, что Safari будет поддерживать их, когда следующие версии Safari будут выпущены (вероятно) в сентябре, но чтобы получить предварительный просмотр, Safari Technology Preview поддерживает его сейчас.

Это прогрессивное усовершенствование, так что старые браузеры получат то же, что и раньше. Не большой, но не худший опыт, чем они уже получали.

Как использовать HTML-тег img

🆕 🔜 Мечтаете о собственном интернет-бизнесе?

Опубликовано 10 авг 2019 г.

Откройте для себя основы работы с изображениями и HTML-тегом img, а также как сделать их адаптивными.

Изображения можно отображать с помощью тега img .

Этот тег принимает src атрибут, который мы используем для установки источника изображения:

  

Мы можем использовать широкий набор изображений. Наиболее распространенными являются PNG, JPEG, GIF, SVG и, в последнее время, WebP.

Стандарт HTML требует наличия атрибута alt для описания изображения. Это используется программами чтения с экрана, а также ботами поисковых систем:

  png" alt="Изображение собаки" /> 

Вы можете установить ширину и атрибуты height для установки пространства, которое займет элемент, чтобы браузер мог учитывать его и не менял макет при полной загрузке. Он принимает числовое значение, выраженное в пикселях.

 Изображение собаки

Атрибут srcset позволяет установить адаптивные изображения, которые браузер может использовать в зависимости от плотности пикселей или ширины окна, в зависимости от к вашим предпочтениям. Таким образом, он может загружать только те ресурсы, которые ему необходимы для отображения страницы, без загрузки большего изображения, например, если оно находится на мобильном устройстве.

Вот пример, где мы даем 4 дополнительных изображения для 4 разных размеров экрана:

 Изображение собаки 

В srcset мы используем меру

w для указания ширины окна. г источник = «собака.png» alt=»Изображение собаки» размеры = «(максимальная ширина: 500 пикселей) 100vw, (максимальная ширина: 900px) 50vw, 800px» srcset=»собака-500.png 500 Вт, собака-800.png 800w, собака-1000.png 1000w, dog-1400.png 1400w»>

В этом примере строка (max-width: 500px) 100vw, (max-width: 900px) 50vw, 800px в атрибуте размеры описывает размер изображения относительно в область просмотра с несколькими условиями, разделенными запятой.

Условие мультимедиа

max-width: 500px устанавливает размер изображения в зависимости от ширины области просмотра. Короче говоря, если размер окна < 500 пикселей, он отображает изображение в масштабе 100% от размера окна

Если размер окна больше, но < 900px , изображение отображается в размере 50% от размера окна.

А если еще больше, то рендерит изображение в 800px.

Единица измерения vw может быть для вас новой, и вкратце мы можем сказать, что 1 vw составляет 1% ширины окна, поэтому 100vw составляет 100% ширины окна.