Раньше мы, скорее всего, пожали бы плечами и добавили несколько оборачивающих элементов div
. Или же отказались бы от гибкости и объединили несколько изображений. Но сегодня мы можем урвать свой кусочек пирога. Познакомьтесь с множественными фоновыми изображениями:
html {
background: url(“moon.png”) no-repeat 100 % 1em,
url(“stars.png”) repeat-x 0 0,
url(“city.png”) repeat-x bottom,
linear-gradient(black, #444);
background-color: #222;
min-height: 100 %;
}
Вы, наверно, заметили, что последний фоновый рисунок не является внешним файлом. В самом деле, теперь мы можем создавать градиенты прямо в CSS. Градиент, использованный выше, – это простой вертикальный градиент с двумя цветами. Но вы можете делать более сложные вещи с градиентами CSS: заливать разнообразные цвета в разные позиции или под разными углами, или даже создавать радиальные градиенты. А еще – все виды геометрических паттернов с несколькими CSS градиентами.
Однако текущая поддержка для CSS градиентов еще не такая хорошая, как для множественных фонов. Способ, которым мы написали код выше, даже несмотря на то что мы задали фоновый цвет на случай, когда множественные фоны не поддерживаются, мы задаем для случая, когда не поддерживаются даже градиенты. Лучше было бы иметь две альтернативы:
html {
background: url(“moon.png”) no-repeat 100 % 1em,
url(“stars.png”) repeat-x 0 0,
url(“city.png”) repeat-x bottom;
background: url(“moon.png”) no-repeat 100 % 1em,
url(“stars.png”) repeat-x 0 0,
url(“city.png”) repeat-x bottom,
linear-gradient(black, #444);
background-color: #222;
min-height: 100 %;
}
Правда, есть небольшой повтор? И дело еще хуже с браузерными префиксами. Но у нас ведь есть элемент body
, так что мы можем извлечь из этого пользу и применить градиент к другому элементу:
html {
background: #222;
background: linear-gradient(black, #444);
height: 100 %;
}
body {
margin: 0;
background: url(“stars.png”) repeat-x 0 0;
background: url(“moon.png”) no-repeat 100 % 1em,
url(“stars.png”) repeat-x 0 0,
url(“city.png”) repeat-x bottom;
min-height: 100 %;
}
Намного лучше, и дает отдачу от возможностей каждого браузера.
Свойства BACKGROUND-ORIGIN, BACKGROUND-SIZE, OUTLINE
Рисунок 4.9. Дизайн, который мы будем воспроизводить на CSS3
Допустим, нам поручено создать дизайн, отображаемый справа, с использованием CSS [48]. И опять мы уверены, что вы могли бы быстро сделать базовую разметку и, возможно, интегрировать несколько основ, которые вы знаете о системе цветопередачи RGBA и текстовых теней:
html {
min-height:100 %;
background: url(‘rainbow-wood.jpg’);
}
section {
max-width: 25em;
padding: 3em;
margin: 4em auto;
background: black url(logo.svg) no-repeat bottom right;
color: white;
font: bold 100 %/1.5 sans-serif;
text-shadow: 0 – .1em .2em black;
}
h1 {
margin-top: 0;
}
Результат близок к тому, которого мы добивались. Но есть проблемы:
• Фоновое изображение элемента html – гигантское. Это хорошо для огромных экранов, но, как правило, мы хотим подогнать размер под экраны поменьше.
• Розовый логотип слишком мал и прилеплен к правому нижнему углу без отступа от края.
• Нет розовой «строчки».
Разберем эти вопросы по порядку.
Рисунок 4.10. Результат после применения наших знаний о CSS2.1
Изменяем размер фонового рисунка по ширине
CSS3 дает нам новое свойство для контроля размера фонового изображения: background-size
. Это позволяет нам использовать одно и то же изображение в разных размерах. Мы можем либо установить точно определенный размер, либо применить один из двух ключевых слов для задания размера: contain
и cover
.
• cover
изображение будет подстраиваться под полное содержание элемента. Это то, что нам нужно использовать для квадратных превью в стиле Flickr, где каждое изображение обрезается, как квадрат;
• contain
изображение будет настраиваться на подгонку элемента, но без обрезания.
В нашем случае мы не сможем применить background-size: contain, потому что мы не хотим, чтобы просвечивался фоновый цвет. Вместо этого нам надо, чтобы наше изображение уменьшалось или расширялось для заполнения всего окна экрана.
Читать дальше
Конец ознакомительного отрывка
Купить книгу