Главная / Документы / Web-дизайнер / Статьи |
[предыдущая] [следующая]
Слуга двух господ: IE и NN (1 часть)
Да, это - бедный web-дизайнер, которому приходится тратить уйму сил для укрощения и дрессировки страничек, чтобы на них было приятно смотреть и при помощи Internet Explorer, и при помощи Netscape Navigator.Общее правило при написании совместимых страничек звучит так: есть некоторый набор вещей, который можно сделать как в и IE, так и в NN, но только при помощи разных тэгов или разных параметров одного и того же тэга. Причина, по которой мы можем писать совместимые странички, заключается в том, что непонятные для себя тэги и параметры броузер игнорирует.
Установка отступов на страничке
Для примера разберемся с установкой отступов в тэге <body>. Если мы откроем руководство по HTML, которое нам предлагает Microsoft, то прочитаем там, что задать отступы на страничке можно при помощи следующих атрибутов:
Будем последовательны и откроем теперь руководство по HTML со стороны Netscape, где прочитаем, что атрибуты для задания отступов выглядят следующим образом:
А теперь мы напишем код, который задает отступы слева и сверху и корректно показывается как в IE, так и в NN. Вы уже наверно догадались, что он должен выглядеть следующим образом:
<body leftmargin="0", topmargin="0", marginwidth="0" marginheight="0">
Вуа-ля! Все нормально работает. IE видит только свои атрибуты, а NN свои, и всем хорошо :).
Сколько же всего таких хитростей? Неужели их нужно все помнить? Вовсе нет, нужно просто запомнить несколько наиболее употребляемых и уже на стадии проектирования web-сайта отбрасывать возможности, которые невозможно реализовать в обоих броузерах. Да, это конечно немного обидно, но лучше уж мы немного пожертвуем каким-нибудь эффектом, чем оставим огромную часть посетителей за бортом своего сайта. Не правда ли?
Эти возможности лучше не использовать
Вот список возможностей, предоставляемых тем или иным броузером, но которые желательно не использовать (как минимум до появления аналогичного свойства у другого броузера).
Использование атрибута bgproperties=fixed в тэге <body>. Его появление заставляет фоновое изображение оставаться неподвижным, но, к сожалению, данный атрибут поддерживается только IE, начиная с версии 2.
Использование языка VBScript на динамических страничках. Почему? Потому что он абсолютно не поддерживается NN и, по всей видимости, никогда не будет. Да это и не нужно, так как есть JavaScript, предоставляющий те же самые возможности (и даже больше), что и VBScript, но поддерживающийся обоими броузерами.
Использование ActiveX компонентов. Такие странички будут работать исключительно на Windows-платформах.
Использование тэга <iframe> для создания плавающих фреймов - поддерживается исключительно IE4 и выше.
Использование тэга <blink> - мигающий текст. Во-первых, он применим только в NN, начиная с 3-ей версии, а во-вторых, его применение не несет ничего, кроме раздражения и желания моментально уйти со странички.
Использование тэга <marquee> - нежелательно точно по тем же причинам, что и у тэга <blink>. Разница только в том, что он поддерживается только IE.
Применение специфического для NN тэга <multicol>, выводящего текст на странице в несколько вертикальных колонок, наподобие газетных. В настоящее время для этой цели следует пользоваться таблицами.
Указание ширины и высоты изображений в процентах - поддерживается только IE.
Этот список, конечно, не полон, но это основные ошибки. Все, что описано, касается сайта, выставляемого в Internet. Если же Вы делаете сайт для внутренней сети (intranet), то можете использовать все, что Вам заблагорассудится :).
Ну, хорошо, с тем, что не нужно делать, мы уже оэнакомились. А что же все-таки можно делать? На какие моменты следует обратить внимание при изготовлении совместимых web-страничек? Какие уловки при этом используются?Если с самого начала соблюдать некоторые правила при написании страничек, то количество возможных ошибок можно сразу снизить на порядок. Поэтому я, пожалуй, начну со списка этих правил, которые следует научиться соблюдать автоматически, если хочется, чтобы странички любо-дорого смотрелись в любом из броузеров:
<b><i>правильно</i></b>
<b><i>неправильно</b></i>
Бытует мнение, что под IE, странички писать легче, чем под NN. Это верно, но только отчасти. Такое мнение сложилось из-за того, что NN неправильный код не обрабатывает и, соответственно, показывает страничку как есть, т.е. с ошибками. IE поступает по-другому - при обработке неправильного кода он пытается предугадать недостающие тэги или пропущенные параметры.
Например, в большинстве случаев незакрытый парный тэг будет обработан Explorer-ом так, как будто он есть, и не вызовет ошибки, хотя сам код, тем не менее, останется некорректным. Лучше учиться писать корректный код, и тогда нареканий в адрес NN будет гораздо меньше.
Но все же следует признать, что некоторые механизмы рендеринга в Navigatore действительно работают не совсем логично (иногда даже совсем не логично :) и абсолютно не так, как в Explorer-е. В этих случаях приходится просто запоминать глюки и особенности NN, как, впрочем, и IE :)
Особенно много усилий прикладывается при написании совместимых страничек, использующих табличную верстку. Особенностей и приемов здесь вагон и маленькая тележка. Вот об этом мы и поговорим в следующей статье.
Начнем с того, что применяются таблицы для верстки не по своему прямому назначению, а лишь как каркас, который позволяет нам относительно свободно манипулировать блоками информации на нашей страничке. Благодаря именно таблицам мы можем создавать такие эффекты, как верстка в несколько колонок, применение эффектов состыковки картинки и фона, точное позиционирование графики, цветные подложки под текст, тонкие линии на всю ширину или высоту странички и т.д.
При использовании таблиц в качестве каркаса нужно скрупулезно соблюдать несколько правил, позволяющих избежать уже известных проблем:
<table>
<tr>
<td><!-- содержимое таблицы --></td>
</tr>
</table>
Для того, чтобы таблицу можно было использовать в качестве каркаса для странички, в ней нужно прописать нулевые значения атрибутов, задающих толщину рамки и расстояния между ячейками и текстом:
<table border="0" cellspacing="0" cellpadding="0">
Такая таблица будет не видна в броузере, но будет успешно выполнять свои функции. Во время же отладки страницы имеет смысл прописать толщину рамки, равной единице. Это позволит быстро найти ошибку, допущенную при верстке.
Ширина таблицы и ячеек
Как известно, ширину таблицы можно задать либо в абсолютных единицах (пикселях), либо в относительных (проценты). Как, впрочем, и ширину ячейки. Но в отличие от ширины таблицы, которая точно выдерживается обоими броузерами, ширина ячейки подчиняется гораздо более хитрым правилам.
Internet Explorer послушно соблюдает указанную ширину ячейки. Netscape Navigator же принимает указанные значения не более как желаемые рекомендации. Истинную ширину каждой ячейки он рассчитывает после анализа количества текста в соседних ячейках, и в тех, где текста больше, он расширяет ячейку, а где меньше - сужает. Ширина же пустых ячеек стремится к нулю (разумеется, в случае, если весь столбец состоит из пустых ячеек). И, практически, никогда получаемая ширина ячейки не равна значению, указанному в атрибуте width тега <td>.
Из этих рассуждений следует вывод, что использовать атрибут width в качестве надежного средства указания ширины ячейки практически бесполезно. Абсолютно надежным способом для случаев верстки в таблицах с фиксированной шириной является вставка невидимых распорок, получаемых при помощи прозрачного однопиксельного GIF-а. Для "резиновых" таблиц такого надежного способа, к сожалению, нет.
Теперь перейдем к примеру и покажем, как же будет выглядеть код таблицы, использующей распорку для фиксации ширины ячеек. Для простоты напишем код таблицы, состоящей из двух строк и двух столбцов:
<table width="300" border="0"
cellspacing="0" cellpadding="0">
<tr>
<td><img src="/pic/1x1.gif" height="1"
width="100"><br>
<!-- содержимое 1-ой ячейки в первой строке
-->
</td>
<td><img src="/pic/1x1.gif" height="1"
width="200"><br>
<!-- содержимое 2-ой ячейки в первой строке
-->
</td>
</tr>
<tr>
<td><img src="/pic/1x1.gif" height="1"
width="100"><br>
<!-- содержимое 1-ой ячейки во второй
строке -->
</td>
<td><img src="/pic/1x1.gif" height="1"
width="200"><br>
<!-- содержимое 2-ой ячейки во второй
строке -->
</td>
</tr>
</table>
Как видите, в данном случае атрибут width
в тэге <td> не использовался совсем.
Вся работа по фиксации ширины ячейки была
выполнена при помощи однопиксельного GIF-а.
Обратите внимание, что ширина вставки
должна быть одинаковой во всех ячейках
одного столбца. А сумма ширин всех вставок
в одной строке должна равняться общей
ширине таблицы. Кроме того, если Вы
заметили, то после вставки
однопиксельного
В следующей статье мы подробно разберемся с проблемами, возникающими при помещении разрезанного изображения в таблицу.
[предыдущая] [следующая]
Главная / Документы / Web-дизайнер / Статьи |
Webmaster |
Copyright © 2001 Ильнур |