Опубликован: 07.05.2010 | Доступ: свободный | Студентов: 1676 / 62 | Оценка: 4.56 / 4.06 | Длительность: 34:11:00
Лекция 9:

Средства форматирования страниц

Аннотация: Каскадные таблицы стилей. Добавление стилей в HTML-дескриптор. Добавление стилей на Web-страницу. Внешние стили. Применение внешних стилей в Visual Studio 2005. Темы. Приоритеты оформлений и стилевых настроек. Оформления сложных элементов управления. Использование внешних CSS в теме. Применение общей темы в конфигурационном файле. Применение тем по выбору пользователя. Мастер-страницы. Генерация заготовки мастер-страницы. Компоновка содержимого мастер-страницы. Создание страниц содержимого для мастер-страницы. Программное управление мастер-страницей из страницы содержимого. Многослойное подключение мастер-страниц. Подключение мастер-страницы через конфигурационный файл.
Ключевые слова: множества, cascading style sheets, стиль оформления, таблица стилей, www-броузер, HTML, 'inline', область действия, embedding, heading, дескриптор, ПО, Web, style, css, идентификатор объекта, элемент списка, текстовый формат, директива, header, HTM, netscape, navigation, текстовый редактор, каскадная таблица стилей, HTML-код, двойной щелчок, html-редактор, Actions, захват, этапы проектирования, серверные элементы управления, labels, целый, конфигурационный файл, меню, диалоговое окно, skin file, оболочка, checkbox, Button, BorderStyle, 'ridge', BorderWidth, blue, tooltip, 'groove', Font, bold, solid, theme, атрибут, отображение, элементы управления, black, цвет текста, объект, цвет фона, указание типа, цифровая информация, предшествующий элемент, таблица, файл, Calendar, skinning, внешний файл, ImageButton, путь, текущий каталог, интерфейс, значение, responsivity, redirection, transfer, сервер, цикла, скрытое поле, ViewState, сеанс, приложение, session.name, requester, свойство класса, приведение типов, 'background', программный способ, шаблон, именованная область, визуализация, content, компоновка, группа, mastering, базовый класс, MasterPage, присоединение, мастер-страница, ASP, идентификатор, контейнер, место, площадь, заголовки, title, after-image, баннер, Panel, создание таблицы, Height, Графический редактор, верхний колонтитул, нижний колонтитул, гиперссылка, hyperlink, адресация, товарный знак, интеллектуальная собственность, максимум, пиксел, satellite, init, load, script, AutoPostBack, сигнатура, вложенная мастер-страница, исключение, дек, Директория, неравенство

Файлы к лекции Вы можете скачать здесь

Единообразие в оформлении множества отдельных страниц сайта является важной его характеристикой. Visual Studio 2005 имеет три возможности для поддержки форматирования сайта:

  1. Каскадные таблицы стилей ( CSS - Cascading Style Sheet) - традиционное средство расширения языка HTML для управления стилями тегов
  2. Темы ( theme ) - специфическое средство, позволяющее определить детали форматирования отдельных элементов управления и воспроизводить их на множестве страниц. Можно создать несколько разных тем и при выборе одной из них автоматически меняется оформление всех страниц, использующих эту тему.
  3. Эталонные страницы ( master page ) - представляют собой многократно используемые шаблоны страниц. Их еще называют мастер-страницами. В шаблоне можно определить необходимые детали оформления, такие как заголовки, панели меню, банеры и связать их с обычными страницами. После этого все использующие шаблон страницы будут иметь одинаковый дизайн.

Каскадные таблицы стилей

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

Это старое средство форматирования, которое входит в HTML4 и поддерживается практически всеми броузерами. Таблица стилей представляет собой набор правил, описывающих на специальном языке стили тегов генерируемой HTML-страницы. Эти описания правил называются определениями стилей. Существуют три типа таблицы стилей:

  1. Внутренняя (inline) - когда отдельные теги HTML имеют свои индивидуальные настройки стилей, областью действия которых является только этот тег
  2. Встроенная (embedded) - когда таблица стилей находится на странице внутри блока <head> и имеет описание стилей общее для тех дескрипторов страницы, на которые она должна действовать. Это индивидуальная настройка стилей для страницы и областью их действия являются теги только одного документа
  3. Внешняя (linked) - когда описание стилей находится в отдельном файле и действуют они на те страницы сайта, к которым подключен этот файл

