Изображения css: CSS: вписываем изображение в область — Блог

Содержание

Ammina Optimizer. Оптимизация сайта (CSS, JS, HTML, изображения). Веб-студия Ammina: разработка и сопровождение сайтов.

О решении

Модуль «Ammina Optimizer: Оптимизация сайта (CSS, JS, HTML, изображения)» позволяет значительно ускорить ваш сайт для пользователя, улучшить дружественность сайта для поисковых систем, провести аудит сайта в режимах для десктопа и мобильных устройств по параметрам производительности, SEO, доступности, Best Practices и Progressive Web Application.

С помощью модуля вы можете значительно сократить количество и объем загружаемых файлов (запросов к серверу) стилей (CSS), Java Script (скриптов), оптимизировать изображения, используемые на вашем сайте, уменьшить размер кода HTML.

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

увеличить конверсию на вашем сайте.

Преимущества модуля
  • Более 100 опций
  • Простота настройки. В большинстве случаев достаточно включить несколько галочек (группы оптимизации с настройками по умолчанию)
  • Оптимизация «на лету»
  • Интеграция с Google PageSpeed Insights и аудит показателей страниц сайта
  • Ускорение загрузки сайта на 50 и выше процентов
  • Поддержка WebP формата изображений
  • Оптимизация CSS, JS файлов
  • Оптимизация JPG файлов (сжатие может достигать 2-3 раз)
  • Не изменяет оригинальные CSS и JS файлы
  • 3 модели поиска изображений в коде страницы сайта
  • Не изменяет оригинальные файлы изображений
  • Оптимизация изображений в CSS файлах
  • Оптимизирует (объединяет и сжимает) как файлы шаблона сайта, так и системные файлы битрикс
  • Оптимизация как локальных файлов, так и файлов со сторонних серверов
  • Все операции по оптимизации происходят на сервере сайта в рамках функционала модуля
  • Включение изображений, указанны в CSS файлах в качестве inline кода в файлах
  • Поддержка функции Inline CSS (включение CSS файлов в код HTML страницы)
  • Значительное сокращение количества запросов к серверу и предзагрузка файлов
  • Бесплатная установка и настройка на вашем сайте
  • Техническая поддержка модуля
Функциональные особенности
  • Оптимизация CSS файлов
  • Оптимизация JS файлов
  • Несколько библиотек минификации CSS
  • Несколько библиотек минификации JS файлов
  • Возможность использования Inline CSS
  • Поддержка локального кэширования и оптимизации JS файлов со сторонних сайтов
  • Включение изображений, используемых CSS, в виде Inline кода в CSS файлы
  • Поддержка различных вариантов подключений JS файлов на сайте
  • Оптимизация и локальное кэширование CSS с удаленных сайтов
  • Предзагрузка JS файлов браузером пользователя до завершения этапа парсинга HTML кода сайта
  • Оптимизация отображения веб-шрифтов
  • Поддержка Google Fonts
  • Предзагрузка CSS файлов до завершения этапа парсинга HTML кода страницы
  • Оптимизация изображений
  • Оптимизация HTML кода страницы
  • Поддержка формата WebP
  • Несколько библиотек минификации HTML
  • Использование библиотек GD и IMagick
  • Возможность оптимизации inline JS
  • Оптимизация изображений в тегах IMG
  • Возможность оптимизации inline CSS
  • Оптимизация изображений в CSS правилах background[-image]
  • Поиск и оптимизация изображений, указанных в HTML коде в папке /upload/ и других папках
  • Оптимизация изображений со сторонних сайтов
  • Возможность указать дополнительные файлы для предзагрузки
  • Возможность оптимизации CSS, JS, изображений, возвращаемых AJAX запросами (в т. ч. JSON данные)
  • Интеграция с Google PageSpeed Insights
  • Аудит страниц сайта (с сохранением истории) непосредственно из административной части сайта
Демо-режим

Работать с модулем можно начать абсолютно бесплатно. В течении 21 дня можно протестировать модуль в демо-режиме в полнофункциональном режиме.

Бесплатная техническая поддержка

Мы оказываем техническую поддержку как ДО так и ПОСЛЕ приобретения модуля.

Обращайтесь к нам и мы поможем установить и настроить модуль, проконсультируем по работе с ним и, если возникнет необходимость, доработаем функционал.

Онлайн-чат

