Содержание

Медиаэлементы | Основы верстки контента

Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

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

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

В этом уроке мы рассмотрим вставку медиаэлементов и то, как HTML помогает нам оптимизировать их загрузку.

Изображения

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

Для вставки изображения с помощью HTML используется специальный тег <img>. Это непарный тег, основными атрибутами которого являются:

  • src — путь до изображения.
  • alt — альтернативный текст изображения.
<img src="../images/hexlet.png" alt="Логотип Hexlet">

Описание в атрибуте alt — несправедливо забытый момент в работе верстальщика. Визуально он выдает себя только при сбое загрузки изображения, поэтому, зачастую, его заполняют «как попало». Это плохой тон! Именно этот атрибут считывают скринридеры (устройства для чтения с экрана) для передачи сути изображения. Если описание имеет вид «Картинка 1», то слепые люди никогда не поймут, что же там было.

Важно понимать, что должно быть в атрибуте alt. Представьте, что не загрузилось изображение, показывающее результаты соц. опроса. Какие варианты описания могут быть?

  • Результаты социального опроса — было описано изображение, но не его суть. Так какие в итоге результаты соц. опроса?
  • Инфографика — тут уже теряется смысл, а что за инфографика? Если в тексте не было заголовка до нее, то все совсем печально.
  • Результаты социального опроса. Windows используют 30% опрошенных. Linux используют 50% опрошенных. 20% используют DOS
    . Длинное название, но оно полностью раскрывает суть.

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

У изображений, вставленных с помощью тега <img> есть неприятная особенность — они не сжимаются в зависимости от устройства.

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

Размер контейнера в примере выше ограничен 500 пикселями. Чтобы его лучше было видно, мы добавили толстые границы. Как видите, само изображение спокойно ушло за пределы контейнера. Это не то, что хочется. Особенно учитывая большое количество устройств, с которыми приходится сталкиваться верстальщику.

Решить эту проблему позволяют два свойства:

  • max-width — максимальная ширина элемента. Указав значение в 100%, вы запретите элементу занимать ширину больше своего родителя.
  • height — высота. Часто выставляют значение auto. Это позволит сохранить правильные пропорции.

Итого получится следующий CSS код, который вы будете очень часто встречать в проектах:

img {
  max-width: 100%;
  height: auto;
}

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

Такой эффект получается из-за свойства vertical-align, которое отвечает за вертикальное выравнивание элемента. По умолчанию оно имеет значение baseline. В будущих курсах вы больше узнаете о том, как конкретно происходит такое выравнивание. Сейчас нам важна практическая часть и решение проблемы. Для этого достаточно указать значение middle для свойства vertical-align у изображения.

img {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
}

Использование нескольких версий изображения

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

Подробнее с ними вы познакомитесь в курсе CSS: Адаптивность.

Для указания нескольких вариантов изображения используется тег <picture>, который имеет следующую структуру:

<picture>
  <source media="медиазапрос_1" srcset="путь_к_изображению_1">
  <source media="медиазапрос_2" srcset="путь_к_изображению_2">
  <source media="медиазапрос_3" srcset="путь_к_изображению_3">
  <img src="hexlet-images.png" alt="Альтернативное описание изображения">
</picture>
  • Внутри тега <picture> обязательно должен находиться тег <img>. Это основное изображение, которое будет загружено, если другие варианты не подходят.
  • В специальном теге <source> лежат другие варианты изображений. Они будут подключаться в зависимости от медиазапроса, который указывается в атрибуте media.
<picture>
  <source
    media="(min-width: 1024px)"
    srcset="https://picsum.
photos/1280/500" > <source media="(min-width: 700px)" srcset="https://picsum.photos/700/360" > <img src="https://picsum.photos/500/360" alt="Random Images"> </picture>

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

Видео и аудио

Вставка видео и аудио файлов с помощью HTML очень похожа на добавление изображений через тег <picture>. Необходим общий контейнер и несколько элементов <source> внутри него. Главное отличие — большое количество дополнительных атрибутов, которые позволяют добавлять или удалять интерактивные элементы, а также влиять на предзагрузку.

Видеофайлы

Добавление видео происходит с помощью тега <video>. Все видеофайлы добавляются внутри этого тега с помощью тегов <source>. Исключением является ситуация, при которой видеофайл всего один.

Тогда его можно добавить в виде атрибута для тега <video>.

<video src="./video/hexlet-presentation.mp4"></video>

Если видео представлено в нескольких форматах, то все они должны быть указаны через теги <source>, по аналогии с добавлением изображений.

<video>
  <source src="./video/hexlet-presentation.mp4" type="video/mp4">
  <source src="./video/hexlet-presentation.webm" type="video/webm">
  <source src="./video/hexlet-presentation.ogg" type="video/ogg">
</video>