По отношению к этим трем типам CSS также соблюдается свойство каскадности, т.е. стиль внутреннего каскада имеет более высокий приоритет и перекрывает действие внешнего стиля. Поскольку задачей нашего курса является не только изучение возможностей Visual Studio 2005 в Web-программировании, рассмотрим кратко все перечисленные типы CSS.

Добавление стилей в HTML-дескриптор

Хотя CSS обычно не применяется для изменения вида каждого тега в отдельности, но принципиально можно это делать, особенно, когда нужно перекрыть действие внешнего каскада стиля для конкретного дескриптора. Синтаксис применения внутреннего стиля на примере дескриптора <h1> будет таким


Определенный в дескрипторе внутренний стиль будет действовать только на содержание этого дескриптора и перекрывать все определения внешних стилей.

Пример

Пусть отдельный заголовочный дескриптор будет определен в данном документе так

<h1 style="color:red; text-align:center">Этот заголовочный 
текст будет центрирован в текущем документе и иметь красный 
цвет (бледный вид)!</h1>

Отклик броузера выделен в рамочку и будет таким

Добавление стилей на Web-страницу

Определение внутренних стилей отдельных дескрипторов используется редко. Чаще применяются встроенные стили, которые действуют в пределах всей страницы. Встроенные стили размещаются внутри дескрипторного блока <head>...</head> в своем дескрипторном блоке <style>...</style>. Синтаксис встроенных стилей следующий

Атрибут type="text/css" дескриптора стиля указывает броузеру, что все последующие стили будут css -стилями. В приведенном примере селекторы body и h1 совпадают с именами дескрипторов HTML. Список селекторов HTML-объектов содержит значения идентификаторов объектов страницы, к которым нужно применить соответствующие правила стилей. Элементы списка селекторов отделяются друг от друга запятыми или пробелами. Если в определение одного свойства подразумевается много значений, то они также разделяются запятыми или пробелами. Если одно значение правила состоит из нескольких частей, разделенных пробелами, то оно обязательно заключается в двойные или одинарные кавычки.

Имена классов ".имя_класса" выбираются произвольно. В том дескрипторе документа, где необходимо применить определенный в классе стиль, используется атрибут class="имя_класса". Классы для конкретного вида тегов "тег.имя_класса" используются только в тегах заданного типа по той же самой схеме class="имя_класса".

Пример

Пусть страница имеет код, приведенный ниже (файл embedded.htm в каталоге CSS рассматриваемой темы)

<html>
<head>
    <title>Документ со встроенной CSS</title>
    <meta content="text/html; charset=windows-1251" http-equiv="Content-Type">
    <style type="text/css">
        body
        {
        	background:white url(MyWeb.jpg);
        	font-family:Arial, Helvetica, sans-serif;
        }
	
        h1
        {
        	color:#FF0000;
	        text-align:center;
        }
	
        #TextBox1
        {
	        font-family:"Courier New", Courier, mono;
	        font-size:24px;
	        font:bold italic;
	        background-color:#0000FF;
	        color:yellow;
	        width:400;
        }
	
        .btnResult
        {
	        background-image:url(BackgroundImage.bmp);
	        color:white;
        }
    </style>
</head>
<body>
    <h1>
        Заполните анкету!</h1>
    <form>
        <p>
            Введите ФИО:
            <input id="TextBox1" name="TextBox1" type="text">
        </p>
        <p>
            Введите ИНН:
            <input id="TextBox2" name="TextBox2" type="text">
        </p>
        <center>
            <input id="Button1" class="btnResult" name="Button1" 
                      type="button" value="Отослать">
        </center>
    </form>
</body>
</html>

Чтобы получить оригинальный результат, щелкните на кнопке, расположенной внизу приведенного примера кода. Если на Вашем броузере включена поддержка JavaScript, то он запустит новую страницу в отдельном окне, где можно посмотреть результат с использованием встроенной CSS. "Стильный" снимок моего результата будет таким


