Рамки и фоны

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

Размер фона, шаг 1[2/33]

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

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

Пример:

background-size: auto auto;   /* исходные ширина и высота изображения */
background-size: 100px;       /* ширина 100px, высота пропорциональная */
background-size: 100px 200px; /* ширина 100px, высота 200px */

Давайте проверим, как работает это свойство на практике.

Размер фона, шаг 2[3/33]

Ещё два значения свойстваbackground-size— этоcontainиcover.

Значениеcontainработает так:

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

Значениеcoverработает иначе:

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

Опробуем эти значения на практике.

Границы фона[4/33]

Ещё одно фоновое свойство —background-origin. Оно задаёт расположение и размеры области отображения фонового изображения и принимает три значения:padding-box,border-boxиcontent-box.

Значение по умолчанию —padding-box. При этом значении область отображения фонового изображения соответствует внутренней области блока, не включая рамки.

Приcontent-boxобласть отображения соответствует только области содержимого, не включая рамки и внутренние отступы.

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

Обрезка фона[5/33]

Свойствоbackground-clipуправляет тем, как обрезается фон. Причём обрезаются не только фоновые изображения, но и фоновый цвет.

Значения свойства такие же, как уbackground-origin:padding-box,border-boxиcontent-box.

Значениеborder-boxзадано по умолчанию, при этом фоновое изображение совсем не обрезается.

Значениеpadding-boxобрежет фон по внутреннему краю области рамки.

Значениеcontent-boxобрежет фон по краю области содержимого.

Множественный фон[6/33]

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

background-image: url("image-1.png"), url("image-2.png");

При этом выше будет то изображение, которое находится раньше в списке:image-1.pngв примере будет вышеimage-2.png.

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

/* для первой картинки масштабирование contain, для второй — 100px */
background-size: contain, 100px;

/* для первой картинки позиционирование top, для второй — 100% */
background-position: top, 100%;

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

Позиция фона от разных сторон[7/33]

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

Чтобы указать от какой стороны отсчитывать расположение фона, нужно перед значением координат задать ключевые слова:top,right,bottomилиleft. Например:

/* по умолчанию координаты задаются для левого верхнего угла */
background-position: 10px 50px; /* слева 10px, сверху 50px */

background-position: right 30px bottom 60px; /* справа 30px, снизу 60px */
background-position: left 50px bottom 10px; /* слева 50px, снизу 10px */
background-position: right 40px top 30px; /* справа 40px, сверху 30px */

Поддержка данных значений свойстваbackground-positionв современных браузерахпрактически полная.

Давайте добавим мсьё Кексу модные монокль и усы, а расположим эту картинку от нижнего правого угла.

Повторение фона: background-repeat: round[8/33]

Два интересных, но малоизвестных значения привычного свойстваbackground-repeat, которое задаёт повторение фона, — этоroundиspace.

Значение свойства по умолчаниюbackground-repeat: repeatпросто повторяет фоновую картинку по всей ширине и высоте блока. Если части повторяющейся картинки не помещаются в ширину блока, то они просто обрезаются.

Если задать значениеbackground-repeat: round, то повторяющиеся картинки по краям блока обрезаться не будут, а равномерно растянутся или сожмутся по всей ширине, чтобы занять оставшееся пространство.

Кстати,background-repeatпринимает в качестве значения два аргумента: режим повторения по горизонтали и по вертикали. Если передать один параметр, то он применится к обоим направлениям. Например:

/* повторение фона repeat по горизонтали и вертикали */
background-repeat: repeat;

/* повторение фона round по горизонтали и repeat по вертикали */
background-repeat: round repeat;

Давайте опробуем режим повторенияroundна практике.

Повторение фона: background-repeat: space[9/33]

Режим повторения фонаbackground-repeat: spaceпохож наround, при нём части картинки тоже не обрезаются. Отличие в том, что повторяющиеся фоновые картинки не сжимаются или растягиваются, а для компенсации ширины блока между ними добавляется пустое пространство.

Попробуем, как работает это свойство.

results matching ""

    No results matching ""