Можно заметить, что в <source> находятся одни и те же видео, только в разных форматах. Почему это важно? Дело в том, что не каждый браузер поддерживает все возможные форматы видео. С каждым годом браузеры все улучшают поддержку форматов, но проблема старых браузеров остается актуальной. Наиболее «всеядный» формат для браузеров —

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

Тег <video> имеет множество интересных атрибутов. Не все из них стоит знать в начале своего пути, но основные из них мы изучим:

  • autoplay — Автоматическое воспроизведение видео. Не добавляйте его без крайней необходимости. Всегда хочется показать все лучшее со страницы, но внезапное воспроизведение файла скорее разозлит пользователя
  • controls — добавление интерактивных элементов управления, таких как запуск, остановка, регулировка звука
  • muted — Выключение воспроизведения аудиодорожки. Если в видео важен только визуальный ряд, а фоновая музыка второстепенна, то стоит установить этот атрибут. При необходимости пользователь сам включит звук
  • preload — Указание на предзагрузку видео до взаимодействия с ним. Может принимать одно из нескольких значений:
    1. metadata
      — подгрузка метаданных. К ним относится название видео, его длина
    2. auto — подгружать видео с самого начала. Если видео является обязательным элементом для просмотра (например, после окончания статьи), то вы можете включить подзагрузку. Пока пользователь прочитает статью, видео для него уже будет загружено. Будьте аккуратны, думайте о пользователях с мобильным интернетом
    3. none — не загружать видео до момента взаимодействия с пользователем
  • poster — Ссылка на изображение, которое будет использовано в виде превью видео

Добавим некоторые атрибуты к видео и посмотрим, как они сработают:

<video controls muted preload="none">
  <source src="big_buck_bunny.webm" type="video/webm">
  <source src="big_buck_bunny.ogv" type="video/ogg">
</video>

Аудиофайлы

Процесс вставки аудиофайлов почти не отличается от вставки видеофайла. Используя тег <audio> можно задать как один файл, так и несколько, с помощью вложенных тегов <source>.

<audio src="audio.mp3" controls></audio>
<audio controls>
  <source src="audio.mp3" type="audio/mpeg">

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Электронная почта *

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

css — Верстка блока с картинками

Вопрос задан

Изменён 6 лет 4 месяца назад

Просмотрен 1k раз

Всем здравствуйте! Не так давно начала осваивать верстку и пока испытываю проблемы с подбором инструментов к задаче.

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

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

.box_gorozhane {
 display: -webkit-flex;
 display: flex;
 -webkit-flex-wrap: wrap;
 flex-wrap: wrap;
 -webkit-justify-content: space-around;
 justify-content: space-around;
 }
.img_gorozhane {
position: relative;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction: column;
text-align: center;
}

Также попробовала display: inline-block, но в таком случае съезжает подпись к фото.

Каким образом лучше всего это реализовать?

HTML код сейчас такой

<div class=box_gorozhane>
<div class=img_gorozhane>
<img src=".png">
<p>Фамилия Имя</p>
</div>
<div class=img_gorozhane>
<img src=".png">
<p>Фамилия Имя</p>
</div>
<div class=img_gorozhane>
<img src=". png">
<p>Фамилия Имя</p>
</div>
</div>
  • css
  • вёрстка

Вариант 1 — inline-block:

a {
  display: block;
}

.bit {
  display: inline-block;
  vertical-align: top;
  text-align: center;
  margin: .25rem;
}
<div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div><div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div><div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div><div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div><div>
    <img src="https://dummyimage. com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div><div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div><div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div><div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
</div>

Вариант 2 — flex (поддержка):

.row {
  overflow: hidden;
  display: flex;
  flex-flow: row wrap;
  overflow: hidden;
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  align-content: center;
  justify-content: center;
}

a {
  display: block;
}

.bit {
  text-align: center;
  margin: .25rem;
}
<div>
  <div>
    <img src="https://dummyimage. com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage. com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
</div>

Вариант с float:

*{box-sizing: border-box;}

.row {
  overflow: hidden;
}

a {
  display: block;
}

.bit {
  text-align: center;
  padding: .5%;  
}

@media (min-width: 500px){
  .bit {
    text-align: center;
    width: 20%;
    float: left;
    padding: .5%;  
  }
}
<div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage. com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
  <div>
    <img src="https://dummyimage.com/100x100/ccc/fff" alt="">
    <a href="#">Name Name</a>
  </div>
</div>

1

Я бы все-таки делал с flex, но можно и с инлайнблоками, если вы хотите «контролировать» все расстояния и размеры. Например так:

.img_gorozhane{
  display:inline-block;
  position:relative;
  width:200px;
  height:300px;
  margin:10px;
  background:lightgrey;
}

. img_gorozhane p {
  position:absolute;
  bottom:10px;
  left:10px;
  margin:0;
}

