Как растянуть фоновую картинку

Содержание
  1. Растянуть изображение css – Как растянуть фон на всю ширину окна?
  2. Растянуть background на всю ширину с помощью CSS
  3. Метод CSS3 background
  4. Растянуть background на весь экран с помощью css, jquery, php
  5. Растянуть background на чистом CSS
  6. 1 – Метод
  7. 2 – Метод
  8. Растянуть background с помощью jQuery
  9. Растягиваем background с помощью PHP
  10. Наслаждайтесь!
  11. Фон для сайта с картинкой на весь экран (background-size)
  12. Замечательное, простое и прогрессивное решение с помощью CSS3
  13. CSS-хак номер 1
  14. CSS-хак вариант 2
  15. Метод с jQuery
  16. Как изменить размер фонового изображения с помощью CSS3
  17. Абсолютное изменение размера¶
  18. Пример
  19. Относительное изменение размера с помощью процентов¶
  20. Заполнение фоном¶
  21. Установление разных фонов для разных устройств¶
  22. Спасибо за ваш отзыв!
  23. Адаптивное целое фоновое изображение с помощью CSS
  24. Примеры адаптивных целых фоновых изображений
  25. Базовые принципы
  26. HTML
  27. CSS
  28. Сокращенная запись CSS
  29. Подводя итог
  30. Как сделать картинку фоном в html: на весь экран в блокноте
  31. Выбор картинки
  32. Html

Растянуть изображение css – Как растянуть фон на всю ширину окна?

Как растянуть фоновую картинку

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

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

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

Привет. Сегодня рассмотрим, как можно растянуть фон css средствами (без вмешательства других средств, таких как javascript и иже с ними).

Растянуть фон CSS средствами стало возможно с появлением CSS3, конкретно при помощи свойства background-size.

Надо сказать, что это свойство работает намного лучше, чем аналогичные решения на Javascript (которые использовались до появления background-size), так как быстрее и адекватнее реагирует на изменение размера браузера, быстрее сглаживает растянутую картинку, и, как любили говорить в начале 2000-х, — «Будет работать даже с отключенным Javascript».

У свойства background-size может быть несколько значений.
1) это может быть одна из дирректив: cover или contain.

background-size: contain; /* Масштабирует изображение с сохранением пропорций таким образом, чтобы картинка целиком поместилась внутрь блока. */ background-size: cover; /* Масштабирует изображение с сохранением пропорций так, чтобы его ширина или высота равнялась ширине или высоте блока. */

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

background-size: 100%; /*Равносильное директиве cover*/ background-size: 100% 50%; /*Ширина будет на 100% ширины блока, а вот высота — только на 50%, картинка скорее всего будет деформирована*/

3) прямо численное значение (в пискелях, сантиметрах, em и т.д.). Параметров также может быть 2 (или 1), как и в предыдущем случае.
4) значение auto. Обозначает, что картинка не будет растягиваться, а будет использован исходный размер. При этом, параметров также может быть 2 или 1. То есть можно указать следующее:

Судя по данным сайта Can I Use, работать будет во всех современных браузерах, включа IE версии не ниже 9. Так, что переживать в принципе повода нет. Смотрите таблицу совместимости:

htmler.ru

Растянуть background на всю ширину с помощью CSS

Здесь как можно подробнее разберем. как можно реализовать фон (background) интернет ресурса, что должен покрывать все рабочее пространство.

Основном все делается на CSS3, также можно подключить jQuery и даже PHP, но рассмотрим один вариант, который на чистом CSS. Для начало нужно понять или определить, что должно получится.

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

Где будем растягивать картинку, так чтоб она смотрелось корректно, так как если идет фон под одним оттенком цвета, с ним легче работать.

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

Метод CSS3 background

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

Здесь изначально создадим background фиксированным и выставим его по центру, что останется его только растянуть, где подключаем свойства background-size, это все идет под ссылку на фон.

