Практика разработки Web-страниц

Приложение B. Cведения о CSS

Показывать лекцию целиком

Поддержка каскадированных таблиц стилей (CSS) в Internet Explorer 3 и Netscape 4 стала важным шагом в развитии стандартов веб. Вместо описания содержания и внешнего вида веб-страницы в HTML вы можете использовать CSS. При этом содержание и структура страницы описывается в HTML, а инструкции по отображению страницы пишутся с использованием таблицы стилей.

Огромное преимущество стилей в том, что если вам надо изменить вид какого-либо элемента на странице, вроде цвета заголовка или полей вокруг изображений, вам не придется вносить изменения в каждую строку HTML – вы просто меняете в одном месте стиль, и вся страница, использующая таблицу стилей, изменяется в соответствии с вашими установками. Многие разработчики страниц не пользуются CSS, поскольку не все броузеры их поддерживают. (См. раздел "Поддержка броузера для CSS".) Но сейчас, когда самые распространенные броузеры поддерживают CSS, можно начинать пользоваться их преимуществами.

Основы таблиц стилей

Правила формата стиля

Одним из правил каскадированной таблицы является селектор – тэг HTML, сопровождаемый параметрами CSS в скобках, отделенный точкой с запятой.

Пример
body {background-color:darkblue;}
Цвет фона темно-синий
Здесь описаны основные концепции и правила CSS. Более полную информацию вы сможете получить по адресу msdn.microsoft.com/workshop/author/css/reference/attributes.asp. А также www.w3.org/Style/CSS.

Каскадированость и наследственность

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

Пример
table {font-size:smaller;}
Шрифт в таблице меньше чем в остальной странице

Некоторые характеристики, такие как поля и задний фон, не наследуются.

Пример
table { margin:8px; }
Вокруг краев таблицы существует дополнительное пространство в 8 пикселей, но объекты внутри таблицы не имеют дополнительных полей

Установка множественных стилей

Чтобы установить стиль для нескольких селекторов, используйте запятые.

Пример
h1,h2,h3,h4,h5,h6 {color:white;}
Цвет текста всех заголовков – белый

Установка стиля в контексте

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

Пример
table a {color:maroon;}
Текст гиперссылок в таблице – темно-красный

Единицы длины

В CSS используется несколько единиц длины, наиболее важные – это px (пиксели), pt (пункты), in (дюймы), mm (миллиметры), em (ширина заглавной "M" в данном шрифте) и ex (высота маленькой "x" в данном шрифте).

Пример
body,td {font-size:16px;}
Размер шрифта для обычного текста ровно 16 пикселей в высоту
body {margin:.5in;}
Страница имеет поля в пол-дюйма
h1,h2,h3 
  {border:1mm solid gray;
  padding:.5em;}
Заголовки имеют серую границу толщиной в 1 мм, и расстояние между текстом и границами в ячейке зависит от размера шрифта

Где устанавливать стили

Внешняя таблица стилей

Вы можете установить правила стиля для ваших страниц, используя файл (.css) внешней таблицы стилей. Свяжите таблицу с вашим HTML, поместив тэг <LINK> в раздел <HEAD>.

Пример
<link rel=stylesheet 
  href="stylesht.css"type="text/css">
Правила стиля, содержащиеся в файле stylesht.css, применяются к этой странице

Таблица стилей внутри файла

Вы можете установить правила стиля для одной страницы, используя блок <STYLE> в файле HTML вашей страницы.

Пример
<style>
  <!--
  body {background-color:gray;}
  -->
</style>
Устанавливает правила стилей для этой страницы

Применение стиля к одному тэгу HTML

Чтобы установить стиль для одного тэга HTML, используют атрибут стиля.

Пример
<table style=
"background-color:blue;color:white;">
Текст белый на синем фоне только в этой таблице

Создание выборочного класса стилей или ID

