Применение стилей
Мы уже знаем, что применение каскадных таблиц стилей позволяет нам добиваться самых поразительных эффектов в оформлении содержимого Web-страниц. Но когда эти и без того немалые возможности соединяются с технологией DHTML, разработчик Web-страниц получает в свое распоряжение практически неограниченные возможности манипулирования содержимым Web-страницы. В этом разделе мы рассмотрим основные приемы манипулирования правилами отображения элементов Web-страниц при помощи стилей.
Как мы знаем, есть два метода работы со стилями. Можно создать стилевую таблицу, причем, в данном случае не так уж важно, будет она встроенной или внешней, а затем обращаться к правилам отображения из этой таблицы при помощи значений параметров class, которые будут совпадать с теми или иными селекторами стилевой таблицы. А можно воспользоваться параметром style, который встраивается практически во все теги. Мы уже знаем, что создание отдельной стилевой таблицы оправданно в тех случаях, когда необходимо создать единообразное оформление. А если нам требуется, как можно более гибко управлять параметрами отображения многих элементов, стоит использовать задание стиля для каждого отдельного тега.
Для начала мы рассмотрим примеры операций с отдельными стилевыми таблицами. Существует два подхода к данной проблеме. Мы можем либо динамически изменять подключенную стилевую таблицу, либо менять идентификаторы классов у элементов оформления Web-страниц.
Изменение идентификаторов классов обычно используется в тех случаях, когда все необходимые правила отображения уже описаны в стилевой таблице, связанной с HTML-документом, а разработчику необходимо лишь гибко применять различные правила к одному и тому же элементу содержимого. Приведем один из примеров подобного подхода.
Мы можем создать документ, основным содержимым которого является таблица с тремя столбцами и одной строкой. В первой ячейке мы расположим два наименования коротких заметок, связанных с переключателями. Сами заметки мы разместим во второй и третьей ячейках. А пользователь, выбирая тот или иной переключатель, будет визуализировать соответствующий текст. Таким образом, когда отображается содержимое второй ячейки, не отображается содержимое третьей ячейки, и наоборот. Код подобного документа приведен в листинге 7.3, а результат – на рис. 7.3.
Листинг 7.3
<!DOCTYPE
HTML PUBLIC
"-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"
>
<
html
>
<
head
>
<
title
>
Динамчекие стили
<
/
title
>
<
script
language
=
"javascript"
>
//<!--
function
chan_cont(x) {
if
(x
=
=
1
) {
p1.className
=
"visible"
;
p2.className
=
"hidden"
};
if
(x
=
=
2
) {
p2.className
=
"visible"
;
p1.className
=
"hidden"
};
}
//-->
<
/
script
>
<
style
type
=
"text/css"
>
.visible {
visibility: visible
}
.hidden {
visibility: hidden
}
<
/
style
>
<
/
head
>
<
body
>
<
table
border
=
2
id
=
"tablel"
>
<
tr
>
<
td
>
<
p
>
Первая заметка
<
input
type
=
"radio"
name
=
"group1"
onClick
=
"chan_cont(1)"
value
=
"1"
checked
>
<
/
p
>
<
p
>
Вторая заметка
<
input
type
=
"radio"
name
=
"group1"
onClick
=
"chan_cont(2)"
value
=
"2"
>
<
/
p
>
<
/
td
>
<
td
>
<
p
id
=
"p1"
class
=
"visible"
>
Текст первой заметки
<
/
p
>
<
/
td
>
<
td
>
<
p
id
=
"p2"
class
=
"hidden"
>
Текст второй заметки
<
/
p
>
<
/
td
>
<
/
tr
>
<
/
table
>
<
/
body
>
<
/
html
>
Рис. 7.3. Окно браузера с результатом отображения файла приведенного в листинге 7.3, в тот момент, когда пользователь активизировал второй переключатель