В общим ориентируемся с блоком которому присваиваем стили и дописываем в файле стилей этому блоку, следующий код:

Код

body{   background: url(http://zornet.ru/Aben/ABGDA/artunsa.png) no-repeat center top fixed;   -webkit-background-size: cover;   -moz-background-size: cover;   -o-background-size: cover;   background-size: cover;

}

Как можно заметить, что параметр background, где изначально добавляем путь на картину, где происходит установка положение изображение в соответствие окна экрана. Если разбирать, то значение center и top отвечает за центр и прижатие по всем сторонам, чтоб не было пробелов. Чтоб понятно было, то значение fixed – отвечает за функцию фиксаций.

Метод совсем обычный, что применяю постоянно и он меня устраивает на все 100% процентов.

Еще один способ:

Еще один обычный метод воплотить наверное, вставить картину на страницу. Она станет обладать фиксированную позицию и будет размещена в верхнем левом углу. Мы присвоим ей min-width и min-height 100%. Еще необходимо заблаговременно приготовить картину, в намерении пропорциональности сторон.

Код

CSS

Код

#zornet_ru {   position:fixed;   top:0;   left:0;    min-width:100%;   min-height:100%;

}

Здесь как можно заметить, что этот код не центрирует background image, что можно быстро все сделать как нужно, а точнее фиксировать изображение с помощью взятия ее в div.

Код

CSS

Код

#zornet_ru {   position:fixed;   top:-50%;   left:-50%;   width:200%;   height:200%; } #zornet_ru img {   position:absolute;   top:0;   left:0;   right:0;   bottom:0;   margin:auto;   min-width:50%;   min-height:50%;

}

На этом все, здесь представлены не все способы, а те, которые больше пременяют.

Также небольшое видео, где все понятно объясняют по как при помощи CSS растянуть фон на весь экран.

PS

Источник: https://schtirlitz.ru/raznoe/rastyanut-izobrazhenie-css-kak-rastyanut-fon-na-vsyu-shirinu-okna.html

Растянуть background на весь экран с помощью css, jquery, php

Как растянуть фоновую картинку
Нашей целью будет реализовать фон (background) сайта, который будетпокрывать все рабочее пространство окна браузера. Мы будем делать это с помощьюразных техник используя CSS3,чистый CSS, jQuery, PHP.

Давайте определим, что именно мы хотим получить:

Полная заливка окна картинкой, без пробелов.

Растягивание фоновой картинки, насколько это нужно.

Соответствие пропорций картинки.

Картинка должна находиться в центре.

Это должно быть максимально кроссбраузерно.

И без всяких махинаций с flash.

Мы можем растянуть background на чистом css, благодаря свойству background-size котороеприсутствует в CSS3. Мыбудем использовать html элемент,это лучше чем body, так как он всегда будет равенвысоте окна браузера. Мы сделаем background фиксированным и поставим его вцентре окна, после этого мы его растянем на весь экран с помощью свойства background-size.

html { background: url(images/bg.jpg) no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover;}

Кроссбраузерность:

Safari 3+

ChromeWhatever+

IE 9+

Opera10+ (Opera 9.5 поддерживаетbackground-size ноне поддерживает ключевых слов)

Firefox 3.6+

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

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');-ms-filter: “progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')”;

Растянуть background на чистом CSS

Сделать background на весь экран с помощью чистого CSS кода, можнодвумя методами. Не исключение что существуют и другие.

1 – Метод

Здесь мы будем использовать элемент img, которыйбудет растянут на все окно, и будет выглядеть одинаково во всех браузерах. Мы установим min-height, который будет заполнять окно браузера по вертикали.Также установим width на100%, который будет заполнять окно по горизонтали. Мы также установим min-width картинки, таким образом, фонникогда не будет меньше, нежели мы установим.

Особо хитрая часть кода, это использование медиа запроса,для предотвращения бага, когда окно браузера будет меньше, нежели картинкафона. А также, комбинированное использование отступа с процентным left. Это позволяет держать background вцентре, несмотря ни на что.

