Я недавно задал себе этот вопрос, и, глядя на него через отладчик Chrome, оказалось, что они используют некоторые более продвинутые методы, чем просто разделение экрана на выделенные и невыделенные области.
Первое, на что нужно обратить внимание, - это то, что Google использует 5 фреймов для создания системы обратной связи.
google-feedback-mask-frame
: Используется только для маски, она покрывает весь экран. Я не уверен, почему они решили использовать для этого целый iframe. Но это делается для того, чтобы вы не нажимали ссылки на страницы в режиме обратной связи
google-feedback-screenshot-frame
Я подозреваю, что именно здесь происходит настоящее волшебство. Он содержит копию просматриваемой страницы, но с некоторыми проприетарными тегами HTML (<gft></gft>
), чтобы скрипт мог знать, где находится контент, который можно выделить (изображения, текст, ссылки и т. Д.)
google-feedback-feedback-frame
: Здесь находятся элементы управления для выделенных областей, а также кнопка X для всего виджета.
Чтобы реализовать эффект, Google на самом деле использует несколько разделов, как предлагает @Jani Hartikainen.
На скриншоте ниже вы можете видеть, что, когда у вас есть несколько вариантов выбора, нужно создать довольно много div, чтобы приспособиться к эффекту.
Я уверен, что есть очень сложный алгоритм для определения того, куда делись все div, но это то, что делает разработчика ПО забавным, верно ??
google-feedback-proxy-frame
: имеет элементы управления, которые вы видите внизу справа.
google-feedback-render-frame
: Это немного более таинственное, все, что в нем содержится, это скрипт render_frame.js, который явно запутан и неразборчив.
В заключение, использование разделов - это то же самое, что и в Google, но есть гораздо больше волшебства, которое позволяет им автоматически выделять ссылки и изображения. Если вы узнаете больше, мне тоже интересно, дайте мне знать!