Рисование тонкой линии

Суть задачи такова: нарисовать на сайте тонкую линию. Решается она  минимум 2 методами:

  1. Использование однопиксельного изображения размноженного в нужном направлении.
  2. Использование div’a, заполненного цветом.

Как раз во втором методе и скрываются разногласия между браузерами.

Итак, объясню на примере.

Допустим мы рисуем полосу div’ами и задаем ей следующие css-свойства:

div {
width:50px;
height:1px;
background-color:#ff0000;
}

Mozilla, Opera и другие браузеры будут выдавать следующий результат:

линия в Mozilla, Opera и др.

а вот IE выдаст толстую полосу:

линия в IE

Суть этого «бага» заключается в том, что IE по умолчанию выставляет ширину блока под размер шрифта (по моим наблюдениям 14px), т.е. для того что бы Internet Explorer нормально отображал однопиксельную полоску, необходимо в css-свойства блока добавить font-size:1px;

P.S. Еще интересуют дома в Болгарии, но походу до них мну ооочень далеко )

Очередной глюк от IE

Ни для кого не секрет, что браузер Internet Explorer  от всеми любимой компании Microsoft работает с кодом не так как все остальные браузеры. Уж не знаю с чем это связанно, может компания решила выделиться из большинства, но как всегда не смогли что-то сделать без глюков.

В рамках рубрики «Баги IE» я хотел бы освещать все проблемы, на которые я нашел или не нашел решения при разработке проектов. Знаю, что многие баги освещены в сети, но уверен, что далеко не все :)

Начну с косяка с обработкой javascript, который нашел, отлаживая свой новый проект «Психологические тесты».

Пример кода:

if ((!radio[0].checked) && (!radio[1].checked)) { alert(‘Сообщение’); }

Суть проблемы:

У меня есть несколько элементов radio (для выбора ответа в тесте), и если хотя бы одно значение не выбрано то выдается сообщение. В IE если выбрать последний элемент, то сообщение все равно выскочит.

Решение проблемы:

На сколько понял я – IE считает массив элементов не с 0 элемента, а с первого, т.е. будет верным для этого браузера следующий код:

if ((!radio[1].checked) && (!radio[2].checked)) { alert(‘Сообщение’); }

А вообще все больше склоняюсь к тому, чтобы запретить доступ с IE, жаль, что большинство пользователей так не думают.