Запутался в getBoundingClientRect

Запутался в функции getBoundingClientRect() в Javascript.

Согласно официальному документу, если const rect = getBoundingClientRect();, то имеем

rect.width = rect.right - rect.left;

rect.height = rect.bottom - rect.top;

Означает ли это, что левое правое положение включает левое и правое исключающее, то есть [левое, правое)? В противном случае должно быть

rect.height = rect.bottom - rect.top + 1;

Посмотрите на следующую 5x5 карту. В режиме [inclusive, inclusive] ограничивающий прямоугольник все 1 должен быть left=2, right=4, top=3, bottom=4, и у нас есть

width=right-left+1=4-2+1
height=bottom-top+1=4-3+1

Сетка 5x5

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 1 1 1
0 0 1 1 1

Более конкретный вопрос:

что означает rect.left? Означает ли это расстояние слева от клиентского контейнера или i-го пикселя? А как насчет rect.right?

0 также является ценностью размещения.
Teemu 16.03.2022 10:55

Добавляются дополнительные вопросы.

wstcegg 16.03.2022 11:11

Все это объясняется в документы (вы сказали, что читали?).

Teemu 16.03.2022 11:13

Я просто пришел со страницы документа и запутался. Вопрос ясен? или надо уточнить?

wstcegg 16.03.2022 11:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Рассмотрим это так:

Если серый квадрат представляет пространство экрана, то красный квадрат имеет ограничительную рамку:

{
  x: 1, y: 1,
  width: 3, height: 3
}

Это означает, что у него есть left=1, right=4 и, следовательно, right-left=width

Отлично, я поймал ошибку в своем коде! Есть ли официальный документ, например. где-то в mdn, объясняются такие подробности. Я не могу найти здесь.

wstcegg 16.03.2022 12:54

Лучшее, что я могу найти, это developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_View/… . По сути, вы не должны нумеровать пиксели в уме, но считайте, что пиксели — это квадраты шириной 1, расположенные в целочисленных координатах в непрерывном пространстве. Довольно часто для координат объекта на экране используются десятичные значения. Тогда пиксели - это всего лишь приближение для целей отображения.

julien.giband 16.03.2022 14:25

Точнее: пиксели как единица измерения (px) — это не то же самое, что настоящие пиксели на вашем дисплее. Последние представляют собой дискретные квадраты, что и приводит к вашим первоначальным рассуждениям. Первые представляют собой просто координаты в непрерывном пространстве, что становится более очевидным при увеличении масштаба (измеренные позиции больше не будут соответствовать пикселям экрана и часто будут нецелыми числами).

julien.giband 16.03.2022 17:47

Да, это действительно отличается от системы позиционирования пикселей, которую я использовал раньше. Ваше объяснение действительно полезно.

wstcegg 17.03.2022 13:14

Другие вопросы по теме