У даній статті я розповім вам про основні принципи створення «мультибраузерного» сайту… Під словом «мультибраузерный» сайт я маю на увазі сайт, визначає браузер користувача і залежно від результату, який використовує унікальні цьому браузеру CSS стилі. Так само я розповім про деякі проблеми, які можуть виникнути при роботі з браузерами.
Виходить так, що нам треба? А нам треба зробити так, що б сайт відображався в більшості браузерах по можливості однаково (на жаль, абсолюту не досягти).
Насамперед необхідно визначити, в яких браузерів наш сайт повинен відмінно виглядати. У моєму варіанті це: IE, Opera, Netscape і Opera.
І відразу порада: намагайтеся не використовувати атрибути , перекладіть ці обов’язки на CSS… або на рядкові елементи стилю aka style=»*». Хоча навіть «style» варто використовувати тільки при крайній необхідності.
Для вирішення цієї цікавої завдання я пропоную наступне: використовувати декілька стилів для різних браузерів. Однак, я вам не раджу просто універсально писати, т. к. вийде гірше, але геморою менше:)
Ось кодик, який я написав для свого сайту. Так ми визначаємо з яким браузером ми маємо справу:
function browser_define($agent)
{
if(ereg(‘MSIE ([0-9].[0-9]{1,2})’,$agent)&&!ereg(‘Opera ([0-9].[0-9]{1,2})’,$agent)) $browser=’ie’;
elseif(ereg(‘Opera’,$agent)) $browser=’opera’;
elseif(ereg(‘Netscape/’,$agent)&&ereg(‘Gecko/’,$agent)) $browser=’netscape’;
elseif(ereg(‘Gecko/’,$agent)&&!ereg(‘Netscape/’,$agent)) $browser=’mozilla’;
else $browser=’ie’;
return $browser;
}
Ф-ія повертає ім’я браузера. Використовуємо її так:
Тобто якщо, наприклад, до нас зайшли через IE, то згодовуємо CSS файл по імені ie.css. Можна зробити невелику модернізацію і визначати ще й версію браузера, але я в цьому великого резону не побачив…
Тепер після того, як ми навчилися визначати браузер юзера і використовувати специфічний йому CSS файл, поговоримо про відмінності між цими браузерами.
Ось найбільш важливі нюанси, на які варто звернути увагу:
1) Якщо використовуєте коментарі в CSS файли, то юзайте конструкцію /* коментар */, але ніяк не # та не , т. к. Mozilla і Netscape дивно реагують на них, тому наступний за коментарем елемент стилю просто ігнорується, коли ж в Opera і IE все ОК.
2) Різне відображення тега . В IE він виглядати найбільш презентабельним чином, а от в інших браузерах, він мало того, що негарно виглядає(ІМХО), так він ще й вирівнюється дещо дивно… тобто десь вище, десь нижче. Тому для вирішення цієї проблеми я використовую щодо позиціонування:
position: relative; top: 1px;
Це рятує. АЛЕ! В Opera я помітив таку фішку, що при накладанні на будь-який інший елемент (використовуючи вище написаний код), наприклад на бордюр таблиці, то межі просто стають невидимими:( Вийти з цього становища можна наступним способом: дописати «z-index» і того у нас виходить:
position: relative; top: 1px; z-index: 1;
3) Далі йдуть відмінності в кнопках. Тобто наприклад, десь кнопки текст розташовується вище на 1px, десь нижче. Коротше це неподобство треба відслідковувати. А саме прикольне, що в Opera можливий такий глюк, що при використанні DOCTYPE(хоча багато його не використовують, але без нього валідний код вам буде тільки снитися:)), розміри кнопок дивно відображаються, тобто для дорогий Opera я вказую «height: 14px;», незважаючи на те, що в інших браузерах варто «height: 18px;», який і є реальною величиною.
4) Будьте уважні з розмірами і . Мною було знайдено деякі невідповідність в розмірах браузерів: Netscape і Opera(7.6).
Найцікавіше, що в Opera 8 цього немає!
5) Скорочуйте слова в атрибуті ALT при , так як в Mozilla цей текст «вийде» з-за кордону . Цю фішку я помітив толька в Mozilla, в інших браузерах все було ОК.
6) Далі хочу нагадати, що використання для оформлення скроллбара коду типу:
scrollbar-face-color, scrollbar-shadow-color, scrollbar-highlight color, scrollbar-3dlight-color, scrollbar-darkshadow-color, scrollbar-track-color, scrollbar-arrow-color
Буде відображатися тільки в IE і похідних від нього. Тому не дивуйтеся, що зайшовши в Mozilla замість радісних тонів ви побачите сірий скроллбар(в залежності від теми оформлення)
7) Не юзайте наступний код:
leftmargin, marginwidth, topmargin, marginheight
подібні згодовують нам різні візуальні редактори. Точно знаю про Namo WebEditor(дааавно користувався)
Використовуйте для відступів документа код:
BODY { padding: 0; margin: 0; }
Якщо ж ви хочете зробити відступ у 1px зверху і знизу, то просто напишемо:
BODY { padding: 1px 0 1px 0; margin: 0; }
Ви, напевно, запитаєте «А навіщо margin: 0 потрібен, адже і без нього все нормуль?» А я вам відповім, що це просто необхідно для Mozilla. А то ви будете ламати голосу, чому ж у вас там з’явилися зайві відступи:)
Ось загалом і все… Дерзайте, і у вас все вийде.
P. S. Дана стаття може містити деякі неточності, але суть, я думаю, вам зрозуміла… ?