Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

sam_rab_1

.pdf
Скачиваний:
10
Добавлен:
11.05.2015
Размер:
654.79 Кб
Скачать

Самостоятельная работа № 1

 

Оглавление

 

Цель работы:............................................................................................................................................

1

Часть 1. Табличная верстка страницы ......................................................................................................

1

Теоретическая часть ...............................................................................................................................

1

План выполнения работы части 1 самостоятельной работы 1.........................................................

18

Часть2. Блочная верстка страницы..........................................................................................................

19

План выполнения работы части 2 самостоятельной работы 1.........................................................

29

Цель работы:

знакомство с приемами табличной и блочной верстки web-страницы

закрепление знаний по CSS

Часть 1. Табличная верстка страницы

Теоретическая часть

ВЕРСТКА СТРАНИЦЫ

Вёрстка веб-страниц - процесс формирования веб-страниц в текстовом либо WYSIWYGредакторе, а также результат этого процесса, то есть собственно веб-страницы.

WYSIWYG (является аббревиатурой от англ. What You See Is What You Get, «что видишь, то и получишь») - свойство прикладных программ, в которых содержание отображается в процессе редактирования и выглядит максимально близко похожим на конечную продукцию, которая может быть печатным документом, веб-страницей или презентацией.

Под вёрсткой подразумевается применение html или html+css. Второй вариант является наиболее распространённым. HTML-вёрстка бывает блочной (div) и табличной (table). Оба варианты имеют свои достоинства и недостатки. Вообще, есть, конечно, и другие варианты вёрстки, более сложные, но они не всегда поддерживаются всеми браузерами.

Данная работа посвящена вопросам табличной верстки web-страниц.

ТАБЛИЧНАЯ ВЁРСТКА

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

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

Различают жесткую и резиновую табличную верстку.

ЖЕСТКАЯ ТАБЛИЧНАЯ ВЁРСТКА

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

Пример реализации жесткой табличной верстки.

1

<html>

<head>

<title>Жесткая табличная верстка сайта</title>

<style type="text/css">

.header {width:100%; height:60px; background-color:#717dc9; padding:20px; text-align:center}

.left_col {width:120px; height:460px; background-color:#dddddd; padding:15px; vertical-align:top}

.center_col {width:500px; background-color:#ffffff; padding:15px; verticalalign:top}

.right_col {width:120px; background-color:#dddddd; padding:15px; verticalalign:top}

.footer {width:100%; padding:10px 0 10px 20px; background-color:#717dc9; font-size:13px}

</style>

</head>

<body>

<table cellpadding="0" cellspacing="0" width="860" align="center"> <tr>

<td colspan="3" class="header">Мой сайт</td> </tr>

<tr>

<td class="left_col">Меню</td>

<td class="center_col">Содержание</td> <td class="right_col">Ссылки</td> </tr>

<tr>

<td colspan="3" class="footer">© Все права защищены</td> </tr>

</table>

</body>

</html>

Поясним некоторые конструкции данного примера. В начале кода созданы несколько стилевых классов:

.header – предназначен для форматирования шапки страницы (верхней строки);

.left_col - предназначен для форматирования левой колонки (средней строки) страницы;

.center_col - предназначен для форматирования центральной колонки (средней строки) страницы;

.right_col - предназначен для форматирования правой колонки (средней строки) страницы;

.footer - предназначен для форматирования «подвала» (нижней строки) страницы.

Затем каждый из стилевых классов применялся к определенным ячейкам таблицы.

Для формирования каркаса страницы в виде таблицы: Указываем ширину первой и третьей ячейки среднего ряда:

width:120px + padding:15px = 150px (ширина одной ячейки) — умножаем на 2, получаем 300px.

Ширина среднего столбца (ячейки) равна ширина таблицы (860px) - (минус) ширина левого и правого столбца (300px).

Что касается высоты, то все ячейки одного ряда таблицы автоматически выравниваются по самой высокой, поэтому в стилях, в описаниях среднего ряда была указана высота только одной — крайней левой.

При расчете размеров всегда нужно учитывать значения padding, margin, border. Значения этих атрибутов задаются так:

2

padding:20px – внутреннее поле элемента по всему своему периметру равно 20-ти пикселям

или так:

padding:10px 0 8px 60px – верхнее внутреннее поле равно 10-ти пикселям, правое – нулю, нижнее – 8-ми пикселям и левое – 60-ти пикселям (по часовой стрелке, начиная сверху).

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

РЕЗИНОВАЯ ТАБЛИЧНАЯ ВЁРСТКА

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

Пример реализации резиновой табличной верстки.

Для получение резиновой верстки необходимо изменить значение лишь одного атрибута в теге <table>. При <table width="100%"> горизонтальный размер таблицы напрямую зависит от разрешения монитора. В нашем случае ширина первого и третьего столбцов (ячеек) среднего ряда установлена жестко, а второй столбец растягивается, обеспечивая 100% ширину таблице.

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

СМЕШАННАЯ ТАБЛИЧНАЯ ВЁРСТКА

При написании данного раздела использованы материалы сайта: http://www.pastukhova.com/lesson1.php.

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

1. СОЗДАНИЕ "КАРКАСА" СТРАНИЦЫ

Итак, имеется макет страницы. На рисунке - его уменьшенное изображение. Создадим webстраницу, которая:

не зависимо от разрешения экрана, браузера (возьмем самые популярные: IE, Firefox, Opera) и темы оформления Windows выглядела бы одинаково - как на макете;

была "читаемой" даже при отключенной графике;

имела легкий, удобный для редактирования html-код;

растягивалась на полную ширину экрана.

3

Создайте в отдельной папке файлы index.html и style.css. В процессе верстки постараемся большую часть форматирования вынести в style.css:

размер html-страниц будет меньше;

если в будущем необходимо будет отредактировать дизайн сайта, тогда не понадобится менять все html-файлы. Необходимо будет модифицировать только style.css.

Наметим "каркас" страницы. Удобно делать его в виде таблицы 100%-й высоты, разделенной на 3 горизонтальные области - Top, Text и Bottom. Top и Bottom имеют фиксированную высоту, а ячейка Text растягивается по высоте на всю оставшуюся часть экрана. Таким образом, даже когда на странице мало или совсем нет текста, Bottom всегда находится там, где ему положено - внизу.

Сделаем разметку немного сложнее, т.к. нам нужно, чтобы блоки Search, News, Copyright были равны по ширине. Лучший способ этого добиться - поместить их в ячейки таблицы, расположенные одна над другой.

4

Вот получившийся html-код (в примере специально поставлен параметр border="1" в теге <table> и написаны внутри каждой ячейки ее название, чтобы мы удостоверились, что сделали разметку правильно). Потом все это нужно будет удалить.

index.html

<title></title>

<link href="style.css" rel="stylesheet" type="text/css" /> <table border="1" class="main">

<tbody>

<tr>

<td class="top" colspan="2">top</td> </tr>

<tr>

<td class="search">search</td> <td class="topmenu">topmenu</td>

</tr>

<tr>

<td class="news">news</td> <td class="text">text</td>

</tr>

<tr>

<td class="copyright">copyright</td> <td class="bottommenu">bottommenu</td>

</tr>

</tbody>

</table>

style.css

table.main {width: 100%; height: 100%;} td.top {}

td.search {} td.topmenu {}

td.news {width: 30%;}

td.text {width: 70%; height: 100%;} td.copyright {}

td.bottommenu {}

Для каждой ячейки был создан класс в style.css.

5

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

1) Чтобы не было промежутков между таблицей и границами экрана, пишем:

html, body {margin:0px; padding:0px;}

2) Чтобы убрать зазоры между ячейками, добавляем в свойства таблицы border-collapse: collapse (это аналог html-параметра cellspacing="0").

table.main {border-collapse: collapse;}

3) Чтобы убрать отступы внутри ячеек, пишем:

td {padding: 0px;}

Также нужно прописать несколько общих параметров, которые будут использоваться по умолчанию:

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

6)Когда большая часть текста будет написана одним шрифтом (в нашем случае - Tahoma 11px, черный), имеет смысл указать его сразу для всех ячеек и элементов форм.

7)По умолчанию текст и изображения располагаются (вертикально) в середине ячейки. Обычно удобнее, чтобы они подтягивались к верхнему краю. Для этого нужно указать vertical-align:

top для всех ячеек.

