Как стать автором
Обновить

Блочная модель и выделение текста в браузерах

Кривое выделение текста
Все мы с этим сталкивались, не правда ли?
Когда хочешь выделить текст, а браузер как будто сопротивляется.
Под катом- объяснение причины подобного поведения браузеров и один из путей решения этой проблемы.

Определение положения выделения


Выделять текст на основе визуальной картинки- слишком затратная операция, и поэтому современные браузеры при выделении текста опираются на DOM модель. Opera на движке Presto- исключение, в ней использовались другие алгоритмы, позволяющие выделять текст без траты нервных клеток, но, к сожалению, в Opera Next этот механизм не был воспроизведён.

Заглянем в веб- инспектор и видим стандартную картину:

Блоковая модель записи на хабре

Обычное дело, отступ многих блоков задаётся одной обёрткой, простая экономия времени верстальщика. К чему это приводит?
При выделении браузер находит верхний слой с текстом. При движении курсора за пределы блока браузер выделяет текст выше/ниже по DOM дереву. А ведь DOM далеко не всегда совпадает с отображаемой иерархией элементов! Вот и получается, что поведение браузеров при выделении текста не соответствует ожидаемому.

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

Очевидный выход- задавать отступы непосредственно блокам с контентом. Это сложнее, чем задание отступа у обёртки, но сэкономит немного нервов вашим посетителям.

Бонус
Небольшой фикс для Хабра, решающий вышеозначенную проблему через юзерстили.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.