Нові варіанти повторення фонового зображення в CSS3
У CSS 2.1 властивість background-repeat має чотири значення: no-repeat, repeat, repeat-x і repeat-y. Хоча вони корисні, вони не дають повного контролю над процесом повторення, і картинки можуть бути обрізані, якщо вони не поміщаються в контейнер точно певну кількість разів.
CSS3 вводить два нові варіанти: space і round.
background-repeat: space
Варіант space буде повторювати зображення по горизонталі і вертикалі без обрізання або зміни розміру:
background-repeat: space;background-repeat: round
Варіант round буде повторювати зображення по горизонталі і вертикалі без обрізання, але зображення може бути змінене:
background-repeat: round;Предположимо, що у нас є фонове зображення шириною 100px. Воно розміщене в елементі шириною 520px по горизонталі, тоді:
round(520 / 100) = round(5.2) = 5
Браузер покаже п'ять зображень, але задасть ширину зображення як 104px (520px/5). Зображення буде зроблене ширшим, щоб вписатися в контейнер.
Різні повторення за шириною і висотою
background-repeat може містити два значення для зміни горизонтального і вертикального повторення:
background-repeat: round space; /* ширина змінюється, висота ні */
background-repeat: space round; /* ширина залишається, висота змінюється */
background-repeat: space no-repeat; /* повторювати лише по горизонталі */Зміна позиції фону
Повторення через space або round працюватиме, як ви очікуєте, лише коли background-position задано як 0 0. Ви можете вільно змінювати його, розміри зображень і відстань між ними залишаться тими ж, але зліва зверху кут зміниться відповідно.
Робота в браузерах
Два браузери підтримують властивості з round і space. Вгадайте, які? Помиляєтеся: це IE9 і Opera. На момент написання статті, ці значення не реалізовані в Firefox, Chrome або Safari. Але все погано.
- Коли Firefox стикається з round або space, він замінює значення на repeat.
- Коли Chrome або Safari стикаються з round або space, вони замінюють їх на no-repeat. Крім того, браузери на Webkit, здається, розуміють властивості, але не відображають їх правильно.
Чудово. Дякую, хлопці.
Єдиний спосіб досягти якоїсь єдності - це змусити Firefox відображати як Webkit.
#element {
background-repeat: no-repeat;
background-repeat: space;
}Отже.
- IE9 і Опера правильно повторюватимуть зображення по горизонталі і вертикалі без обрізання або масштабування зображення.
- Firefox не розуміє space, підставляє замість нього значення no-repeat і показує лише одне зображення.
- Chrome і Safari розуміють space, але помилково показують лише одне зображення без повторення.
Неприємно. Буде краще зачекати кілька місяців, поки Mozilla і Webkit включать повну підтримку background-repeat.