Внешние стили

Внешними считаются стили, которые хранятся в отдельном файле текстового формата (чаще с расширением .css, но будет работать любое расширение). Содержимое стиля в отдельном файле отличается от встроенного стиля тем, что во внешнем стиле не должно быть дескрипторных скобок <style></style>. Кроме этого, подключение стилевого файла к HTML-документу выполняется добавлением в блок <head>...</head> дескриптора <link> или директивы @import.

Пусть имеется два файла с внешними стилями и произвольными именами, например, header.css и default.css. Вот варианты их подключения в HTML-документ MyPage.htm ( обязательно в заголовочный блок <head>...</head> ):

Варианты подключения CSS к HTML-документу
Вариант В блоке <head> файла MyPage.htm Замечания
Подключается одна CSS
<link rel="stylesheet" href="header.css">
Подключается две CSS
<link rel="stylesheet" href="header.css">
<link rel="stylesheet" href="default.css">
Подключается одна CSS
<style type="text/css">
    @import url(header.css);
</style>
Не поддерживается Netscape Navigator 4
Подключается две CSS
<style type="text/css">
    @import url(header.css);
    @import url(default.css); 
</style>
Не поддерживается Netscape Navigator 4
Подключается две CSS ( в страницу импортируется цепочка CSS)
<style type="text/css">
    @import url(header.css);
</style>
В самом начале файла header.css имеется голая строка прямого подключения:
@import url(default.css)
Подключается две CSS
<style type="text/css">
    @import url(header.css);
</style>
<link rel="stylesheet" href="default.css">
Порядок следования не влияет
Подключается две CSS
<link rel="stylesheet" href="default.css">
<style type="text/css">
    @import url(header.css);
</style>
Порядок следования не влияет
Подключается три CSS
<link rel="stylesheet" href="default.css">
<style type="text/css">

    @import url(header.css);

   body
   {
      	background:white url(MyWeb.jpg);
      	font-family:Arial, Helvetica, sans-serif;
   }
	
   h1
   {
       color:#FF0000;
	    text-align:center;
   }
	
   #TextBox1
   {
	   font-family:"Courier New", Courier, mono;
	   font-size:24px;
	   font:bold italic;
	   background-color:#0000FF;
	   color:yellow;
	   width:400;
   }
	
   .btnResult
   {
	   background-image:url(BackgroundImage.bmp);
	   color:white;
   }

</style>
Подключается две внешних таблицы в дополнение к встроенной.

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

Порядок следования не влияет

Подключается три CSS
<style type="text/css">
   body
   {
      	background:white url(MyWeb.jpg);
      	font-family:Arial, Helvetica, sans-serif;
   }
	
   h1
   {
       color:#FF0000;
	    text-align:center;
   }
	
   #TextBox1
   {
	   font-family:"Courier New", Courier, mono;
	   font-size:24px;
	   font:bold italic;
	   background-color:#0000FF;
	   color:yellow;
	   width:400;
   }
	
   .btnResult
   {
	   background-image:url(BackgroundImage.bmp);
	   color:white;
   }

    @import url(header.css); 

</style>

<link rel="stylesheet" href="default.css">
Подключается две внешних таблицы в дополнение к встроенной.

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

Порядок следования не влияет

Чтобы проверить сказанное, выполните следующее (вручную, без Visual Studio 2005!)

  • Найдите в прилагаемом каталоге CSS файл embedded.htm и в этом же каталоге сделайте из него две копии с именами TestCSS.htm и ExternalCSS.css
  • Откройте в текстовом редакторе Блокнот файл TestCSS.htm и замените в заголовке <head> встроенный стиль на строку подключения внешней CSS
    <link rel="stylesheet" href="ExternalCSS.css">
  • Откройте в текстовом редакторе Блокнот файл ExternalCSS.css и оставьте только чистый код селекторов и определений стилей
  • Откройте страницу TestCSS.htm в броузере и убедитесь, что получился тот же результат, что и при использовании встроенных стилей

  • Опробуйте другие варианты подключения внешней CSS, приведенные ранее (если хотите!)