TLDR: одинаковые линии, нарисованные с помощью элемента div
, выглядят по-разному в разных масштабах и размерах окна браузера. Вот пример: imgur , jsfiddle .
Я нарисовал несколько горизонтальных, вертикальных и диагональных линий, используя блоки DIV
. При разных размерах окна браузера, разном масштабе, разном содержании над и под нарисованными блоками эти блоки (одинаковой толщины) выглядят по-разному (некоторые тоньше, другие шире). И наоборот, блоки с различной толщиной могут выглядеть одинаково в некоторые моменты.
Эти картинки показывают, как часть моей схемы выглядит в различных ситуациях.
На мониторе с нормальной плотностью пикселей и с масштабом системы = 100% эта проблема менее заметно или вообще не проявляет себя.
Ранее я видел подобную проблему, когда добавлял узкие (1-2px) div
элементы в качестве горизонтальных разделителей. Некоторые из них иногда исчезали (они были невидимы), когда другие вели себя как обычно на одной странице, если все они были видны, некоторые из них были толще других. Это поведение для каждого элемента меняется, даже когда я открываю / закрываю панель инструментов разработчика Chrome или перетаскиваю угол окна браузера.
Я пытался заменить div
строки элементами svg
, но они также показались странными поведение.
Могу ли я сделать так, чтобы размеры всех элементов были одинаковыми? Я не хотел бы заменять каждый такой элемент растровым изображением.
Аналогичная проблема была описана в этом (не решенном) вопросе (если вы не видите проблему, просто увеличьте масштаб окно результатов в jsfiddle.
Я не могу уловить проблему на других сайтах, например, в Википедии, все горизонтальные линии (под элементами h2, левые разделители меню) выглядят одинаково в любом масштабе. горизонтальные разделители комментариев (узкие серые линии между комментариями) также отлично выглядят , 100 и 110%. Я заметил странную особенность. Если я использую border
для рисования линий вместо background-color
, то эти линии выглядят намного лучше. Этот метод используется на сайтах stackoverflow и wikipedia (Wiki также использует png для левое меню).
Это минимальный воспроизводимый пример, встроенный в фрагменты стека:
.line {
background-color: pink;
/* border-bottom: 1px solid pink; */
margin: 20px auto;
width: 80%;
height: 1px;
}
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>
<div class="line"></div>