Size background html: background-size — CSS: Cascading Style Sheets


20.06.2023 Facebook Twitter LinkedIn Google+ Разное


Содержание

webkit-background-size — свойство css :: руководство cssdot.ru

Свойство -webkit-background-size позволяет указывать размеры фонового изображения, которые могут быть заданы в абсолютных величинах (cm, mm, in и т.д.), относительных (px, em и т.д.), или в процентах, по отношению к ширине и высоте элемента контейнера. Масштабировать фоновое изображение возможно как с сохранением исходных пропорций, так и без них.

Допустимые значения

  • length{1,2} — задает размер фонового изображения в абсолютных величинах (cm, mm, in и т.д.) или относительных (px, em и т.д.). Если задано только одно значение, то второе вычисляется автоматически исходя из пропорций картинки.
  • percentage{1,2} — задает размер фонового изображения в процентах от ширины и/или высоты элемента контейнера. Если задано только одно значение, то второе вычисляется автоматически исходя из пропорций картинки.
  • auto{1,2} — задает размер фонового изображения равным исходному, в случае, если указаны обе величины auto, или просто auto; а если указан только для одной стороны картинки (25% auto), то размер вычисляется исходя из пропорций картинки.
  • cover — масштабирует картинку с сохранением пропорций по меньшей стороне, то есть так, чтобы фон с избытком покрывал блок-контейнер.
  • contain — масштабирует картинку с сохранением пропорций по большей стороне, то есть так, чтобы блок-контейнер с избытком покрывал фон.

Примечания

Chrome 1-3, Safari 3-4

Свойство -webkit-background-size в движке WebKit изначально было реализовано в рамках черновика спецификации CSS3, в котором отсутствовали ключевые слова contain и cover, а так же предполагалось, что если задан размер фоновой картинки с использованием только одного параметра, то второй параметр считается, не пропорционально размерам картинки, а равен первому.

Свойство -webkit-background-size относится к спецификации CSS, применяется к всем элементам, и действует на всех визуальные носителях, его значение не наследуется от родительского элемента в иерархии документа, Является расширением движка WebKit (браузеры Chrome и Safari), и не совместимо с другими браузерами.

Смотри также:

  • background-size — Размер фонового изображения, или его масштаб относительно элемента-контейнера.
  • -o-background-size — Размер фонового изображения, или его масштаб относительно элемента-контейнера.
  • -moz-background-size — Размер фонового изображения, или его масштаб относительно элемента-контейнера.
  • Спецификация стандарта CSS 3
  • Описание на Mozilla Developer Network
  • Описание на Microsoft Developer Network
  • Описание на Safari Developer Library

Краткое описание

Размер фонового изображения, или его масштаб относительно элемента-контейнера.

Синтаксис:

[ <length> | <percentage> | auto ]{1,2} | cover | contain [, [ <length> | <percentage> | auto ]{1,2} | cover | contain]*

Применяется к:

всем элементам

Наследование:

не наследуется

Тип носителя:

визуальные

Объектная модель документа (DOM):

[элемент].style[‘-webkit-background-size’]


Кроссбраузерная совместимость

Internet Explorer
не поддерживается
Firefox
не поддерживается
Chrome
1.02.03.04.15.06.07.08.09.010.011.012.013.014.015.016.017.018.019.020.0
+/-+/-+/-+++++++++++++++++
Safari
1. 01.11.21.32.03.03.24.05.0
+/-+/-+
Opera
не поддерживается

масштабируем фон — учебник CSS

Когда вы добавляете фоновый рисунок через свойство background-image, то по умолчанию изображение отображается в своих реальных размерах. Это не всегда удобно, поэтому в CSS3 появилось новое свойство background-size для регулировки размера фонового изображения.

Значения background-size

Значения для свойства background-size можно задавать при помощи ключевых слов, а также в любых единицах измерения CSS. В одной записи можно указывать размеры как для одной, так и для двух сторон — горизонтальной и вертикальной (последовательность важна).

Ключевые слова

  • auto (значение по умолчанию) — если данное значение установлено для горизонтали и вертикали, т.  е.:

    
    background-size: auto auto;
    

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

    
    background-size: 250px auto;
    

    …то высота фоновой картинки будет вычисляться автоматически.

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




  • cover — фоновое изображение масштабируется так, чтобы полностью заполнить пространство элемента, при этом сохраняя свои пропорции. Если пропорции элемента не соответствуют пропорциям изображения, это может привести к тому, что часть рисунка будет скрыта.