.img_gorozhane img {
 background:grey;
 width:190px;
 height:260px;
 position:relative;
 top:5px;
 left:5px;
}
<div class=box_gorozhane>
<div class=img_gorozhane>
<img src=".png">
<p>Фамилия Имя</p>
</div>
<div class=img_gorozhane>
<img src=".png">
<p>Фамилия Имя</p>
</div>
<div class=img_gorozhane>
<img src=".png">
<p>Фамилия Имя</p>
</div>
</div>

4

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Шаблоны фотоколлажей — photo-collage.

net

Шаблоны

  • Избранное (20)
  • Стандарт (129)
  • Любовь (53)
  • День рождения (35)
  • Друзья (16)
  • Семейный (25)
  • Память (11)
  • Календарь (3)
  • Путешествия и отдых (29)
  • Прочее (36)
  • Все (316)

Количество изображений

  • 2–9 изображений
  • 10–19 Картинки
  • 20–39 Картинки
  • 40 — 75 Картинки
  • 75+

Специальные предложения

  • Форма сердца
  • Дизайн

Наш совет

  • Имена
  • Числа
  • Фотомозаика

Доступные размеры

Пейзаж | Квадрат

  • 40×30 см
  • 60×45 см
  • 80×60 см
  • 100×75 см
  • 120×90 см
  • 30×30 см
  • 40×40 см
  • 60×60 см
  • 80×80 см
  • 100×100 см

Можно выбрать в процессе заказа

Изображения на коллаж

  • 2-9
  • /
  • 10-19
  • /
  • 20-39
  • /
  • 40-75
  • /
  • 75+

Текст:

  • с
  • /
  • без
  • ИзбранноеСтандартныйДень рождения с любовьюДрузьяСемьяПамятьКалендарьПутешествия и отдыхДругоеВсе

Имена/Слова

Макс. 15 букв

Различные форматы

Полностью настраиваемый

Создать коллаж

Цифры

от 1 до 99

Различные форматы

900 84 С/без текста

Создать коллаж

237. Стандартный

2 изображения

Пейзаж

Без текста

Создать коллаж

233. Стандартный

3 изображения

Пейзаж

Без текста

Создать коллаж

241. Стандарт

5 Картинки

Пейзаж

Без текста

Создать коллаж

44. Стандарт

6 Картинки

Пейзаж

Без текста

Создать коллаж

43. Стандартный

6 Картинки

Альбом

Без текста

90 112 Создать коллаж

46. Стандартный

7 Картинки

Пейзаж

Без Текст

Создать коллаж

50. Стандартный

8 Картинки

Пейзаж

Без текста

Создать коллаж

113. Стандартный

15 изображений

Квадратный

Без текста

Создать коллаж

277. Стандартный

900 84 30 Картинки

Пейзаж

С текстом

Создать коллаж

262. Стандартный

30 Картинки

Квадрат

Без текста

Создать коллаж

279. Стандартный

53 Картинки

Пейзаж

Без текста

Создать коллаж

280. Стандартный

99 Картинки

Пейзаж

Без текста

Создать коллаж 900 85


Показать все шаблоны

фото мозаика — photo-collage.

net

Фото онлайн Создатель мозаики

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

Для клиентов из Великобритании: Пожалуйста, посетите нашу страницу Photo Mosaic UK.


Что нужно знать о Мозаике

  • Сколько времени уходит на создание фотомозаики?

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

  • Нужно ли мне специальное программное обеспечение для мозаики?

    Нет! Вам нужно всего 3 вещи: смартфон или компьютер, доступ в интернет и, конечно же, ваши фотографии. Таким образом, нет необходимости загружать или устанавливать программное обеспечение .

  • Нужно ли платить за создание мозаики?

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

  • Сколько фотографий можно/нужно использовать?

    Вам необходимо не менее 30 фото + 1 фото для основного изображения . Вы можете загрузить до 1000 отдельных изображений для вашей мозаики. Чем больше фотографий вы передаете, тем лучше результат.

  • Насколько велика будет окончательная мозаика?

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

  • Каков размер отдельных изображений?

    Небольшие изображения будут иметь минимальную ширину 1 дюйм . Этот размер является идеальным балансом между отдельными изображениями и основным фото: вы можете четко видеть все изображения в одной большой мозаике.

  • Какое минимальное разрешение загружаемых фотографий?

    маленьких изображений должны иметь размер 640 x 480 пикселей или иметь размер не менее 0,5 МБ . Для основного изображения требуется 2 МБ или 3 мегапикселя . Хотя требуемые разрешения кажутся небольшими, они отлично подходят для мозаики. Однако разрешение не должно быть меньше этого.



Создание мозаики


стало проще

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

Просто загрузите. Редактировать. Создавать. Скачать. —
Вот именно!


Начните здесь


Приложение для фото-мозаики

С нашим приложением для фото-мозаики можно создать мозаику всего за несколько минут.

Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *