• Почему offsetWidth вычисляет ширину HTML без учета полосы прокрутки?

    dedavarera
    @dedavarera Автор вопроса
    Зарубежные друзья помогли разобраться в вопросе:
    https://stackoverflow.com/questions/68544990/why-d...

    Итог: свойство offsetWidth возвращает ширину элемента вместе с шириной полосы прокрутки (если она имеется) для всех элементов (даже для body), кроме document.documentElement.

    Более того, в процессе поиска ответа на вопрос наткнулся еще на одну интересную деталь уже для свойства clientWidth: данное свойство предлагается использовать на document.documentElement в качестве «линейки» для измерения видимой ширины документа (видимой области содержимого) в том числе на популярном обучающем ресурсе.

    Однако хотелось бы акцентировать внимание на том, что clientWidth на document.documentElement — это особый случай, возвращающий именно ширину видимой области содержимого. Если мы установим для document.documentElement свойство width = 180px (или 300px, 400px, 600px — неважно), а затем проверим document.documentElement.clientWidth, то не увидим установленного значения в 180px, а увидим ширину видимой области содержимого (за исключением ширины полосы прокрутки, если она имеется). Свойство offsetWidth в этом случае покажет другое, правильное значение: 180px + внутренние отступы + границы (не включая, как мы уже выяснили, ширину полосы прокрутки, если таковая имеется).
    Ответ написан
    Комментировать