Числовые значения

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

Чтобы задать точную ширину и высоту, используйте два значения — первое для ширины, второе для высоты:


background-size: 300px 300px;

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




Чтобы сохранить пропорции фона, используйте для одной из сторон свойство auto:



Здесь высота рисунка составляет 50% от высоты элемента, а ширина подгоняется автоматически

Свойство background-size часто используется на практике. Например, его очень удобно использовать, когда размер элемента указан в процентах. Если задать блоку ширину 50% от ширины экрана, а его фону — ширину 100%, то при изменении размера окна фон всегда будет соответствовать ширине элемента.

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

Практически все используемые браузеры (как десктопные, так и мобильные) хорошо работают со свойством background-size. Internet Explorer понимает данное свойство, начиная с 9-й версии.


Далее в учебнике: пишем стиль для фона, используя сокращенную запись — «мульти»-свойство background.

Пропорциональное изменение размера изображений с сохранением соотношения сторон

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

Изменение размеров тегов изображений HTML

Наш первый выбор — установить только одно свойство size, либо width или высота , браузер автоматически рассчитает размер другого края.

Представьте, что у нас есть изображение кота с соотношением сторон 4:3 , другими словами, его размеры 4032 × 3024 , это много кота.

Если мы хотим, чтобы он отображался немного меньше, мы можем установить width на 240 , тогда браузер автоматически рассчитает высоту как 180 .

 

Есть одно предостережение. Изображения доступны не сразу.

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

Это плохая новость для производительности вашей страницы.

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

  

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

Но не бойтесь, мы можем исправить это с помощью CSS.

 изображение {
    подходит для объекта: содержит;
} 

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

 изображение {
    объект подходит: обложка;
} 

Что делать, если наше изображение нужно ограничить шириной родительского элемента? В этой ситуации мы можем использовать CSS max-width или ширина , чтобы соответствовать изображению.

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

 <дел>
    
 
 раздел {
    ширина: 240 пикселей;
    граница: 1px сплошной розовый;
}
картинка {
    максимальная ширина: 100%;
    подходит для объекта: содержит;
} 

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

Изменение размера фоновых изображений CSS

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

 <дел> 
 раздел {
    фон: url('cat.jpeg') без повторов;
    граница: 1px сплошной розовый;
} 

Мы можем исправить это, установив размер фона свойство. Чтобы разместить изображение внутри элемента, мы используем значение , содержащее . Браузер поместит изображение внутри границ элемента и пропорционально масштабирует его.

 <дел> 
 раздел {
    фон: url('cat.jpeg') без повторов;
    размер фона: содержит; /* масштабирует изображение */
    фоновая позиция: центр; /* центрирует изображение */
    граница: 1px сплошной розовый;
} 

Подобно object-fit , мы также можем использовать значение cover , чтобы сообщить браузеру, что элемент должен быть покрыт пикселями кошки. Как вы можете видеть ниже, это заставит его уменьшиться настолько, чтобы соответствовать вертикальному пространству, теперь обрезана только правая сторона нашего кота.

 <дел> 
 раздел {
    фон: url('cat.jpeg') без повторов;
    размер фона: обложка;
    граница: 1px сплошной розовый;
} 

Мы также можем указать единственное значение width для свойства background-size . Подобно элементу img , высота будет рассчитана автоматически.

 <дел> 
 раздел {
    фон: url('cat.jpeg') без повторов;
    размер фона: 200 пикселей;
    граница: 1px сплошной розовый;
} 

Вот оно!

Рекомендации по оптимизации фонового видео HTML

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

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

Короткое фоновое видео

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

Помните, что это фоновое видео, а не продукт или обучающее видео. Видео не должно быть длиннее 15 или 20 секунд. Клип меньшей продолжительности сохраняет разумный размер и может начать потоковую передачу быстрее. Если вам нужно показать 60-секундный контент, возможно, вам нужно настоящее рекламное или маркетинговое видео!

Уменьшить движение и скорость

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

Оптимизация видеофайла

Здесь нужно сделать три основных действия:

1) Сохранить размеры Standard HD

Ваше видео может быть HD (высокой четкости), то есть видео 720p (1280 x 720 пикселей). На самом деле нет причин экспортировать фоновое видео в формате Full HD (1920 x 1080) — это просто излишество и потеря пропускной способности.

2) Поддерживайте низкую частоту кадров

Частота кадров 24 или 25 кадров в секунду достаточна. В конце концов, мы не продюсируем голливудский фильм! Меньшее количество кадров означает меньший размер файла.