Вы можете создать выборочные классы в вашей таблице стилей и затем применять их на странице. Например, вы можете создать класс quote для квотирования. Перед классамми ставьте точку, а перед ID – значок номера (#).

Пример
quote { 
  margin-left:20px; 
  margin-right:20px;}
Создает класс quote для использования в атрибуте class вашего HTML
#bigred {
  text-transform:uppercase; 
  color:red;}
Создает стиль ID с именем bigred для использования в атрибуте id вашего HTML

Применение выборочных классов или ID к тэгу

Чтобы применить класс к тэгу, используйте атрибут class ; для ID используйте атрибут id.

Пример
<p class=quote>I hate quotations; 
  tell me what you know.</p>
Применяет класс стилей quote к абзацу (и элементам внутри него)
<h1 id=bigred>Warning</h1>
Применяет ID bigred к заголовку

Цвет и фон

Номера цветов

Цвета указываются так же, как в HTML, используя RGB-номера: #000000 (черный), #ffffff (белый), #006600 (темно-зеленый).

Пример
h1,h2 {color:#006600;}
Оба заголовка темно-зеленые

Имена цветов

Если вы не любите пользоваться номерами, выберите название цвета из ста с лишним названий цветов, таких как darksalmon, seagreen и papayawhip. Но 4-ая и более ранние версии броузеров распознают очень небольшое количество имен. (Полный список имен цветов см. на msdn.microsoft.com/workshop/author/dhtml/reference/colors/colors.asp.).

Пример
h1,h2 {color:darkgreen;}
Оба заголовка темно-зеленые

color

Указывает цвет текста и других элементов

Пример
body,p,td {color:#000066;}
Весь текст на странице темно-синий

background-color

Указывает цвет фона для любого элемента

Пример
table {   
  color:white;
  background-color:maroon;}
Таблица отображает белый текст на темно-красном фоне

background-image

Указывает фоновый рисунок для страницы или другого блока (например, таблицы или ячейки). Использует формат url(imagefile), чтобы указать адрес или имя файла.

Пример
body {
  background-image:url(estar.jpg);
}
Файл estar.jpg (в той же папке, что и страница) появляется в качестве фона
table {background-image:
url(http://chillbot.com/bot.gif);}
Файл bot.gif (с другого веб-сервера) появляется в качестве фона таблицы

background-repeat

Определяет возможность повторения фонового рисунка, если он слишком мал, чтобы занять все пространство. Установите repeat, repeat-x, repeat-y или no-repeat.

background-scroll

Определяет, должен ли фон прокручиваться вместе со страницей. Установите scroll или fixed.

background-position

Устанавливает расположение рисунка относительно краев окна и других объектов. Укажите left, center или right, а затем top, middle или bottom.

Пример
table {                                      
  background-image:url(war.gif);
  background-repeat:no-repeat;
  background-position:center top;}
Таблица отображает рисунок, выровненный сверху страницы

background

Устанавливает все пять предыдущих свойств. Установите свойства в следующем порядке.

Пример
body {                                     
  background:silver url(war.gif) 
    no-repeat fixed center top;}
Фон страницы серебристо-серый, с непрокручивающимся рисунком, выровненным по верху страницы

Шрифты и текст

стиль шрифта ()

Устанавливает курсивный (italic), наклонный (oblique) или обычный (normal).

толщина шрифта ()

Может быть полужирным (bold), более жирным (bolder), светлым (lighter) или обычным (normal).

font-size

Может быть xx-small, x-small, small, medium, large, x-large, xx-large ; larger или smaller ; или точной высоты в пикселях и пунктах; или в процентах от наследуемого размера шрифта.

Пример
body,td {font-size:14pt;} 
h1 {font-size:x-large;color:blue;} 
h2 {font-size:x-large;} 
h3 {font-size:large;} 
.footer {font-size:13px;}
Размер шрифта для обычного текста 14 пунктов, шрифт заголовков чуть-чуть больше, а размер шрифта в элементах класса footer-class точно 13 пикселей в высоту

высота строки ()

Устанавливает высоту каждой строки текста. Указывается или конкретная высота, или процент от высоты по умолчанию.

Пример
compact {line-height:95%}
Строки в элементах класса compact ближе друг к другу, чем обычно

font-family

Выберите семейство. Чтобы поддерживать системы с различными шрифтами, предусмотрите альтернативу (включая serif, sans-serif и monospace, используемые большинством систем).

Пример
body,td {font-family:Verdana, 
Arial,Helvetica,sans-serif;}
Страница использует шрифт Verdana, если он доступен; иначе используется Arial или Helvetica, или шрифт без засечек по умолчанию
.typewriter {font-family:"Courier
New",Courier,monospace;}
Текст в элементе класса typewriter использует Шрифт New, если вoзможно; иначе используется Courier или моноширинный шрифт по умолчанию

font

Устанавливает предыдущие пять свойств (в порядке, обозначенном ниже). Если вы устанавливаете высоту строки, это свойство должно стоять после размера шрифта, отделенное слэшем (/).

Пример
body,td {font:12pt/14pt "Times New  
Roman",Times,serif;}
Страница использует Times New Roman или другой шрифт с засечками размером 12 пунктов с высотой строки 14 пунктов
h1 {font:italic bold 18pt Arial 
sans-serif;}
H1-заголовки используют жирный курсивный шрифт Arial размером 18 пунктов или шрифт без засечек по умолчанию

text-decoration

Можно установить подчеркивание (underline), линию над текстом (overline), зачеркивание (line-through) или none.

letter-spacing

Позволяет вам регулировать расстояние между символами. Указывается положительное или отрицательное значение длины, или процент от существующей разбивки.

text-align

Можно установить center, justify, right, или left. Используется для полей, рисунков, таблиц и других объектов также как и текст.

vertical-align

Можно установить baseline, sub, super, top, middle, bottom, text-top, text-bottom, или auto. Используется для рисунков, таблиц и других объектов также как и текст.

text-indent

Делает отступ необходимой длины в первой строке каждого параграфа.

text-transform

Устанавливает peгистр. Можно установить capitalize, lowercase, uppercase, или none.

Селекторы псевдо-элементов :first-letter и :first-line

Cелекторы псевдо-элементов используются для специального форматирования первой буквы элемента или всей первой строки.

Пример
p:first-letter {float:left;                    
  font-size:32pt;line-height:28pt;       
  padding-right:5px;}
Создает буквицу (большую заглавную букву, вокруг которой размещается текст) в начале каждого параграфа
.fancy:first-line {                              
  font-size:larger;                                 
  letter-spacing:1pt;}
Первая строка каждого параграфа или заголовка, относящегося к классу fancy, имеет больший размер

Гиперссылки

Установка стилей гиперссылок

Чтобы управлять отображением гиперссылок на вашей странице, установите параметры тэга <A>, такие как color, font-weight и text-decoration.

Пример
a {  color:#993300;font-weight:bold; 
  text-decoration:none;}
Гиперссылки не подчёркнуты и отображаются полужирным, темно-красным шрифтом

Селекторы псевдоэлементов a:link, a:visited, a:active и a:hover

Используя селекторы псевдоэлементов гиперссылок, вы можете устанавливать различные параметры гиперссылок. Установите параметры a:hover, чтобы создать эффект ролловера, когда посетитель проводит мышкой по гиперссылке.

Пример
a  :  link {color:darkslateblue;}
a  :  visited {color:steelblue;}
a  :  active {color:hotpink;}
a  :  hover {color:tomato;}
Гиперссылка меняет цвет, если она была использована или если посетитель проводит по ней мышью

Поля, заполнение и границы

Исходя из блочной модели CSS, каждый элемент блока – таблицы, ячейки, параграфы и рисунки – имеют поля, заполнение и границы, которыми вы можете управлять. Функции полей работают не во всех броузерах; в Netscape 4 лучше вообще не использовать параметры полей.

Функции полей

Поля представляют собой пространство вокруг границ объекта. Они прозрачны, поэтому их цвет соответствует цвету заднего фона объекта. Для большинства объектов поля по умолчанию равны нулю; впрочем, текстовые элементы, такие как параграфы и заголовки, имеют по умолчанию поля сверху и снизу.

Смежные поля

Когда элементы, имеющие поля, следуют один за другим вертикально, пространство между ними не является суммой их верхнего и нижнего полей; оно сливается в большее из двух полей. Инструментами side-by-side поля добавляются для создания большего пространства. Вы можете указать отрицательную величину поля; таким образом, вы уменьшите пространство, занимаемое полями.

margin-top, margin-right, margin-bottom, margin-left и margin

Установите расстояние между объектом (или его границей) и смежным объектом или краем окна или ячейки. Используйте margin, чтобы установить сразу все четыре поля.

Пример
body {margin:0;}
Страница находится в верхнем левом углу окна броузера
.quote {                                                             
  margin-left:.25in;                                             
  margin-right:.25in;}
Абзацы класса quote отступают на четверть дюйма от краев окна
h1,h2,h3 {margin-bottom:6px;}                      
p {                                                                    
  margin-top:6px;                                              
  margin-bottom:6px;}
ul  ,   ol   {
  margin-top:8px;
  margin-bottom:18px;}
li {
  margin-top:0px;
margin-bottom:4px;}
Страница разбита более равномерно: заголовки и абзацы ближе друг к другу, пункты списка разделены небольшими отступами
img {float:right;margin-left:10px;}
Рисунки выровнены справа; текст огибает их слева, но он отделен от них как минимум десятью пикселами

padding

Устанавливает расстояние между абзацем или другим элементом и его границей

border-width

Может быть thin, medium, thick, или exact width. (Установка этих параметров не обеспечит границу, пока вы не установите border-style.)

border-style

Отображает границу вокруг любого блочного элемента, вроде параграфа, рисунка, или таблицы. Бывает solid, double, ridge, groove, dashed, dotted, outset, inset, или none.

border-color

Устанавливает цвет границы.

border

Устанавливает сразу все три предыдущих параметра.

Пример
.bigframe {border:4mm ridge gold;}
Элементы класса bigframe имеют широкую, золотистую границу
h1 {border:2px solid;padding:4px;}
Каждый заголовок заключен в рамку
table {border:2 solid gray;}
td,th {border:1 dashed gray;}
Отображает тонкие границы вокруг таблицы и ячеек; удобно для тестирования таблиц

Списки

list-style-type

Маркеры могут быть square, circle или disc. Номера могут быть decimal, lower-roman, upper-roman, lower-alpha или upper-alpha. Если нет ни того, ни другого, установите none.

list-style-image

Устанавливает рисунок в качестве маркера

Пример
ul   {  list-style-image:       
      url(images/bullet.gif);}
Маркированный список использует рисунок bullet.gif в качестве маркера

list-style-position

Определяет положение маркера в списке: inside (в составе абзаца) или outside (выдвинутый влево от абзаца).

Размер и позиционирование

float

Устанавливает выравнивание и тип обтекания объекта (вроде атрибута align в тэге <IMG>, но не только для рисунков). Установите как left или right, чтобы выровнять объект с левыми или правыми полями и установить обтекание текста, или установите none (по умолчанию), чтобы предотвратить обтекание.

Пример
img {float:left;margin-right:10px;}
Текст обтекает все рисунки с полями в 10 пикселей с правой стороны
<div style="float:right;width:120;">
  <img src="mel.jpg"width=120          
    height=200><br>
  Caption under the picture</div>
Рисунок и подпись появляются напротив правого поля в то время как остальное содержимое страницы обтекается слева

clear

Если параграф или объект обтекает другие объекты на странице, установите параметр clear, чтобы он начинался со следующего открытого правого или левого поля (после других элементов). Установите как left, right, both или none.

width и height

Устанавливает размеры объектов, таких как рисунок или абзац. Абзац всегда использует указанный параметр width. С параметром height, когда рамка меньше абзаца, текст сжимается до указанной высоты (если вы не установили параметр overflow ).

overflow, overflow-x и overflow-y

Определяет, способен ли абзац вместить текст и нужны ли полосы прокрутки, чтобы отобразить переполнение. Параметр по умолчанию – visible, позволяющий абзацу превысить установленную высоту.

Чтобы вырезать лишний текст, установите hidden ; установите auto, чтобы отображать полосу прокрутки, если необходимо; установите scroll, чтобы всегда отображать две полосы прокрутки. Используйте параметры overflow-x и overflow-y, чтобы обеспечить разные настройки для горизонтального и вертикального переполнения и прокрутки.

Пример
.boxnote {width:160px;height:100px; 
  overflow:auto;float:right;fixed-size 
  border:2px solid navy;padding:4px;     
}
Параграфы класса boxnote содержатся в рамке напротив правого поля; если текст не будет помещаться, в рамке появится вертикальная полоса прокрутки
#mustfit {width:100px;height:12px;    
  overflow:hidden;}
Элемент с ID mustfit должен быть точно 100 на 12 пикселов; не поместившийся текст вырезается

position, top, и left

Параметр position заставляет элемент, такой как рисунок или блок <DIV>, переместиться с места, изначально занимаемого на странице. Установите position как absolute, чтобы установить элемент на определенном расстоянии от левого и верхнего краев страницы, закрывая пространство, которое он занял бы в другом случае.

Укажите position как relative, чтобы разрешить позиционирование объекта, оставляя открытым пространство, которое он занял бы в другом случае.

Параметры для top и left могут быть положительными (для движения вниз и вправо) или отрицательными (для движения вверх и налево).

Абсолютное позиционирование обычно связано с верхним левым углом страницы, но вы также можете установить его относительно других элементов. Например, если вы устанавливате position как relative к блоку <DIV>, абсолютное размещение в этом блоке будет связано с его левым верхним углом.

Абсолютное позиционирование удобно в DHTML-программировании, где вы определяете объекты на вашей странице, а затем устанавливаете расположение, содержимое и видимость, используя JavaScript.

Пример
<div style=                                     
  "position:absolute;top:0;left:200"> 
    <img src=spaceship.gif>                  
</div>
Левый край рисунка отстоит на 200 пикселов от левого края окна, и рисунок касается верхнего поля
The word <span style=                    
  "position:relative;top:-8;">higher
  </span>is higher than the others
Слово higher выше, чем остальные

z-index

Определяет, какие позиционированные объекты накладываются друг на друга.

Большее значение элемента z-index отправляет элемент на передний план, а меньшая величина располагает его позади других элементов. Отрицательное значение отодвигает элемент за непозиционированные элементы страницы.

Пример
<div style=                                     
  "position:absolute;top:200;
  left:200;z-index:2">
    <img src="front.gif"></div>
<div style=
  "position:absolute;top:250;
  left:250;z-index:1">
    <img src="back.gif"></div>
Рисунок front.gif частично перекрывает back.gif
<div style=                                   
  "position:absolute;top:250;          
  left:250;z-index:-1">
    <img src="chau.gif"></div>.
Рисунок появляется после содержимого страницы, на расстоянии 250 пикселов от верхнего и левого краев страницы

display

Установите как none, чтобы элемент исчез со страницы, закрыв занимаемое им в другом случае пространство. Установите как block, чтобы отображать элемент как блок (по умолчанию) или inline, чтобы отображать его как часть конкретной строки (как в тэге <SPAN>).

visibility

Установите как hidden, чтобы элемент исчез со страницы, но все еще занимал место. Установите visible (по умолчанию), чтобы отобразить объект.

Вернуться к учебному плану