Онлайн-чат доступен во всех наших модулях прямо из административной части вашего сайта

Почта

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

Документация

Посмотреть документацию на наши модули.

Проверить сайт сейчас

Мы разработали уникальный сервис симуляции оптимизации сайта позволяет проверить работу модуля на вашем сайте до установки модуля.
Проверить сайт сейчас.

Благодарим, что дочитали до конца

Мы всегда готовы помочь вам!

НОУ ИНТУИТ | Лекция | Фоновые изображения CSS

< Дополнительный материал 4 || Лекция 31: 123

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

Ключевые слова: сайт, css, HTML, объединение, спрайт, повторение, присоединение, ‘background-repeat’, ‘background-position’, позиция, percentage, синтаксис, firebug, спецификация CSS-P, ‘background-attachment’, HTTP, запрос, компьютер, файл, значение, блоггер, позиционирование, glass

Введение

intuit.ru/2010/edi»>Согласитесь! С первой лекции этого курса вам не терпелось узнать, как сделать свой сайт энергичным и привлекательным. Возможно, что вы даже перескочили вперед сразу к этому разделу?

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

Как было показано ранее в курсе, одним из самых важных изменений, которое произошло вместе с появлением CSS, стала возможность разделить презентацию, или способ представления информации, и семантику, или что она означает. Фоновые изображения CSS являются одним из самых важных инструментов, которые имеются в вашем распоряжении, так как позволяют применять декоративные изображения в определенных частям HTML, не добавляя ничего в код HTML. Ранее авторы были вынуждены заполнять свой код тегами img.

ru/2010/edi»>CSS, и в частности свойство background, сохраняет код HTML свободным от презентационной неразберихи. Перепроектирование и другие преобразования в жизни сайтов, создаваемые с помощью современных методов, можно тогда будет выполнить значительно легче. Вы сможете обновить весь сайт, изменяя только таблицу стилей, а не переписывая каждую страницу HTML. В зависимости от размера сайта это может оказаться существенным сохранением ресурсов.