3) Удалить аудиоканал

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

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

Оптимизация изображения афиши

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

Поддержка нескольких форматов видео

Если вы хотите работать с различными браузерами, экспортируйте видео в формате mp4 и webm. Размеры сжатых файлов этих видео, вероятно, будут очень похожими. Вот простой пример того, как код может выглядеть на веб-странице:

 <видеопостер="/bg-video-posterimage.jpg">
  
  
 

Мы предоставляем несколько форматов, поскольку не все браузеры поддерживают одни и те же форматы видео. Используя «исходные» элементы, браузер будет использовать первый из них, который он понимает (например, Safari будет использовать mp4, а Chrome — webm).

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

Обеспечьте контрастность

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

Добавить кнопку паузы

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

Пример оптимизации фонового видео: Tesla

На момент написания этой статьи у Tesla есть фоновое видео на странице модели Y: https://www.tesla.com/modely

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

  • Оно длится всего 14 секунд
  • Звук отсутствует (хотя в этом видео есть стереофонические аудиоканалы без звука. Возможно, их удаление может еще больше уменьшить размер файла)
  • Циклы видео
  • Есть элементы управления видео, если вы наводите курсор на видео, что позволяет пользователю приостановить его
  • Достаточный контраст, чтобы прочитать текст над видео
  • Он в формате mp4 (они даже не служат webm в качестве альтернативного источника на рабочем столе)
  • Размеры 1254 × 1080 (нечетные размеры, но ближе к квадрату, чтобы соответствовать дизайну их страницы)
  • Размер всего 2,9 МБ
  • Частота кадров 25 кадров в секунду
  • Битрейт составляет 1,68 Мбит/с
  • Они предоставляют альтернативную веб-версию для мобильных устройств

В целом, это хороший пример оптимизации фонового видео.

Окончательная оптимизация: мобильная версия

В зависимости от проекта может возникнуть необходимость показывать меньшее видео на мобильных устройствах или вообще не показывать видео (вместо этого использовать изображение) для экономии трафика ваших пользователей. Мы уделяем большое внимание Google Page Speed ​​Insights и Core Web Vitals, о которых я говорил в своем посте «Улучшение работы с Google Page с помощью Core Web Vitals». Это очень важно, если вы хотите, чтобы ваш сайт отображал страницы быстро.

Изучая Web Vitals в проектах с фоновыми видео, которые должны отображать изображение на мобильных устройствах, мы заметили, что даже несмотря на то, что видео не показывалось на мобильных устройствах (потому что мы скрывали его с помощью медиа-запросов CSS), оно все равно продолжало отображаться. загружаться в фоновом режиме, как и постер к видео. Мы не хотели, чтобы какая-либо часть видеоэлемента загружалась (мы хотели показать совершенно отдельное мобильное изображение, над которым у нас было больше контроля с помощью CSS, чем это позволяло изображение постера), поэтому нам пришлось сделать еще один шаг. Это было легче сказать, чем сделать — при поиске в Интернете было не так много информации о ленивой загрузке изображения видеопостера.

Для этого нам понадобилась помощь JavaScript. Мы уже использовали Lazy Sizes для отложенной загрузки изображений (это означает, что изображения не загружаются на страницу до тех пор, пока пользователь не прокрутит изображение, что позволяет страницам загружаться быстрее). Мы поняли, что существует плагин/расширение Lazy Sizes под названием Openhooks, которое расширяет lazySizes для дополнительной ленивой загрузки вещей, отличных от изображений, включая скрипты/виджеты, фоновые изображения, стили и видео/аудио элементы.

Вот пример того, как мы реализовали это для элемента видео. Пример кода находится в Twig, а рассматриваемый сайт был построен на Craft CMS, хотя этот метод также будет работать с другими языками шаблонов и другими системами:

 {# Обратите внимание на атрибуты 'data-' и пустое автовоспроизведение для плагина lazysizes servehooks, поэтому ничего из этого не загружается на мобильных устройствах.  #}
 

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

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

Надеюсь, вы сможете использовать эту статью в качестве справочного материала, если кому-то нужно создать видео и он задает такие вопросы, как «Как долго должна выполняться анимация, прежде чем она зациклится? Существуют ли технические параметры, которые должен знать аниматор, чтобы сделать файл « light’, чтобы сократить время загрузки? Какой формат файла предпочтительнее?» — именно те вопросы, которые вызвали этот пост.

Comments