Вот CSS код:

img.bg { /* Set rules to fill background */ min-height: 100%; min-width: 1024px; /* Set up proportionate scaling */ width: 100%; height: auto; /* Set up positioning */ position: fixed; top: 0; left: 0;} @media screen and (max-width: 1024px) { /* Specific to this particular image */ img.bg { left: 50%; margin-left: -512px; /* 50% */ }}

Кроссбраузерность:

Любые версии популярных браузеров: Safari / Chrome / Opera / Firefox

IE6: По крайней мере background остается фиксированным

IE7/8: Множество работ не центрируются на малых размерах, но заполняет экранлучшим образом

IE 9: Работает

2 – Метод

Еще один простой способ реализовать это, вставить картинкуна страницу. Она будет иметь фиксированную позицию и будет размещена в верхнемлевом углу. Мы присвоим ей min-width и min-height 100%.Также нужно заранее подготовить картинку, в плане пропорциональности сторон.

#bg { position:fixed; top:0; left:0; /* Preserve aspet ratio */ min-width:100%; min-height:100%;}

Хотя, этот код не центрирует background image. Поэтому, сейчас мы этоисправим… Мы можем фиксировать картинку с помощью взятия ее в div.

#bg { position:fixed; top:-50%; left:-50%; width:200%; height:200%;}#bg img { position:absolute; top:0; left:0; right:0; bottom:0; margin:auto; min-width:50%; min-height:50%;}

Кроссбраузерность:

Safari/ Chrome / Firefox (не тестировалось наболее древних версиях)

IE 8+

Opera(любые версии) и IE отображают одинаково (плохо позиционируют, не пойму почему)

Растянуть background с помощью jQuery

Эта идея появилась немного ранее (как альтернатива CSS методу).Если мы будем знать пропорции и размер картинки, мы сможем растянуть background наCSS. Если картинкаменьше окна браузера, мы изменим width на 100% для картинки. Если больше, мы можемустановить только height 100% и знать, что картинка заполнит все как по ширине, так ипо высоте.

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

#bg { position: fixed; top: 0; left: 0; }.bgwidth { width: 100%; }.bgheight { height: 100%; }

