Для увеличения размера SVG логотипа мы снова используем свойство background-size
, но на этот раз устанавливаем точный размер:
background-size: 150 px;
При задании только одного значения вместо двух мы сохраняем соотношение сторон, при этом изображение расширяется до 150 пикселей по ширине. Но оно все еще «приклеено» к низу. В прежние времена мы бы просто пожали плечами и отредактировали изображение так, чтобы в нем был промежуток. Сегодня с CSS3 у нас есть немного больше контроля при размещении изображения. Если проанализировать примеры выше более детально, мы столкнемся с проблемой – изображение находится внизу справа от области полей, но нам хотелось бы, чтобы оно располагалось внизу справа от текста. CSS3 дает нам новое свойство background-origin, которое контролирует позиционирование изображения относительно края элемента с учетом толщины рамки, относительно рамки, либо содержимого элемента.
В этом случае надо поместить изображение в правом нижнем углу содержимого элемента, а не края, как задано по умолчанию. Эта строка CSS сделает что нужно:
background-origin: content-box;
Добавление розовой строчки
Это было бы просто, если бы розовая пунктирная рамка располагалась с краю контейнера. Такой кусок CSS мог бы сделать это:
border: 1px dashed #f06;
Но как мы переместим эту рамку внутрь контейнера? Не получается. Вместо этого мы сужаем контейнер, а потом добавляем дополнительный цвет за пределами рамки с помощью свойства outline:
border: 1px dashed #f06;
outline: 20px solid rgba(0,0,0,8);
Другой способ – использовать свойство outline со значением outline-offset
в -20px
(здесь мы не применяем эту технику). Вот полный сниппет:
html {
min-height:100 %;
background: url (‘rainbow-wood.jpg’);
background-size: cover;
}
section {
max-width: 20em;
padding: 3em;
margin: 4em auto;
border: 1px dashed #f06;
outline: 20px solid rgba(0,0,0,8);
background: url(logo.svg) no-repeat bottom right;
background-color: black;
background-color: rgba(0,0,0,8);
background-origin: content-box;
background-size: 150px;
color: white;
font: 100 %/1.5 sans-serif;
text-shadow: 0 – .1em .2em black;
}
h1 {
margin-top: 0;
}
Давайте рассмотрим простой вариант предыдущего стиля, как показано ниже [49].
Рисунок 4.11. Полупрозрачная рамка с обрезанием фона
Для получения такого результата вы, вероятно, попробуете что-то подобное:
html {
min-height: 100 %;
background: url(‘rainbow-wood.jpg’) top;
background-size: cover;
}
section {
max-width: 20em;
padding: 3em;
margin: 4em auto;
border: 20px solid rgba(0,0,0,5);
background-color: black;
color: white;
font: 100 %/1.5 sans-serif;
text-shadow: 0 – .1em .2em black; }
h1 {
margin-top: 0;
}
Рисунок 4.12. На самом деле наша граница не полупрозрачная. Почему?
Но когда вы попробуете, то увидите, что граница по факту не полупрозрачная. Почему так произошло? Причина в том, что по умолчанию фон также растягивается по границе. Вспомните все те разы, когда вы применяли стили рамки с пробелами (т. е. точечные, пунктирные и удвоенные) в дни существования CSS2.1? Это то же самое, но только сейчас у нас есть средства контроля поведения, а именно свойство background-clip. Его значение по умолчанию – border-box, результат которого аналогичен предыдущему опыту. Но мы должны изменить его на padding-box:
background-clip: padding-box;
Это заставит фон обрезаться точно там, где нам надо.
Как насчет этого стиля [50]? Как вы справитесь с зигзагообразной рамкой? Наверное, вы начнете применять установленную ширину и высоту, и огромных размеров фоновое изображение со значением no-repeat. Если средство отображения установило размер шрифта больше, чем по умолчанию в браузере, или у него нет шрифта, близкого к тому, что вы собираетесь задать, текст растечется над установленным фоновым изображением.
Рисунок 4.13. Пример рамки
Рисунок 4.14. Изображение cloth.svg, с которым мы и будем работать
Читать дальше
Конец ознакомительного отрывка
Купить книгу