В этой лекции рассматриваются основы работы с фоновыми изображениями CSS, включая применение фоновых изображений с помощью CSS, настройка их размещения, укладка их вертикально или горизонтально, и объединение фоновых изображений с помощью спрайтов CSS (http://www.alistapart.com/articles/sprites/) для улучшения производительности сайта (http://developer.yahoo.com/performance/index.html).

Лекция имеет следующую структуру:

  • intuit.ru/2010/edi»>Как это работает?
    • Свойства фона
  • Пример создания тревожного сообщения
    • Дизайн
    • Код
      • Создание зацепки CSS, или селектора
      • Добавление цвета фона
      • Применение фонового изображения
      • Управление повторением фона
      • Присоединение
      • Позиционирование изображения
      • Использование сокращения для общего объединения
    • Эксперименты с кодом
    • Тестирование качества
  • Спрайты
    • Пример сложного спрайта и фонового изображения
      • Создание спрайта
  • Заключение
    • Сведения об авторах изображений
  • Контрольные вопросы
  • Дополнительное чтение

Как это работает?

intuit.ru/2010/edi»>CSS для оформления фона расщепляется на несколько различных свойств. Используя эти свойства, такие как position и color, можно управлять внешним видом страницы. В этой лекции мы подробно рассмотрим фоновые изображения CSS и шаг за шагом создадим в качестве примера тревожное сообщение.

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

Свойства фона
СвойствоОпределениеОписание
background-colorЗадает цвет фона элемента HTML.Существует несколько способов задания background-color, включая значения RGB и ключевые слова. Многие люди используют шестнадцатеричную запись, т.е. символ решетки (#) за которым следует шесть символов. Первая пара указывает уровень красного цвета, а вторая и третья указывают уровни зеленого и синего цветов соответственно — #RRGGBB.

Многие инструменты выбора цвета помогают определить шестнадцатеричную запись заданного цвета. Чистый красный цвет, например, будет #FF0000.


Допустимые значения включают color, transparent, или inherit.

imageУказывает путь доступа или URL фонового изображения.Задает background-image, показывая браузеру, где найти изображение, используя URL. Например; url(alert.png). Отметим, что перед путем доступа стоит ключевое слово url, и он заключен в скобки. Такой синтаксис позволяет браузеру понять, что указано местоположение.

Допустимые значения включают URL, none, или inherit.

repeatУказывает, в каком направлении должно повторяться фоновое изображение.
Изображения могут повторяться вертикально, горизонтально или в обоих направлениях, чтобы заполнить всю ширину или высоту элемента HTML. Используйте background-repeat, чтобы приказать браузеру повторять фоновое изображение.

Допустимыми значениями являются repeat, repeat-x, repeat-y, и no-repeat.

attachmentЗадает поведение фонового изображения, когда пользователь выполняет прокрутку.Изображения могут либо прокручиваться вместе с контентом, или оставаться на месте в видимой области экрана. Допустимые значения включают scroll, fixed, и inherit.
positionСообщает браузеру, где разместить фоновое изображение.Изображения могут выводиться в любом месте в границах элемента HTML, к которому они применяются. Используйте background-position для точного размещения изображений для визуальных эффектов и наложения слоев.

Существует много полезных способов указания позиции фона, ключевые слова и числовые значения. Ключевые слова (такие как top и bottom ) очень полезны и легко читаются. Пиксельные значения очень точны, но не адаптируются к изменению высоты и ширины. Отрицательные значения пикселей будут полезны при использовании спрайтов CSS, как вы узнаете позже.

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

Допустимые значения включают length (обычно в пикселях), percentage (от ширины элемента), и ключевые слова top, right, bottom, left, и center. Отметим, что center можно использовать для указания как вертикального, так и горизонтального центра. Отметим также, что можно смешивать в правилах проценты и пиксели, но не ключевые слова и пиксели или ключевые слова и проценты.

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

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

  1. color
  2. url
  3. repeat
  4. attachment (очень редко используется; может опускаться)
  5. horizontal-position
  6. vertical-position

Примером такого сокращения со всеми использованными свойствами (за исключением attachment ) будет следующий:

background: green url(logo. gif) no-repeat left top;

Дальше >>

< Дополнительный материал 4 || Лекция 31: 123

Tailwind CSS Images — Flowbite

Компонент изображения можно использовать для встраивания изображений на веб-страницу в статьи и разделы на основе нескольких стилей, размеров, макетов и анимации при наведении курсора

Начните работу с коллекцией адаптивных графических компонентов, закодированных с помощью Вспомогательные классы из Tailwind CSS, которые можно использовать в статьях, карточках, разделах и других компонентах на основе нескольких стилей, размеров, макетов и анимации наведения.

Изображение по умолчанию №

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

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка. ..

  • HTML

Скопировать в буфер обмена

 описание изображения 

Подпись к изображению #

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

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

Подпись к изображению
 <рисунок>
   jpg" alt="описание изображения">
  
Подпись к изображению

Закругленные углы #

Примените закругленные углы к изображению, используя специальные служебные классы из Tailwind CSS.

Радиус границы #

Используйте этот пример, чтобы применить закругленные углы к изображению с помощью класса rounded-{size} , где размер может быть любым, от маленького до очень большого.

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

  jpg" alt="описание изображения"> 

Полный круг #

Используйте этот пример, чтобы замаскировать изображение внутри круга с помощью служебного класса rounded-full из Tailwind CSS.

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

 описание изображения 

Тень изображения №

В этом примере можно показать эффект тени для изображения с помощью служебного класса shadow-{size} .

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

 описание изображения 

Retina-ready #

Используйте атрибут srcset для установки изображений Retina-ready с двойным разрешением.

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка. ..

  • HTML

Скопировать в буфер обмена

 image description 

Карта изображения #

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

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

Хотите получать уведомления, когда в Flowbite добавляется новый компонент?

 <рисунок>
  <а href="#">
     s3.amazonaws.com/blocks/marketing-ui/content/content-gallery-3.png" alt="описание изображения">
  
  

Хотите получать уведомления, когда в Flowbite добавляется новый компонент?

Эффекты изображения #

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

Оттенки серого #

Используйте параметр фильтра и примените оттенки серого к элементу изображения, используя класс оттенков серого .

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка. ..

  • HTML

Скопировать в буфер обмена

 image description 

Размытие #

Примените размытие с помощью служебного класса blur-{size} из Tailwind CSS к компоненту изображения.

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

  s3.amazonaws.com/blocks/marketing-ui/content/content-gallery-3.png" alt="image description"> 

Выравнивание #

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

Левый #

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

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

  jpg" alt="описание изображения"> 

Центр #

Горизонтальное выравнивание изображения по центру страницы с помощью класса mx-auto .

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

 описание изображения 

Правильно #

Используйте класс ml-auto для выравнивания изображения по правому краю страницы.

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

 описание изображения 

Размеры #

Установите размер изображения с помощью служебных классов w-{size} и h-{size} или max-w-{size} из Tailwind CSS, чтобы установить ширину и высоту элемента .

Маленький #

Используйте класс max-w-xs , чтобы установить небольшой размер изображения.

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

 описание изображения 

Средний #

Используйте класс max-w-md , чтобы установить средний размер изображения.

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

 описание изображения 

Большой #

Используйте класс max-w-xl , чтобы установить большой размер изображения.

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка. ..

  • HTML

Скопировать в буфер обмена

 описание изображения 

Полная ширина #

Используйте класс max-w-full , чтобы установить полную ширину изображения, если оно не становится больше исходного источника.

Изменить на GitHub

Включить полноэкранный режим

Переключить вид планшета

Переключить мобильное представление

Переключить темный режим

Загрузка…

  • HTML

Скопировать в буфер обмена

  jpg" alt="описание изображения"> 
←Цитата Списки→

Получить больше обновлений…

Хотите получать уведомления, когда в Flowbite добавляется новый компонент? Подпишитесь на нашу рассылку, и вы будете в числе первых, кто узнает о новых функциях, компонентах, версиях и инструментах.

Адрес электронной почты

На этой странице

Учебное пособие по адаптивным изображениям | HTML & CSS Is Hard

№ 11. HTML & CSS Is Hard

Адаптивные изображения сложны. Типа, на самом деле тяжело. Но не пугайтесь.

В адаптивном дизайне мы узнали, как использовать медиа-запросы для создания отдельных макетов для мобильных устройств, планшетов и настольных компьютеров. Теперь мы собираемся добавить изображения в микс. Подобно тому, как медиа-запросы позволяют нам условно представлять разные правила CSS, мы хотим отображать разные изображения в зависимости от устройства пользователя.

Проблема в том, что изображения имеют собственные размеры. Мы не можем растянуть фотографию размером 500×250 пикселей до ширины более 500 пикселей, потому что она станет пиксельной. Дисплеи Retina и мобильные устройства еще больше усложняют ситуацию. Чтобы сделать наши изображения адаптивными, теперь мы должны принять во внимание три вещи:

  • Размеры устройства
  • Размеры изображения
  • Разрешение экрана устройства

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

Настройка

Чтобы экспериментировать с адаптивными изображениями, нам нужен адаптивный веб-сайт. Эта глава будет построена на примере веб-страницы, которую мы собрали в предыдущей главе. Мы добавим два изображения на страницу, чтобы она выглядела следующим образом. Это может показаться простым, но эти изображения будут меняться в зависимости от устройства пользователя (а это реально круто).

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

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

В любом случае файлы вашего проекта должны выглядеть так, прежде чем двигаться дальше. Обратите внимание, что у нас есть несколько копий наших изображений PNG и JPG (например, illustration-big.png и illustration-small.png ). Мы позволим браузеру выбрать, какой из них он должен загрузить, в зависимости от размера устройства и разрешения экрана.

Экраны Retina

Мы впервые беспокоимся об устройствах Retina, поэтому давайте немного поговорим о разрешении экрана. Экраны Retina имеют в два раза больше пикселей на дюйм, чем экраны со стандартным разрешением. То есть каждый пиксель сетчатки эквивалентен 4 стандартным пикселям. Это оказывает большое влияние на то, как изображения отображаются в веб-браузере.

Для правильного отображения на устройстве Retina изображение должно быть в два раза больше, чем его окончательные размеры на экране. Например, если вы хотите добавить на страницу изображение размером 500×250 пикселей, размер соответствующего файла изображения должен быть 1000×500 пикселей.

На самом деле это небольшое упрощение — не все экраны Retina одинаковы. Например, у iPhone 6 Plus , в три раза больше пикселей на дюйм, чем у стандартного экрана. В этом руководстве основное внимание уделяется варианту использования 2x, но те же методы применимы и к экранам Retina 3x.

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

Адаптивные изображения SVG

Самый простой способ решить все эти проблемы — использовать изображения SVG. Они «просто работают». Поскольку они основаны на векторах, SVG позволяют избежать проблем с разрешением экрана, которые мы увидим в следующем разделе. Давайте посмотрим, добавив иллюстрацию к нашим responsive.html страница. Замените существующее изображение в div .content , чтобы оно соответствовало следующему:

 

Браузеры автоматически масштабируют SVG для устройств с сетчаткой, поэтому это изображение SVG размером 500×250 пикселей будет четко отображаться как на стандартных устройствах, так и на устройствах с сетчаткой.

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

Чтобы получить плавное изображение в Chrome, нам нужно указать иллюстрации всегда заполнять ширину своего контейнера. В styles.css поместите следующее правило с остальными базовыми стилями вне медиа-запросов:

 .illustration {
  ширина: 100%;
}
 

Когда мы указываем 100% ширину изображения, предполагается, что мы хотим сохранить соотношение сторон и автоматически вычислить его высоту. Это исправляет мобильную раскладку, но теперь десктопная версия 9.0438 огромный :

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

 

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

Адаптивные изображения PNG, GIF и


JPG

Конечно, не все изображения в Интернете являются SVG. Иногда нужно добавить фото. Изображения PNG, GIF и JPG являются «растровыми изображениями», что означает, что они определяются попиксельно, а не с помощью векторов. В результате они гораздо более чувствительны к разрешению экрана, чем SVG.

Если вас не беспокоит оптимизация, адаптивные растровые изображения на самом деле не намного сложнее, чем использование изображений SVG. Попробуйте заменить наши существующие illustration.svg с файлом PNG:

 
<дел>

Мы немного изменили структуру HTML, вложив наш тег в другой контейнер. Без этого изображение будет искажено, потому что flexbox попытается установить свою высоту, равную высоте контейнера . content . Это также требует небольшой настройки нашего правила CSS .illustration :

 .иллюстрация изображение {
  ширина: 100%;
  дисплей: блок;
}
 

Также обратите внимание на суффикс -big в имени файла изображения. Это версия PNG с высоким разрешением, которая имеет размеры 1000×500. Устройствам Retina требуется этот «2-кратный» размер для четкого отображения изображения. Если бы мы использовали версию этого изображения с низким разрешением (500×250 пикселей), оно выглядело бы нормально на стандартных экранах, но нечетко на устройствах с сетчаткой.

Считайте, что это ленивый способ создания адаптивных изображений PNG, GIF или JPG, поскольку он предполагает, что всем нужны изображения с высоким разрешением, даже если они этого не делают. То есть изображение размером 1000×500 пикселей является излишним для устройств без сетчатки. Мы немного поумнеем в этом в следующем разделе.

Адаптивная оптимизация изображения

Различные устройства имеют разные требования к изображению. К счастью, HTML предоставляет возможность выбрать лучшее изображение для устройства пользователя. В следующих нескольких разделах мы рассмотрим три сценария оптимизации адаптивных изображений:

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

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

Оптимизация Retina с помощью srcset

Изображения с высоким разрешением большие. Наши illustration-big.png занимает вдвое больше места на диске, чем его аналог с низким разрешением. Нет смысла предоставлять все эти дополнительные данные, когда пользователю они на самом деле не нужны.

Добавление атрибута srcset к нашему элементу позволяет нам отображать наше изображение с высоким разрешением только на устройствах сетчатки, возвращаясь к версии с низким разрешением для стандартных экранов. Обновите наш элемент .illustration , чтобы он соответствовал следующему:

 <дел>
  

Атрибут srcset указывает на список альтернативных файлов изображений вместе со свойствами, определяющими, когда браузер должен использовать каждый из них. 1x указывает браузеру отображать illustration-small.png на экранах со стандартным разрешением. 2x означает, что illustration-big.png предназначен для экранов Retina. Старые браузеры, которые не понимают srcset , используют атрибут src .

Как правило, версии изображения с низким и высоким разрешением будут одинаковыми (за исключением их размеров), но мы сделали illustration-small.png желтым, чтобы вы могли легко отличить его от версии для сетчатки. который синий.

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

Если вы создаете эти примеры на компьютере с экраном Retina, вы также можете попробовать временно изменить этот 2x на 1x , чтобы увидеть, как выглядит изображение без Retina. Он немного нечеткий (и желтый).

Оптимизация ширины экрана с помощью srcset

Отлично! Мы можем сэкономить несколько дополнительных байтов для устройств без сетчатки. К сожалению, описанный выше метод srcset упускает из виду важный вариант использования больших изображений: если у пользователя есть смартфон с сетчаткой, он загрузит изображение с высоким разрешением, даже если стандартной версии будет достаточно.

Представьте, что мы хотим отобразить большую фотографию в нашем элементе .header . Заголовок имеет ширину 960 пикселей в нашем макете рабочего стола, поэтому наша фотография должна иметь ширину не менее 1920 пикселей, чтобы хорошо отображаться на экранах Retina. Мы также предоставим фотографию шириной 960 пикселей для стандартных экранов. Теперь рассмотрим смартфон с экраном Retina. Смартфоны обычно имеют ширину менее 400 пикселей в портретном режиме, а это означает, что соответствующее изображение с качеством сетчатки должно иметь ширину всего 800 пикселей.

Эй! Мы можем отправить нашу фотографию в стандартном разрешении на Retina-смартфоны!

Урок здесь заключается в том, что мы хотим оптимизировать большие изображения на основе их окончательных визуализированных размеров, а не только разрешения экрана устройства. Давайте добавим эту большую фотографию к нашему элементу .header :

 
<дел>

У нас есть тот же элемент srcset , что и в последнем разделе, но вместо дескрипторов 1x и 2x мы предоставляем внутреннюю физическую ширину изображения. 2000w сообщает браузеру, что файл photo-big.jpg имеет ширину 2000 пикселей. Аналогично, 1000w означает, что photo-small.jpg имеет ширину 1000 пикселей. Если вас интересует этот символ w , это специальная единица, используемая только для такого сценария оптимизации изображения.

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

Здесь мы говорим, что когда экран имеет ширину не менее 960 пикселей , изображение также будет иметь ширину 960 пикселей. В противном случае 100vw 9Значение по умолчанию 0058 сообщает браузеру, что ширина изображения будет составлять 100% от «ширины области просмотра» (причудливый термин для ширины экрана). Вы можете прочитать больше о блоке vw на MDN. Все это соответствует поведению изменения размера изображения в нашем CSS.

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

 .header {
  высота: авто;
  оправдать-содержание: наследовать;
  выравнивание элементов: наследовать;
}
.фото изображение {
  ширина: 100%;
  дисплей: блок;
}
 

Помните, что наша фотография с низким разрешением имеет ширину 1000 пикселей, а это означает, что ее могут использовать устройства с сетчаткой 2x, если ширина их экрана меньше 500 пикселей. В Firefox теперь вы сможете изменить размер браузера, чтобы увидеть версию для сетчатки («Большой»), когда окно шире 500 пикселей, и версию без сетчатки («Маленький») для более узкой ширины.

Теперь мы предоставляем изображение размером 115 КБ на мобильные устройства вместо того, чтобы заставлять их использовать изображение с высоким разрешением 445 КБ. Это очень важно, особенно для веб-сайтов, которые используют много фотографий.

Тестирование с помощью Chrome

Этот метод отлично работает в Chrome, но мы не можем точно сказать, потому что он умный. Chrome всегда будет использовать версию с высоким разрешением, если она уже кэширована локально, а это значит, что мы не сможем увидеть версию с низким разрешением, просто сузив окно браузера. Мы должны избежать локального кеша браузера, открыв новое окно в режиме инкогнито, а затем избежать загрузки photo-big.jpg , сделав окно очень узким перед загрузкой страницы.

Художественное оформление с использованием

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

Позволяет оптимизировать макеты , отправляя пользователю совершенно разные изображения в зависимости от их устройства. Сравните это с предыдущим разделом, который оптимизировал одно и то же изображение для разных устройств. Например, наша заглавная фотография довольно широкая. Было бы здорово, если бы мы могли обрезать более высокую версию и представить ее на мобильных устройствах вместо широкой настольной версии?

Для этого нам понадобятся элементы и . Первый — это просто обертка, а второй условно загружает изображения на основе медиа-запросов. Попробуйте изменить наш элемент .header на следующий:

 <дел>
  <дел>
    <картинка>
       jpg'/>
      <исходный медиа='(максимальная ширина: 400 пикселей)'
              srcset='images/photo-tall.jpg'/>