На этой странице:
![]() |
|
Свойство color
задаёт цвет текста элемента и цвет его рамки
(если цвет рамки отдельно не задан).
Это свойство передаётся по наследству потомкам.
Файл style.css
P { color: blue; border: 4px solid; padding:1em; } ![]() |
Файл index.htm
|
Фон элемента распространяется на содержание элемента, на внутренние отступы и рамку. CSS позволяет задавать для фона чистый цвет или создавать сложные эффекты при помощи фоновых изображений. Фон, в отличие от цвета элемента, не наследуется.
![]() |
|
Файл style.css
.warning { background-color:#ffc; border: 2px dotted red; padding:1em; margin: 1em 2em; } ![]() |
Файл index.htm
|
Файл style.css
H1 { color:white; background-color:rgb(20%,20%,20%); padding:0.2em; } ![]() |
Файл index.htm
|
Фон элемента не обязательно должен быть одноцветным. Он может быть таким, как под этим текстом. Как происходит замащивание фона показано на рисунке ниже.
|
Для фона, показанного слева, использована картинка — фоновая плиточка:
|
|
Сначала плиточка выводится в своё начальное (базовое) положение — верхний левый угол фона элемента (точнее: в левый верхний угол внутреннего отступа элемента). Затем она начинает повторяться, замащивая весь фон элемента. На рисунке плиточка показана с рамкой для наглядности. |
Несмотря на то, что начальным положением картинки по стандарту является верхний левый угол внутреннего отступа, паркетная укладка распространяется и на рамку, так как фон замащивается во всех четырёх направлениях.
Для “укладки паркета” на фон элемента можно воспользоваться
свойством background-image
.
![]() |
|
Значение none
приводит к тому, что и можно ожидать:
изображение на фоне отсутствует.
Файл style.css
BODY { color:white; background-color:rgb(20%,20%,20%); background-image:url(pic/fon1.jpg); } ![]()
Фоновая плиточка
|
Файл index.htm
|
Заметим, что в примере, наряду с фоновой картинкой, задан и цвет фона. Так поступать рекомендуется всегда.
Представьте, что картинка, по какой либо причине, не дошла по сети до браузера, или пользователь отключил показ картинок. Вот что тогда он увидит на экране, если цвет фона не задан:
А если цвет фона задан, совсем другое дело:
По умолчанию фоновая картинка укладывается паркетом из начального
положения и по горизонтали, и по вертикали. Этот алгоритм можно изменить,
если воспользоваться свойством background-repeat
.
![]()
|
Значение |
Рассмотрим в качестве примера, как задаётся вертикальная полоска, играющая роль страничного поля (как на странице этого учебника).
Файл style.css
BODY { color:black; background-color:white; background-image:url(pic/fon.png); background-repeat:repeat-y; margin-left:0; padding-left:100px; } ![]()
Фоновая плиточка
Реальная высота фоновой картинки — 1 пиксел. Здесь она показана более высокой для наглядности. |
Файл index.htm
|
Было уже сказано, что укладка фонового паркета происходит из начального положения картинки, которое по умолчанию совпадает с верхним левым углом внутреннего отступа элемента.
Начальное положение фоновой картинки можно изменить
при помощи свойства background-position
.
|
|
Свойство background-position
задаёт координаты начального
(базового) положения фоновой картинки, то есть того положения, из
которого начинает укладываться фоновый паркет
(по горизонтали, вертикали или во всех направлениях, в зависимости
от значения свойства background-repeat
).
В качестве значений допускаются: ключевые слова, проценты, единицы размера и смесь.
![]() |
Ключевые слова обычно используется в паре, например,
Ключевое слово |
Допускается использование одного значения (по горизонтали или по
вертикали), при этом значение второго автоматически полагается равным
center
:
Одно ключевое слово | Эквивалентные ключевые слова |
---|---|
center |
center center |
top |
center top |
bottom |
center bottom |
left |
left center |
right |
right center |
![]() |
Первое процентное значение задаёт смещение от левого верхнего угла по горизонтали, второе — по вертикали. |
Картинка размещается так, что её точка, расположенная в указанном процентном отношении относительно картинки, совпадает с точкой на элементе, расположенной в том же процентном отношении относительно элемента.
![]() |
Таким образом, указание |
Если задано одно процентное значение, то оно используется как значение по горизонтали, а значение по вертикали автоматически полагается равным 50%.
![]() |
Если начальное положение картинки задано в единицах размера, то они интерпретируются как расстояния от левого верхнего угла элемента до левого верхнего угла картинки. |
Если задано одно значение, то оно используется как значение по
горизонтали, а значение по вертикали автоматически полагается равным
50%
(или, что то же самое — center
).
![]() |
Допускается задавать отрицательные значения. Таким образом, можно показывать только часть фонового рисунка. |
![]() |
Допускается задавать отрицательные значения и для процентов, но надо помнить, что при этом совмещаются две точки, одна, связанная с рисунком, другая связанная с элементом (с одними и теми же процентными значениями, но по отношению к рисунку и элементу). |
Допускается комбинировать разные способы позиционирования, при этом первое значение должно указываться для горизонтали, второе — для вертикали.
![]() |
Например, можно расположить фоновую картинку так, чтобы она находилось в правой части элемента на 10 пикселов ниже его верхнего края. |
В качестве примера рассмотрим оформление замечания на страницах этой книги.
Картинка, которую вы видите в шапке замечания, построена как
фоновое изображение, в HTML-коде ей не соответствует
элемент IMG
.
Файл style.css
BODY { color:black; background-color:white; } /* Оформление замечания */ .note { border-left:1px dotted gray; padding-top:90px; padding-left: 1em; background-image:url(pic/note.gif); background-repeat:no-repeat; background-position:1em top; color:#666; font-size:0.9em; } ![]() Высота картинки — 82 пиксела, она помещается в верхний внутренний отступ размеров в 90 пикселов. |
Файл index.htm
|
Начальные координаты фоновой картинки браузер считает по умолчанию заданными относительно элемента, для которого описан фон (начало координат — левый верхний угол внутреннего отступа элемента).
При помощи свойства background-attachment
можно
перенести начало координат в левый верхний угол области просмотра
окна браузера, если задать значение fixed
.
![]()
|
|
При значении fixed
фон не прокручивается
вместе с содержимым. Если картинка задана без повторений (или с
повторением по одной оси), она становится видимой, если только не
лежит за пределами рамки элемента.
Файл style.css
BODY
{
color:black;
background-color:white;
background-image:url(pic/spider.png);
background-repeat:no-repeat;
background-attachment:scroll;
}
H1 {margin-left:120px;}
![]()
Фон задан для |
Файл index.htm
|
Файл style.css
BODY
{
color:black;
background-color:white;
background-image:url(pic/spider.png);
background-repeat:no-repeat;
background-attachment:fixed;
}
H1 {margin-left:120px;}
![]()
Фон задан для |
Файл index.htm
|
Браузер IE вплоть до версии IE6 неправильно обрабатывает
фиксированный фон в отличных от BODY
элементах — фон позиционируется не относительно окна,
а относительно элемента. Проверьте это, запустив следующий пример
в разных браузерах.
Файл style.css
BODY
{
color:black;
background-color:white;
}
P.first
{
background-image:url(pic/spider.png);
background-repeat:no-repeat;
background-attachment:fixed;
}
![]()
Фон задан для первого абзаца со значением |
Файл index.htm
|
Все свойства фона можно свести в одну интегрированную запись при
помощи свойства background
.
Свойство Порядок, в котором идут параметры, не важен, кроме значения координат (<position>): они должны стоять рядом, и если применяются значения размера или проценты, первым должно идти значение по горизонтали. |
|
Как и во всех интегрированных свойствах, если опустить одно из значений, вместо него автоматически подставляется значение по умолчанию. Таким образом, следующие два правила эквивалентны:
background: white url(pic/fon.gif); background: white url(pic/fon.gif) left top repeat scroll;
Свойство background
не имеет обязательных параметров,
достаточно присутствия только одного. Например, следующие два
правила почти эквивалентны:
background-color: white; background: white;
Почему почти? Не надо забывать, что интегрированное свойство
background
устанавливает все параметры для фона,
включая и те, которые в нём опущены (их значения устанавливаются по
умолчанию).
Пусть, например, для элементов H1
и H2
установлен фон с картинкой без укладки в паркет с выравниванием по
центру элемента:
H1, H2 { background: gray url(pic/fon.gif) center no-repeat; }
Допустим, для H2
нужно сменить цвет фона,
сохраняя все другие параметры. Определение
H2 { background: silver; }
расположенное следом за первым, приведёт к тому, что у элементов
H2
будет сплошной серебряный фон без
фоновой картинки. Правильным решением будет такой набор определений:
H1, H2 { background: gray url(pic/fon.gif) center no-repeat; } H2 { background-color: silver; }
Предложим в качестве примера ещё один способ оформления замечания.
![]() Изобразим макет в виде следующей схемы: |
Вот такой объект мы хотим построить. Замечание имеет отступы слева и справа, светло-зелёный фон, прерывистую рамку. В блоке выделен заголовок: текст записан вывороткой поверх фона с градиентной растяжкой цвета, слева расположен рисунок — своеобразный маркер замечания. |
![]()
Представим объект в виде блока |
Макету на иллюстрации слева соответствует следующий HTML: |
Картинки, которые будем использовать для заголовка замечания:
style.css
/* Блок замечания */ .note { margin: 1em 2em; /* Внешние отступы блока-замечания */ border: 1px dotted gray; /* Рамка */ /* Фон с градиентной растяжкой цвета */ background:#f4fbf4 left top url(pic/hfon.png) no-repeat; } /* Заголовок внутри блока замечания */ .note .header { height:50px; /* Высота блока-заголовка */ color:white; /* Цвет текста заголовка */ font-size:40px; /* Фиксированный размер шрифта */ font-weight:bold; /* Жирное начертание */ /* Маркер */ background:5px 5px url(pic/marker.png) no-repeat; padding-left:60px; /* Отступ текста от маркера */ border-bottom: 1px dotted gray; /* Рамка снизу */ } /* Содержательная часть замечания */ .note .content { /* Отступы содержания */ padding:0 10px 10px; }
В данном конкретном случае можно было обойтись только одной фоновой картинкой:
Но посмотрите, размер интегрированной картинки в байтах более чем в 3 раза превышает сумму размеров отдельных иллюстраций.
Кроме того, часто совмещение невозможно: одна фоновая картинка может укладываться паркетом, вторая выводится без повторений.
Для элемента BODY
предусмотрен атрибут
background
, который позволяет задать фоновую картинку
для гипертекстовой страницы документа.
Атрибут background
позволяет задать картинку лишь для
сплошного (во всех направлениях) фонового паркета, и не имеет
возможностей одноимённого стилевого свойства.
Кроме того, атрибут background
можно записывать только для
элемента BODY
, в то время как стилевое свойство
background
можно назначать любому элементу на странице.
Рассмотрим вопросы дизайна, связанные с использованием картинки для фона.
Чтобы фоновый “паркет” смотрелся красиво, необходима визуальная стыковка плиточек между собой. Это надо учитывать при создании фоновой иллюстрации.
Плохая стыковка плиточек.
Очень плохая стыковка плиточек.
Хорошая стыковка простых плиточек.
Хорошая стыковка сложных плиточек.
С фоновыми картинками нужно обращаться очень осторожно. Если нет уверенности, что паркет улучшает восприятие документа, лучше использовать одноцветную заливку: на гладком фоне текст всегда читается лучше.
На шершавом фоне текст всегда читается хуже, чем на гладком:
Когда фоновая картинка кажется необходимой, текст надо выводить в гладкие области:
Цвета текста и фона могут быть заданы на странице CSS-свойствами
color
и background
. Кроме того,
они могут задаваться атрибутами
text
и bgcolor
в теге
<BODY>
(CSS-свойства главнее).
Если цвета не описаны, браузер будет использовать их значения по умолчанию (разные в разных браузерах).
Нужно обязательно задавать цвета явно, чтобы не потерять контроль над важными визуальными параметрами страницы.
Кроме того, задавать фоновый цвет нужно и в том случае, когда используется фоновая картинка.
Для этой рекомендации есть две причины:
“Удар” по глазам пользователя:
Плавный переход от гладкого фона к фактурному:
А если фоновая картинка, цвет фона и цвет текста задаются при помощи стилевых свойств?
BODY { background:#fbeee7 repeat-y url(pic/fon.gif); color:black; }
Может быть в этом случае не нужно записывать соответствующие атрибуты
для тега BODY
?
Рекомендуется и в этом случае не игнорировать эти важные атрибуты. На всякий случай. Для браузеров, которые не поддерживают CSS.