$(window).load(function() { var theWindow = $(window), $bg = $(“#bg”), aspectRatio = $bg.width() / $bg.height(); function resizeBg() { if ( (theWindow.width() / theWindow.height()) < aspectRatio ) { $bg .removeClass() .addClass('bgheight'); } else { $bg .removeClass() .addClass('bgwidth'); } } theWindow.resize(function() { resizeBg(); }).trigger("resize"); });

Здесь не реализовано центрирование, но вы с легкостью можетесделать это.

Кроссбраузерность:

IE7+

И все другие популярные браузеры

Растягиваем background с помощью PHP

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

Длябольшого проекта это слишком ресурсоемко. Лучше будет сделать готовые заготовкиизображений, соответственно самым популярным разрешениям экранов (1024 x 1280, 1280 x 800…), используя фотошопэто не сложно. В случае, если разрешение экрана будет другим, это единичные случаи,мы подключим скрипт автоматического изменения размера.

Он подключаетсяследующим образом:

$(function() { h = $(window).height(); w = $(window).width(); $(body).style('background','url(phpthumb.php?src=bg.jpg&w='+w+'&h='+h);});

Наслаждайтесь!

Источник: https://sitear.ru/material/css-background-rastyanut

Фон для сайта с картинкой на весь экран (background-size)

Как растянуть фоновую картинку

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

Одним из подобных «направлений» является использование фона (backgorund), который растягивается на весь экран по ширине и высоте.

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

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

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

  • заполнить всю страницу одним изображением без пробелов;
  • изменение размеров картинки при необходимости (уменьшении окна браузера);
  • сохранение пропорций изображения;
  • расположение изображения в центре страницы;
  • отсутствие полос прокрутки на странице;
  • кросс-браузерное решение, подходящее для разных браузеров;
  • реализация без всяких сторонних технологий типа flash.

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

Замечательное, простое и прогрессивное решение с помощью CSS3

Для реализации задачи мы можем использовать свойство background-size в CSS3. Будем использовать элемент html который получше body. Установим фиксированный и центрированный бэкграунд, после чего будем использовать в background-size значение cover.

html { background: url(images/bg.jpg) no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover;}

html { background: url(images/bg.jpg) no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; }

Решение поддерживают почти все браузеры популярные в сети:

  • Firefox 3.6+ (Firefox 4 supports non-vendor prefixed version)
  • Opera 10+ (Opera 9.5 поддерживает background-size но без значения cover)
  • Chrome Whatever+
  • IE 9+
  • Safari 3+

Некий Goltzman нашел решение, которое позволяет работать хаку в IE

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');-ms-filter: “progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')”;

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale'); -ms-filter: “progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')”;

Но внимание!!!  при этом могут возникнуть некоторые проблемы с работой ссылок на странице. Кстати, чуть позже Matt Litherland добавил что код, в принципе, можно использовать но для этого нельзя применять элементы html или body а нужно реализовать все через div с 100% высотой и шириной.

CSS-хак номер 1

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

Устанавливаем значение min-height, которое способствует заполнению окна браузера вертикально и ставим 100% для width, что заполняет страницу горизонтально.

Также ставим min-width чтобы изображение никогда не было меньшим, чем оно есть на самом деле.

Дальше в хаке используется опция @media для проверки является ли окно браузера меньшим чем изображение и с помощью процентного значения left и свойства margin-left выравниваем картинку по центру.

img.bg { /* Set rules to fill background */ min-height: 100%; min-width: 1024px;  /* Set up proportionate scaling */ width: 100%; height: auto;  /* Set up positioning */ position: fixed; top: 0; left: 0;} @media screen and (max-width: 1024px) { /* Specific to this particular image */ img.bg { left: 50%; margin-left: -512px; /* 50% */ }}

img.bg { /* Set rules to fill background */ min-height: 100%; min-width: 1024px; /* Set up proportionate scaling */ width: 100%; height: auto; /* Set up positioning */ position: fixed; top: 0; left: 0; } @media screen and (max-width: 1024px) { /* Specific to this particular image */ img.bg { left: 50%; margin-left: -512px; /* 50% */ } }

Работает в любых версиях качественных браузеров — Safari / Opera /  Firefox и Chrome. Для IE как всегда есть свои нюансы:

  • IE 9 — работает;
  • IE 7/8 — чаще всего функционирует правильно, но не центрирует изображения меньше окна браузера;
  • IE 6 — можно настроить, но кому вообще нужен этот браузер.

CSS-хак вариант 2

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

#bg { position:fixed; top:0; left:0;   /* Preserve aspet ratio */ min-width:100%; min-height:100%;}

#bg { position:fixed; top:0; left:0; /* Preserve aspet ratio */ min-width:100%; min-height:100%; }

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

#bg { position:fixed; top:-50%; left:-50%; width:200%; height:200%;}#bg img { position:absolute; top:0; left:0; right:0; bottom:0; margin:auto; min-width:50%; min-height:50%;}

#bg { position:fixed; top:-50%; left:-50%; width:200%; height:200%; } #bg img { position:absolute; top:0; left:0; right:0; bottom:0; margin:auto; min-width:50%; min-height:50%; }

Хак работает в:

  • Safari / Chrome / Firefox (слишком ранние версии не тестировались, но в последних работает хорошо)
  • IE 8+
  • Opera (любая версия) и вместе с IE both оба глючат одинаково с ошибкой позиционирования.

Метод с jQuery

Данный вариант намного легче (с точки зрения CSS) если мы знаем что соотношение сторон картинки (img используется в качестве фона) больше или меньше текущего соотношения окна браузера. Если меньше, то мы можем использовать только width = 100% и при этом по ширине и высоте окно будет одинаково заполнено. Если больше — можно указать только height = 100% для заполнения всего окна.

Доступ ко всем данным идет через JavaScript, коды используются следующие:

#bg { position: fixed; top: 0; left: 0; }.bgwidth { width: 100%; }.bgheight { height: 100%; }

#bg { position: fixed; top: 0; left: 0; } .bgwidth { width: 100%; } .bgheight { height: 100%; }

$(window).load(function() {   var theWindow = $(window), $bg = $(“#bg”), aspectRatio = $bg.width() / $bg.height();   function resizeBg() {   if ( (theWindow.width() / theWindow.height()) < aspectRatio ) { $bg .removeClass() .addClass('bgheight'); } else { $bg .removeClass() .addClass('bgwidth'); }   }   theWindow.resize(function() { resizeBg(); }).trigger("resize");  });

$(window).load(function() { var theWindow = $(window), $bg = $(“#bg”), aspectRatio = $bg.width() / $bg.height(); function resizeBg() { if ( (theWindow.width() / theWindow.height()) < aspectRatio ) { $bg .removeClass() .addClass('bgheight'); } else { $bg .removeClass() .addClass('bgwidth'); } } theWindow.resize(function() { resizeBg(); }).trigger("resize"); });

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

Источник: http://design-mania.ru/web-design/html-css/fonsajta-naves-ekran/

Как изменить размер фонового изображения с помощью CSS3

Как растянуть фоновую картинку

Размер фонового изображения может быть изменен и масштабирован. В CSS2.1 фоновые изображения, применяемые к контейнеру, сохраняют свои фиксированные размеры. К счастью CSS3 ввел свойство background-size, которое позволяет растянуть или сжать фон. Оно идеально подходит, если вы используете методы адаптивного веб-дизайна для создания шаблонов.

Здесь можете найти разные методы:

Абсолютное изменение размера¶

Когда мы устанавливаем фоновое изображение, ширина и высота изображения по умолчанию устанавливаются в “auto”, которое сохраняет оригинальный размер изображения. А если необходимо изменить размер изображения, могут быть использованы абсолютные измерения для установления нового размера (px, em, cm и др).

Измерения высоты могут быть применены, используя свойство background-size с абсолютным измерением.

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

Давайте рассмотрим пример фонового изображения с измененным размером:

Пример

Фоновое изображение с измененным размером .resized { width: 400px; height: 300px; background-image: url(“/uploads/media/default/0001/01/b408569013c0bb32b2a0f0d45e93e982347951.jpeg”); background-size: 300px 200px; background-repeat: no-repeat; border: 1px solid #999; } Фоновое изображение с измененным размером Попробуйте сами!

Относительное изменение размера с помощью процентов¶

Использование процентных значений может быть довольно полезным при адаптивном дизайне. Когда используется процентное значение, размеры основываются на элементе, а не изображении. Если свойство background-size установлено как “100% 100%”, фоновое изображение будет растянуто таким образом, чтобы оно заполняло всю область контента.

Заполнение фоном¶

Когда свойство background-size установлено в значение “cover”, фоновое изображение будет масштабировано таким образом, чтобы оно заполняло всю область контента. Изображение будет масштабировано, чтобы заполнить контентную область, но оно будет обрезано, если соотношения сторон различаются.

Установление разных фонов для разных устройств¶

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

Можно использовать мультимедийные запросы для отображения разных изображений на разных устройствах.

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

Спасибо за ваш отзыв!

Считаете ли это полезным?

Источник: https://ru.w3docs.com/snippets/css/kak-izmenit-razmer-fonovogo-izobrazheniia-s-pomoshchiu-css3.html

Адаптивное целое фоновое изображение с помощью CSS

Как растянуть фоновую картинку

От автора: В этой обучающей статье мы рассмотрим простую технику создания фонового изображения, которое будет полностью растягиваться на всю ширину окна просмотра (viewport) браузера. Для этого нам понадобится CSS-свойство background-size; JavaScript не нужен.

Примеры адаптивных целых фоновых изображений

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

Sailing Collective

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Узнать подробнее

Digital Telepathy

Marianne Restaurant

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

Базовые принципы

Вот наш план действий.

Используйте свойство background-size, чтобы полностью заполнить окно просмотра

CSS-свойство background-size имеет значение cover. Значение cover сообщает браузеру о том, что необходимо автоматически и пропорционально масштабировать ширину и высоту фонового изображения, чтобы они всегда были равны или были больше ширины/высоты окна просмотра.

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

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

Изображение, которое я использовал в демо-примере, имеет разрешение 5500x3600px. Этого разрешения хватит для большинства широкоформатных компьютерных мониторов, имеющихся в настоящее время в продаже. Но ради этого придется обрабатывать файл размером 1.7MB.

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

HTML

Для разметки потребуется только это:

…Здесь располагается ваш контент…

  …Здесь располагается ваш контент…

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

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

CSS

Задаем следующие стили для элемента body:

body { /* Путь до изображения */ background-image: url(images/background-photo.jpg); /* Фоновое изображение всегда отцентрировано по вертикали и горизонтали */ background-position: center center; /* Фоновое изображение не повторяется */ background-repeat: no-repeat; /* Фоновое изображение зафиксировано в окне просмотра, поэтому оно не смещается, когда высота контента больше высоты изображения */ background-attachment: fixed; /* Вот что позволяет фоновому изображению подстраиваться под размер контейнера */ background-size: cover; /* Устанавливает фоновый цвет, который будет отображаться, пока загружается фоновое изображение */ background-color: #464646; }

  /* Путь до изображения */  background-image: url(images/background-photo.jpg);  /* Фоновое изображение всегда отцентрировано по вертикали и горизонтали */  background-position: center center;  /* Фоновое изображение не повторяется */  background-repeat: no-repeat;  /* Фоновое изображение зафиксировано в окне просмотра, поэтому оно не смещается, когда высота контента больше высоты изображения */  background-attachment: fixed;  /* Вот что позволяет фоновому изображению подстраиваться под размер контейнера */  /* Устанавливает фоновый цвет, который будет отображаться, пока загружается фоновое изображение */  background-color: #464646;

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

Вот, где начинается волшебство. Эта пара свойство/значение сообщает браузеру о том, что нужно масштабировать фоновое изображение пропорционально, т.е. чтобы его ширина и высота были равны или были больше, чем ширина/высота элемента (в нашем случае это элемент body).

Однако у данной пары свойство/значение есть одна проблема: если фоновое изображение меньше размеров элемента body – что произойдет на экранах с высоким разрешением и/или когда у вас огромное количество контента на странице – браузер неизбежно увеличит масштаб изображения. И, как мы знаем, когда мы увеличиваем размеры растрового изображения, качество изображения снижается (другими словами, происходит пикселизация).

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Узнать подробнее

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

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

Чтобы фоновое изображение всегда было по центру окна просмотра, мы пропишем:

background-position: center center;

background-position: center center;

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

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

В данной ситуации изображение либо просто закончиться при прокрутке, либо будет перемещаться по ходу прокрутки (что может сильно отвлекать пользователя).

Чтобы зафиксировать фон, мы указываем для свойства background-attachment значение fixed.

background-attachment: fixed;

background-attachment: fixed;

В демо-примере я добавил возможность «подгрузить контент», чтобы вы могли посмотреть, что происходит при появлении полосы прокрутки в браузере, когда для свойства background-attachment задано значение fixed.

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

Остальные значения свойств сами по себе довольно понятны.

Сокращенная запись CSS

Я подробно расписал фоновые свойства, чтобы их было легче объяснить. Равнозначной будет и сокращенная запись:

body { background: url(background-photo.jpg) center center cover no-repeat fixed; }

  background: url(background-photo.jpg) center center cover no-repeat fixed;

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

Дополнительно: медиа-запрос для маленьких экранов

Для маленьких экранов я использовал программу Photoshop, чтобы пропорционально уменьшить исходное фоновое изображение до размера 768x505px, а также я воспользовался сервисом Smush.it для того, чтобы еще немного уменьшить размер. Благодаря этому размер файла уменьшился с 1741KB до 114KB. Т.е. размер изображения уменьшился на 93%.

Пожалуйста, не поймите меня неправильно, 114KB это все еще довольно много для чисто эстетического элемента дизайна.

Учитывая дополнительную нагрузку в 114KB, я бы стал использовать такой файл, только если бы увидел возможность значительно улучшить опыт взаимодействия пользователя с сайтом (UX), т.к.

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

Вот медиа-запрос:

@media only screen and (max-width: 767px) { body { /* Размер фонового изображения уменьшен на 93%, чтобы улучшить скорость загрузки страницы на устройствах, использующих мобильный Интернет */ background-image: url(images/background-photo-mobile-devices.jpg); } }

@media only screen and (max-width: 767px) {    /* Размер фонового изображения уменьшен на 93%, чтобы улучшить скорость загрузки страницы  на устройствах, использующих мобильный Интернет */    background-image: url(images/background-photo-mobile-devices.jpg);

У медиа-запроса установлено ограничение по ширине max-width: 767px, которое означает, что если окно просмотра браузера больше 767px, то будет загружаться большое фоновое изображение.

Недостаток использования данного медиа-запроса заключается в том, что если вы измените ширину окна вашего браузера, например, с 1200px до 640px (или наоборот), вы сразу же увидите момент загрузки маленького или большого фонового изображения.

Вдобавок к этому, из-за того, что некоторые устройства с маленьким экраном могут отображать большее количество пикселей – например, iPhone 5 c дисплеем retina способен отобразить разрешение 1136x640px – маленькое фоновое изображение будет пикселизовано.

Подводя итог

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

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

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

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

Jacob Gube

Источник: http://sixrevisions.com/

Редакция: Команда webformyself.

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Узнать подробнее

Источник: https://webformyself.com/adaptivnoe-celoe-fonovoe-izobrazhenie-s-pomoshhyu-css/

Как сделать картинку фоном в html: на весь экран в блокноте

Как растянуть фоновую картинку

  • Выбор картинки
  • Html
  • CSS
  • Для тех, кто хочет знать лучше

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

Я также расскажу о некоторых нюансах, которые позволят сделать фон наиболее ровным и красивым. Ну что ж, начнем?

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

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

К сожалению, растянуть изображение в html на весь экран невозможно. Фото используется в натуральную величину. Если картинка маленькая, то она замостит всю площадь, как на скриншоте внизу. Чтобы растянуть картинку придется создать дополнительный css документ, без этого не получится.

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

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

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

Html

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

Итак, вы можете работать в блокноте, я предпочитаю NotePad++. В нем работать гораздо удобнее: код дописывают за тебя, теги подсвечиваются. Программа бесплатная, и весит около 3 Мб. Очень рекомендую, особенно если вы новичок.

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

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

Background-image

Хотелось бы отметить для новичков, вот какой момент. Если вы берете изображение с pixabay, то ссылку вставлять нужно не на страницу с картинкой, а открыть рисунок в соседней вкладке.

Копируйте именно этот URL.

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

Далее откройте файл с помощью Google Chrome или любого другого браузера.

Готово, страница залита другим цветом.

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

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

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

Не согласны со мной? Могу предложить альтернативу. Книга Элизабет и Эрика Фримен «Изучаем HTML, XHTML и CSS». Не очень скучный бестселлер и выпустился не так давно, в 2016 году. Информация устареть еще не успела.

Очень просто
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: