Здесь собраны дополнения к книге
«Самоучитель HTML». Идеи, вопросы, которые не вошли в книгу или появились
после ее выхода (Важно! Последняя редакция этой книги вышла в 2002 году). Кроме того, как ни странно, остается актуальной (частично) статья «Снова о HTML». В ней обсуждаются извечные вопросы
«С чего начать?» и «Что делать дальше?».
Для того чтобы показать исходный код HTML на этой странице, часть угловых
скобок была заменена спецсимволами: < — левая скобка и > — правая скобка. Копируйте из текста страницы код действующего примера, а не листинг. Если надо использовать листинг -
заменяйте в нем эти спецсимволы обратно на угловые скобки.
В главе 6 (стр. 145) рассказывалось о рисунках-сетках.
Их можно использовать для создания фона в таблицах. Если таких рисунков на одной странице несколько,
их присутствие может тормозить работу броузера (прокрутка будет выполняться с замедлением).
В этом случае рекомендуется использовать рисунки-сетки большего размера, т.е.
не 2×2 пиксела, а 8×8 или 10×10 пикселов. Это решает проблему.
Рисунки-сетки используются для создания эффекта полупрозрачности,
как в этой GIF-анимации:
При написании кода HTML для Интернета ни в коем
случае НЕ ИСПОЛЬЗУЙТЕ атрибут FACE элемента FONT или
свойство FONT-FAMILY в
каскадных таблицах стилей. Дело в том, что шрифты с одинаковыми названиями могут содержать
различные таблицы символов. И если у вас при отладке русские буквы будут показаны правильно,
то это не значит, что у всех пользователей с помощью одноименного шрифта
можно будет читать кириллицу. Проблемы чаще всего возникают на компьютерах, где установлено
мало программ, а, следовательно, мало шрифтов (например, в компьютерных классах или в офисах).
В любом случае проконтролировать это нельзя, так что не рискуйте. Конечно, если на странице
используется только латиница, искажений букв быть не должно (хотя кто знает, как там у них
в Китае это увидят…). Если очень хочется набрать какую-нибудь надпись
, делайте рисунок. При современных приемах оптимизации графики это уже не проблема.
Из читательской почты:
«Здравствуйте, уважаемый Алексей! Прочитав Вашу книгу "Самоучитель HTML", стал широко использовать
WordArt для создания кадров анимированных GIF-файлов. Однако хотел бы заметить, что намного проще вместо
клавиши Print Screen и инструментов обрезки графического редактора создать все необходимые кадры в
одном документе, а затем сохранить его как Web-страницу (благо, Word это позволяет). В результате получим папку
с готовыми кадрами, которые уже можно скомпоновать в GIF Construction Set. С уважением, Владимир».
Спасибо, Владимир, за отличную идею! Только вместо морально устаревшего (но любимого мной)
GIF Construction Set я бы порекомендовал все-таки пользоваться такой программой, как Ulead GIF Animator (или аналогичной по возможностям).
Потому что она, например, выполняет оптимизацию графики.
Из читательской почты: «Я купила вашу прекрасную книгу "Самоучитель HTML". Я внимательно читаю Вашу книгу и, у меня возникают разного рода вопросы. Например, в гл.2 (стр.35) Вы пишете, что "...в 1996 году появился HTML версии 3.2. Это было новаторское решение, достаточно упомянуть, что в спецификацию языка были введены фреймы...", а на стр. 36: "Интересно, например, что новаторское решение - фреймы, - которое так полюбилось многим разработчикам, не было включено в спецификацию 3.2"».
Да, каюсь, перехвалил я версию 3.2. На самом деле в официальную спецификацию HTML 3.2 фреймы включены не были, но броузерами в то время они уже поддерживались, быстро вошли в моду и стали активно применяться. Именно это я и хотел подчеркнуть на стр. 35. Правда, сейчас эти тонкости интересны разве что историкам... А за "прекрасную книгу" спасибо!
Но главная проблема заключается в том,
что отсылка форм по электронной почте вообще работает плохо. Это ненадежно в смысле передачи данных и
неудобно для пользователя, которому приходится работать еще и со своей почтовой программой. В идеале все
должно быть так: нажал пользователь кнопочку "Отослать", и данные из формы улетели по адресу. Иногда еще
добавляют скрипт, который выводит сообщение в маленьком окне: спасибо, мол, форма отправлена
(заказ принят и т.п.) Но для отправки данных необходима специальная программа. Надо проконсультироваться
с провайдером, предоставляет ли он подобные программы, и если предоставляет, как написать вызов этой программы
(сама программа работает на сервере). Тогда этот вызов (длинную и малопонятную строку) надо указать в качестве
значения атрибута action.
Напомню, что «форма» — это общее название. Обычно при помощи элементов форм
делают анкеты (регистрации), бланки заказа, голосования, области для отправки текстовых данных, меню, элементы
навигации и управления страницей, и т.д.
Все примеры кнопок в книге не связаны
с какими-либо скриптами. То есть кнопка нажимается, но никаких действий при этом не выполняется.
Чтобы кнопка заработала по-настоящему, для нее надо предусмотреть скрипт. Для кнопок надо использовать
событие onClick (пишется именно так, с заглавной буквой C внутри), которое запускает скрипт.
Кнопка на основе элемента INPUT (например, для перехода на сайт с прогнозом погоды и красивыми фото) делается так:
Тут, обратите внимание, используются РАЗНЫЕ типы кавычек, чтобы не было путаницы с параметрами.
Если надо сделать кнопку с рисунком вместо надписи, используйте такой шаблон:
В элементе BUTTON атрибут onClick можно (и нужно) использовать точно так же.
Не путайте эти кнопки с другими, которые делаются в виде рисунка, и для программирования которых
используются элементы A и IMG.
В данном примере использованы стили:
yellow — желтый (поверхность кнопок и бегунка)
lime — светло-зеленый (левый и верхний край кнопки)
green — зеленый (левый и верхний край кнопки внутри)
red — красный (правый и нижний край кнопки внутри)
maroon — каштановый (правый и нижний край кнопки)
black — черный (стрелки)
aqua — голубой (основание полосы прокрутки)
Надеюсь, для вас не составит труда использовать этот шаблон
в своей работе.
Иногда бывает необходимо
заменить рисунок, когда пользователь укажет на него мышью. Например, увеличить какой-нибудь
фрагмент фотографии.
Этот прием использован в статье «Знойные горы Ривена» для рис. 2.
Делается это просто. В секции HEAD страницы необходимо поместить подобный сценарий:
<SCRIPT language="javascript">
// Первый рисунок
ris21 = new Image;
ris21.src = "riven21.jpg";
// Второй рисунок
ris22 = new Image;
ris22.src = "riven02.jpg";
n = 1;
function Ris2(){
if (n == 1) {
n = 2;
document.ris2.src = ris21.src;
}
else {
n = 1;
document.ris2.src = ris22.src;
}
}
</SCRIPT>
Здесь важно разобраться, что можно менять в этом коде, а что - нельзя. Менять можно, кроме размеров рисунка, только имена
файлов, объектов и функций. В данном примере это: riven02.jpg, riven21.jpg, ris21, ris22, ris2, r2, Ris2().
Изменения в алгоритме работы этого фрагмента чреваты. В основном, из-за того, что броузер Netscape не
поддерживает некоторые стили и события. Поэтому приходится помещать рисунок внутрь элемента A,
который позволяет запрограммировать событие onMouseOver и придать курсору вид указующего перста.
Но зато пришлось создать лишнюю метку с именем r2, чтобы щелчок на рисунке не вызывал нежелательных
действий.
Начинается же сценарий с определения источников (файлов) для объектов типа Image для того, чтобы
выполнить их предварительную загрузку (preload). Это необходимо, чтобы реакция при смене картинки была
быстрой.
Кстати, таким способом на многих страницах создают «нажимающиеся» кнопки и меняющие свой вид надписи.
Этот алгоритм давно стал классическим, а все попытки его модернизации приводят
к тому, что в Netscape Communicator он перестает работать. Например, NC не поддерживает атрибут события
onClick для рисунка, а это, вообще говоря, безобразие.
Есть такая волшебная функция blur().
Она позволяет сделать не выбранным какой-либо элемент диалога, например, в форме. Эту функцию удобно использовать
в декоративных целях. Многим не нравится, что рисунки-гиперссылки (элемент IMG внутри элемента A) оконтуриваются пунктирной линией
после щелчка мышью. То же самое относится к активным областям на картах (MAP). Такая пунктирная рамка запрещается, если для соответствующего
элемента задать атрибут события onFocus (функция blur() как раз обеспечивет потерю этого самого фокуса).
Например, для гиперссылки это может выглядеть так:
В картах для каждого элементе AREA надо определить событие onFocus:
<AREA href="файл.html" onFocus="this.blur()"... >
Но хочу напомнить, что такая пунктирная рамка создается не просто так. Она нужна, если компьютер не управляется при помощи мыши
(которая сломалась или отсутствует). Тогда пользователь действует клавишами Tab, Пробел и Enter, а пунктирная рамка,
заменяя указатель, отмечает выбранный элемент на экране. Конечно, сейчас представить компьютер без мыши сложно. Так что решайте сами...
Что же мы видим? Появилась только внешняя рамка. Для каких-то случаев это и годится, но таблица не получилась. Это произошло из-за того, что рамки вокруг таблицы и вокруг ячеек создаются (и задаются) отдельно. Тогда, может, задать стиль и для ячеек? Попробуем.
Рамка получилась, но по понятной причине ее ширина два пиксела, а не один, как мы хотели. Дизайнерам на заметку: цвета каждой части рамки могут задаваться индивидуально. Попробуем убрать стиль из элемента table.
Для внешней таблицы необходимо задать border=0 и цвет фона единственной ячейки, который будет определять цвет рамки (bgcolor="blue"). Для внутренней таблицы необходимо задать width=100% и border=0, а для всех ее ячеек – цвет фона (bgcolor="white"). Толщину рамки будет определять атрибут cellspacing, и вот тут уже можно задать толщину в один пиксел. Вот на какие уловки приходится идти из-за того, что кто-то когда-то схалтурил при разработке HTML!
Если в качестве гиперссылки используется рисунок (элемент IMG находится внутри
элемента A) и всплывающая подсказка, заданная в теге IMG атрибутом alt, не появляется в нужный момент, ее можно задать
с помощью атрибута title тега A.
Можно сделать так, чтобы фон страницы не прокручивался вместе
с содержимым страницы. Для этого в тег BODY добавляется соответствующий атрибут:
<BODY bgproperties="fixed" >
Netscape Communicator не воспроизводит некоторые элементы
форматирования в таблицах. Например, он игнорирует элемент FONT (цвет букв и т.п.), если этот
элемент находится внутри элемента TD. Поэтому при использовании таблиц надежнее задавать формат текста при помощи
стилей (для элемента TD и аналогичных).
Если Вы используете MS Word
для создания Web-страниц, рекомендую по окончании работы открывать эти страницы в HTML-редакторе
Macromedia Dreamweaver и применять команду Убрать WordHTML. Редактор удалит лишние теги, которые
не являются необходимыми (а часто только мешают просмотру), и код страницы станет компактнее
(его объем может уменьшиться в несколько раз!).
Использование файлов различных типов
для загрузки и просмотра.
Если в гиперссылке стоит ссылка на файл определенного типа, то броузер будет реагировать на эту
ссылку соответствующим образом.
На загрузку влияет тип файла, поэтому то, что вы хотите дать загрузить, должно иметь подходящий тип.
Самое лучшее - выкладывать архивы типа ZIP, потому что любой броузер активизирует для них процесс загрузки,
а любой пользователь сумеет их распаковать. Такие типы документов, как TXT (текстовые документы),
PDF (документы в формате Acrobat Reader), DOC (документы Word) или XLS (документы Excel),
Internet Explorer отображает сразу в открытом виде (он это умеет), а что будут делать другие броузеры,
надо проверять. Крупные рисунки в формате TIF, BMP и т.п. я выкладывать не рекомендую, т.к. они очень долго
загружаются. Используйте формат JPG или GIF и старайтесь укладывать один рисунок в 25-50 Кбайт,
а если надо предложить для скачивания большие файлы BMP, TIF или PDF - пакуйте их в ZIP. Делаете
обычную гиперссылку, только в ссылке указываете файл с расширением zip (href="file.zip").
Вопрос: Что это за хосты и хиты такие?
Если счетчик визитов на странице подсчитывает ХОСТЫ, то он подсчитывает количество компьютеров,
с которых происходит обращение к данной странице. Компьютер идентифицируется в Интернете по специальному
номеру, который называется IP-адрес. Для некоторых компьютеров этот адрес всегда один и тот же, а для других он
может меняться при разных сеансах связи. Последнее обстоятельство хорошо известно изготовителям счетчиков,
поэтому на компьютере пользователя иногда оставляется некая «шпионская» информация, чтобы повторные
посещения не учитывались счетчиком. Эта информация хранится в кэше броузера. Очистив кэш броузера, можно
стереть эту «шпионскую» информацию, и повторное обращение к странице вызовет увеличение значения
счетчика (правда, не всякого) . Если же счетчик подсчитывает ХИТЫ, то учитываются любые обращения к странице,
и иногда бывает даже так, что если пользователь просто нажимает кнопку Обновить в броузере, счетчик
увеличивает свое значение. Поэтому при подсчетах визитеров количество ХИТОВ обычно больше количества ХОСТОВ.
Вопрос: Можно ли сделать счетчик или
гостевую книгу средствами HTML?
Ни счетчик, ни гостевую книгу (а также форум, чат, анкету, голосование, интернет-магазин и т.п вещи)
нельзя сделать только при помощи HTML. Для этого необходимы программы, которые должны быть отлажены и
размещены на том сервере, где находится ваша страница. Такие программы пишут на языках Java, Perl, PHP и т.д.
В Интернете можно найти много сайтов, посвященных программированию на этих языках, и даже доступны
готовые программы. Но программирование - дело не очень простое, поэтому лучше вначале посмотреть сайт
своего провайдера: может быть провайдер предлагает уже готовое отлаженное решение. Тогда
достаточно ВНИМАТЕЛЬНО ознакомиться с инструкцией и и разобраться, как разместить на своих страницах
необходимый код. Счетчик уж точно можно получить бесплатный. Есть множество серверов
(например, www.thecounter.com), которые предоставляют такую услугу, достаточно хорошо поискать в Интернете.
Если же вы тверды в своем намерении заняться программированием, то начните с выяснения
вопроса, какие системы программирования поддерживает ваш провайдер. Если, скажем,
поддерживает PHP3 — это одно дело, а если PHP5 — совсем другое.
Вопрос: Как создать гиперссылку
на файл, который находится на жестком диске C?
Атрибут href в гиперссылке A записывается таким образом:
href="file:///C|/papka/fail.htm"
(где papka и fail - имена папки и файла)
Для удобства работы лучше, правда, не использовать имена дисков, а делать обычные ссылки
на файлы, которые находятся в «текущей» папке вместе со HTML-страницей или в той папке,
которая вложена в «текущую».
Вопрос: А может, мне свой робот написать?
Сейчас, говорят, все пишут...
Мой вам совет: плюньте и выкиньте из головы. Здесь нет никакой проблемы. Оставьте эту
«забаву» для крутых профессионалов, пусть у них голова болит.
Вопрос: А как сделать мигающий текст или летающую надпись?
Мигающий текст можно сделать с помощью программы на JavaScript, с помощью GIF-анимации
(самое простое!), или с помощью флэш-анимации. Летающую надпись - с помощью JavaScript
(работающих примеров в Сети множество). Кроме того, Internet Explorer поддерживает элемент бегущей
строки MARQUEE, см. в книге стр. 94 (кстати, произносится это слово «марки», с ударением на «и»).
Вопрос: Я так и не понял, что же такое метка?
Попробую объяснить еще раз (в книге см. стр. 74). Сама метка — это элемент A, состоящий из одного тега и имеющий
атрибут name (имя). Вот пример такой метки с именем met1:
<A name="met1">
Метки вставляются в текст страницы, и они не заметны при просмотре в броузере.
На странице не должно быть двух меток с одинаковыми именами. Обычно метки ставят перед
заголовками разделов большой страницы, перед рисунками или перед таблицами. Тогда по специальной гиперссылке
можно перейти точно к заголовку, рисунку или таблице, а не к началу страницы, как это обычно бывает.
Ссылка на метку делается обычная, но с небольшим дополнением: в адрес надо добавлять символ
«крестик» и имя метки. Если ссылка указывает на метку, которая находится на той же странице,
это делается так:
<A href="#met1"> Текст ссылки <A>
Если ссылка ведет на другую страницу, то надо, естественно, указывать и имя файла этой
страницы. Например, так:
<A href="fail.htm#met1"> Текст ссылки <A>
На этой странице с помощью меток сделаны ссылки на разделы.