Фоны

Подкаст CSS – 053: Предыстория

Фоны

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

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

Цвет фона

Browser Support

  • Хром: 1.
  • Край: 12.
  • Фаерфокс: 1.
  • Сафари: 1.

Source

Один из самых простых эффектов, которые можно применить к фоновому слою, — это установка цвета . Начальное значение background-colortransparent , что позволяет видеть содержимое родительского элемента. Допустимый набор цветов фонового слоя находится позади других объектов, нарисованных на этом элементе.

Фоновые изображения

Browser Support

  • Хром: 1.
  • Край: 12.
  • Фаерфокс: 1.
  • Сафари: 1.

Source

Поверх слоя background-color вы можете добавить фоновое изображение, используя свойство background-image . background-image принимает следующее:

  • URL-адрес изображения или URI данных с использованием функции CSS url .
  • Изображение, динамически созданное с помощью функции градиента CSS.

Установка фонового изображения с помощью функции URL- url CSS

CSS-градиентные фоны

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

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

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

Повторяющиеся фоновые изображения

Browser Support

  • Хром: 1.
  • Край: 12.
  • Фаерфокс: 1.
  • Сафари: 1.

Source

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

Измените это, используя свойство background-repeat с одним из следующих значений:

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

Свойство background-repeat позволяет вам независимо устанавливать поведение для осей x и y. Первый параметр задает поведение горизонтального повтора, а второй параметр задает поведение вертикального повтора.

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

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

Значение repeat-x повторяет изображение только по горизонтали; это эквивалентно repeat no-repeat .

Следующая демонстрация демонстрирует эти возможности свойства background-repeat :

Фоновое положение

Browser Support

  • Хром: 1.
  • Край: 12.
  • Фаерфокс: 1.
  • Сафари: 1.

Source

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

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

Как и в случае с background-repeat , свойство background-position позволяет независимо позиционировать изображения вдоль осей x и y с двумя значениями по умолчанию.

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

Когда используются только ключевые слова, порядок ключевых слов не имеет значения:

Делать
background-position: left 50%;
Делать
background-position: top left;
Делать
background-position: left top;
Порядок не имеет значения для ключевых слов, связанных с разными осями положения.

Не
  background-position: 50% left;
Когда значения CSS используются вместе с ключевыми словами, порядок имеет значение. Первое значение представляет горизонтальную ось, а второе — вертикальную ось.

Не
  background-position: left right;
Вы не можете одновременно использовать ключевые слова, связанные с одной и той же осью.

Свойство background-position также имеет удобное сокращение с одним значением; пропущенное значение разрешается до 50% . Вот пример, демонстрирующий это с использованием ключевых слов, которые принимает свойство background-position :

В дополнение к форме по умолчанию с двумя параметрами и форме с одним параметром; свойство background-position также принимает до четырех параметров;

Если используются три или четыре параметра, длине или проценту CSS должны предшествовать ключевые слова top , left , right или bottom , чтобы браузер мог рассчитать, от какого края поля CSS должно исходить смещение.

Если используются три параметра, длина или значение CSS может быть вторым или третьим параметром, а два других — ключевыми словами; успешное ключевое слово будет использоваться для определения края, смещению которого соответствует длина или значение CSS. Смещение другого указанного ключевого слова установлено равным 0.

Делать
background-position: bottom 88% right;
Делать
background-position: right bottom 88%;
Не
background-position: 88% bottom right;
При использовании трех или более параметров значению длины CSS должны предшествовать ключевые слова top , right , bottom или left .
Делать
background-position: bottom 88% right 33%;
Делать
background-position: right 33% bottom 88%;
Не
background-position: 88% 33% bottom left;
При использовании трех или более параметров значению длины CSS должны предшествовать ключевые слова top , right , bottom или left .

Если background-position: top left 20% применяется к фоновому изображению CSS, изображение размещается в верхней части поля, значение 20% представляет собой смещение 20% от левой части поля (по оси X).