body, input, select, textarea {background-color: #ffffff;}

td, input, select, textarea { font-family: Tahoma; font-size: 11px;

color: #000000; vertical-align: top;

}

Каркас готов.

6

2. ЯЧЕЙКА TOP

Теперь будем заполнять ячейки изображениями. Начнем с Top. Посмотрите на макет: верх можно разделить на следующие слои: фон, дом, логотип.

При создании макета применили маленькую хитрость: рисунок с травой и облаками склеен из одного и того же повторяющегося изображения. Это очень удобно, т.к. при растягивании ячейки Top он сможет повторяться столько раз, сколько потребует ширина вашего экрана.

Итак, вырезали часть изображения и назвали его top_bg.jpg.

Подсказка: если бы рисунок был не повторяющимся, нужно было бы заготовить фон для ячейки Top размером не менее 1280 пкс в ширину - такое разрешение экрана у пользователей с мониторами LCD 17-19 дюймов (можно сделать и 1600 пкс, но такое разрешение у очень малого количества пользователей, а всем остальным придется загружать большую картинку).

Отдельно вырежем домик и назовем его house.jpg.

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

временно отключим слой с облаками в графическом редакторе;

подложим под лого прямоугольник голубого цвета (такого же, как переход "небооблака");

вырежем лого и сохраним его в формате .gif. Голубой цвет назначим прозрачным.

7

Создадим в Top вложенную таблицу, левая ячейка которой будет содержать house.jpg. По ширине и высоте она будет равна размерам рисунка. Правая ячейка будет растягиваться на всю оставшуюся часть экрана, причем ее содержимое - logo.gif - будет выравниваться по правому краю, отступая от верхнего и правого края экрана, например, по 55 пкс (можно задать свои размеры отступов – в данном случае не забудьте изменить код в css-файле).

Получили следующий код ячейки Top. Для вложенной таблицы воспользовались уже имеющимся в style.css классом main, чтобы она занимала всю площадь ячейки.

index.html

<td colspan="2" class="top"> <table class="main">

<tbody>

<tr>

<td><img width="285" height="165" border="0" src="house.jpg" alt="" /></td> <td class="logo">

<img width="206" height="27" border="0" src="logo.gif" alt="" /></td>

</tr>

</tbody>

</table>

</td>

style.css

td.top {

background-image: url(top_bg.jpg); height: 165px;}

td.logo { width: 100%;

text-align: right; padding-top: 55px; padding-right: 55px;}

Верх готов. Посмотрите, что получилось.

8

padding-left: 21px

3. ЯЧЕЙКИ SEARCH И TOPMENU

Теперь будем делать верстку для ячеек Search и TopMenu.

Сделаем фон для каждой из ячеек.

style.css

td.search {

background-image: url(search_bg.jpg); background-color: #dce1e9;

height: 39px;

}

td.topmenu {

background-image: url(topmenu_bg.jpg); background-color: #ff8e51;

}

В Search поместим вложенную таблицу.

Ячейки таблицы будут с небольшим отступом справа (чтобы надпись SEARCH не сливалась с формой ввода, а та - с кнопкой). Сама форма поиска, как и ячейка, в которой она находится, будет 100%-ширины.

Но самое оригинальное сделаем с ячейкой, в которой должна быть надпись ":: SEARCH". Назовем ее hdr.

Во-первых, в ней нужно указать параметры шрифта (верхний регистр, жирный). Во-вторых, изображение точек - dots.gif - сделаем его фоном ячейки. Причем фон можно

точно позиционировать (background-position: 10px - отступ от левого края ячейки). И сделаем (отступ текста), чтобы текст не налезал на точки.

Возможно, покажется, что это лишние сложности - не проще ли было бы вставить dots.gif в отдельную ячейку таблицы или написать:

<font color="Brown"><b style="font-size:10px;">:: SEARCH</b></font> и получить

:: SEARCH

Проще. Зато теперь не придется больше задумываться над этим.

Напишите <td class="hdr"><font color="Brown">Заголовок</font></td>, и точки

перед заголовком появятся автоматически. Так как в файле есть еще несколько заголовков такого типа, можно сэкономить время при дальнейшей верстке.

index.html

<td class="search"> <form action="">

<table class="main"> <tr>

<td class="searchitem hdr">Search</td> <td class="searchitem" width="100%">

<input type="text" name="Search" style="width:100%;"></td> <td class="searchitem">

<input type="image" src="button.jpg" width="22" height="39" border="0"></td>

9

</tr>

</table>

</form>

</td>

style.css

td.searchitem { vertical-align: middle; text-align: center; padding-right: 11px;

}

form {

margin: 0px;

}

td.hdr {

vertical-align: middle; text-transform: uppercase; font-weight: bold; font-size: 10px;

background-image: url(dots.gif); background-repeat: no-repeat; background-position: 10px; padding-left: 21px;

}

В TopMenu тоже сделаем вложенную таблицу из пяти ячеек одинаковой ширины (по 20%). Возникает вопрос: как лучше сделать разделители между элементами меню? Можно сделать их изображениями шириной 1 пкс, добавить в таблицу еще 5 ячеек (по одной после каждого пункта меню) и поместить в них разделители. Но еще в первом пункте договорились как можно больше html-кода вынести в style.css. Так что сделаем div.jpg фоном ячеек Menuitem и привяжем его к правому краю.

Для ссылок в меню пропишем свойства шрифта (10 пкс, верхниц регистр, белый, жирный, без подчеркивания).

index.html

<td class="topmenu"> <table class="main">

<tr>

<td class="menuitem"><a class="menu" href="">Home</a></td> <td class="menuitem"><a class="menu" href="">News</a></td>

<td class="menuitem"><a class="menu" href="">About Us</a></td> <td class="menuitem"><a class="menu" href="">Catalog</a></td> <td class="menuitem"><a class="menu" href="">Contacts</a></td>

</tr>

</table>

</td>

style.css

td.menuitem { vertical-align: middle; text-align: center; width: 20%;

background-image: url(menuitem_bg.jpg); background-repeat: no-repeat; background-position: right;

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]