Иллюстрированный самоучитель по Adobe GoLive 6

Применение стилей

Мы уже знаем, что применение каскадных таблиц стилей позволяет нам добиваться самых поразительных эффектов в оформлении содержимого 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>

Иллюстрированный самоучитель по Adobe GoLive 6 › Динамический HTML › Применение стилей
Рис. 7.3. Окно браузера с результатом отображения файла приведенного в листинге 7.3, в тот момент, когда пользователь активизировал второй переключатель

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.