Если background-position: top 20% left применяется к фоновому изображению CSS, значение 20% представляет собой смещение 20% от верхней части поля CSS (по оси Y), а изображение размещается слева от коробка.

Когда используются четыре параметра, два ключевых слова соединяются с двумя значениями, соответствующими смещению относительно происхождения каждого указанного ключевого слова. Если к фоновому изображению применяется background-position: bottom 20% right 30% , фоновое изображение располагается на 20 % снизу и на 30 % справа от поля CSS.

Следующая демонстрация демонстрирует такое поведение:

Вот еще примеры использования свойства background-position с использованием сочетания CSS и значений ключевых слов:

Размер фона

Browser Support

  • Хром: 3.
  • Край: 12.
  • Фаерфокс: 4.
  • Сафари: 5.

Source

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

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

Свойство background-size принимает следующие ключевые слова:

  • auto : при независимом использовании размер фонового изображения определяется его внутренней шириной и высотой; Когда auto используется вместе с другим значением CSS для ширины (первый параметр) или высоты (второй параметр), размер, для которого установлено значение auto , изменяется по мере необходимости для поддержания естественного соотношения сторон изображения. Это поведение свойства background-size по умолчанию.
  • cover : покрывает всю область фонового слоя. Это может означать, что изображение растянуто или обрезано.
  • contain : изменяет размер изображения так, чтобы оно заполнило пространство без растягивания или обрезки. В результате может остаться пустое пространство, что приведет к повторению изображения, если только для background-repeat не установлено значение no-repeat .

Последние 2 предназначены для автономного использования без другого параметра.

Следующая демонстрация демонстрирует эти ключевые слова в действии:

Демо, демонстрирующее применение этих ключевых слов к background-size :

Фоновое вложение

Browser Support

  • Хром: 1.
  • Край: 12.
  • Фаерфокс: 1.
  • Сафари: 1.

Source

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

Он принимает 3 ключевых слова: scroll , fixed и local .

Поведением по умолчанию свойства background-attachment является начальное значение scroll . Когда требуется больше места, изображения перемещаются вместе с этим пространством внутри фонового слоя, определяемого границами поля CSS.

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

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

Ключевое слово local позволяет зафиксировать положение фоновых изображений относительно содержимого элемента. Фоновые изображения теперь перемещаются по пространству, которое они занимают, по мере того, как это пространство визуализируется внутри и за пределами границ CSS-блока (обычно из-за прокрутки, 2D- или 3D-преобразований).

Фоновое происхождение

Browser Support

  • Хром: 1.
  • Край: 12.
  • Фаерфокс: 4.
  • Сафари: 3.

Source

Свойство background-origin позволяет вам изменять область фона, связанную с конкретным блоком. Значения, которые принимает свойство, соответствуют областям border-box , padding-box и content-box блока.

Попробуйте эти варианты, используя следующую демонстрацию:

Фоновый клип

Browser Support

  • Хром: 1.
  • Край: 12.
  • Фаерфокс: 4.
  • Сафари: 5.

Source

Свойство background-clip управляет тем, что визуально видно из фонового слоя, независимо от границ, созданных свойством background-origin .

Как и в случае background-origin можно указать следующие области: border-box , padding-box и content-box соответствующие тому, где может отображаться фоновый слой CSS. При использовании этих ключевых слов любая визуализация фона за пределами указанной области будет обрезана или обрезана.

Свойство background-clip также принимает text ключевое слово, которое обрезает фон так, чтобы он не превышал текста в поле содержимого. Чтобы этот эффект был заметен в реальном тексте внутри поля CSS, текст должен быть частично или полностью прозрачным.

Это относительно новое свойство. На момент написания этой статьи Chrome и большинству браузеров для использования этого свойства требуется префикс -webkit- .

Browser Support

  • Хром: 1.
  • Край: 12.
  • Фаерфокс: 4.
  • Сафари: 5.

Source

Несколько фонов

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

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

Единственный определенный фон или последний слой назначается браузером последним фоновым слоем . Только этому слою разрешено назначать background-color .

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

background-image: url("https://assets.codepen.io/7518/pngaaa.com-1272986.png"),
    url("https://assets.codepen.io/7518/blob.svg"),
    linear-gradient(hsl(191deg, 40%, 86%), hsla(191deg, 96%, 96%, 0.5));
  background-size: contain, cover, auto;
  background-repeat: no-repeat, no-repeat, no-repeat;
  background-position: 50% 50%, 10% 50%, 0% 0%;
  background-origin: padding-box, border-box, content-box;

Сокращение фона

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

background:
  <background-image>
  <background-position> / <background-size>?
  <background-repeat>
  <background-attachment>
  <background-origin>
  <background-clip>
  <background-color>?

Порядок важен в сокращенной форме объявления нескольких фонов. Значения положения и размера должны быть указаны через косую черту ( / ). Объявление исходного кода и поведения клипа в правильном порядке позволяет вам использовать преимущества установки ключевых слов, которые действительны для обоих одновременно.

Следующее объявление обрезает фон и создает его из поля содержимого:

background: url("https://assets.codepen.io/7518/blob.svg") 50%
      50% / contain no-repeat content-box;

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

background: url("https://assets.codepen.io/7518/pngaaa.com-1272986.png") 50% 50%/contain no-repeat padding-box, url("https://assets.codepen.io/7518/blob.svg") 10% 50% / cover border-box, linear-gradient(hsl(191deg, 40%, 86%), hsla(191deg, 96%, 96%, 0.5) ) 0% 0% / cover no-repeat content-box ;

Проверьте свое понимание

Проверьте свои знания о CSS-фонах

Фоновые изображения располагаются в верхнем левом углу блока CSS.

Истинный
Правильный!
ЛОЖЬ
В зависимости от внутреннего размера изображения может показаться, что он не находится в верхнем левом углу блока CSS, необходимо явно использовать background-position для изменения положения фонового изображения по умолчанию.

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

ЛОЖЬ
background-repeat: no-repeat , чтобы не повторять фоновое изображение. Кроме того, для предотвращения повторения по определенной оси можно использовать background-repeat: repeat-x и background-repeat: repeat-y .
Истинный
Фоновые изображения повторяются по умолчанию.

Какие из следующих объявлений background-position действительны?

background-position: 50% left
Когда значения CSS используются с ключевыми словами, порядок значений имеет значение.
background-position: top right 33%
Это расположит фоновое изображение в самом верху окна и на 33% от правого края поля.
background-position: right bottom
Это расположит фоновое изображение в самом правом и нижнем углу окна. Положения различных осей можно называть в любом порядке.
background-position: left
Это расположит фоновое изображение в самом левом углу поля и по центру по вертикали. Если указана только одна позиция оси, фоновое изображение центрируется по противоположной оси.

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

background-position: fixed
«Это недопустимое значение для свойства background-position ».
background-fixed-to-viewport: true
background-fixed-to-viewport пока не существует в CSS.
background-attachment: fixed
background-attachment: fixed явно устанавливает фиксированное фоновое изображение в текущем окне просмотра.
background-attachment: scroll
' background-attachment — это свойство, используемое для установки фонового изображения, которое будет зафиксировано в области просмотра; однако scroll является значением по умолчанию для свойства, которое по умолчанию фиксирует фоновое изображение в поле, на которое не влияет содержимое внутри поля».

Фоновое происхождение фона в блоке CSS по умолчанию:

content-box
Допустимое значение для background-origin , но не значение по умолчанию.
border-box
Допустимое значение для background-origin , и его заранее заданные границы можно рисовать поверх фона, но это не значение по умолчанию.
padding-box
Значение по умолчанию для background-origin . Позволяет отображать фон за пределами содержимого и до границы поля.
margin-box
Хотя это распознаваемая область блока CSS, это недопустимое значение для свойства background-origin .