«Единственный способ творить великие дела – это любить то, что ты делаешь»
JavaScript
site.komp36.ru Создание сайтов. Твой сайт фотографа Что есть на сайте? Несколько фото галерей: свадебная, постановочная съемка, love story, детские фото. Договор на фотосъемку, прайс-лист.
site.komp36.ru Продающий лендинг «Установка и продажа окон» Установка и продажа окон, установка дверей, перегородок. Одностраничный продающий сайт. Заявки прямо с сайта
site.komp36.ru Универсальный лендинг. Любая тема сайта - 4900 руб. Лендинг адаптируется под любую тему: ремонт, отделка, продажа окон, дверей, лестниц, мебели и многое другое
site.komp36.ru Создание сайтов. Сайт сервисного центра. Сайт компании. Новости и отзывы. Несколько прайс-листов – под каждый отдельная страница. Возможность размещения статей


Игра «Морской Бой» на JavaScript: Простая Игра и Игра для Двоих



Далее на странице...

Window - это основной объект JavaScript. И он же глобальный объект браузера. Window также может рассматриваться как корень объектной модели документа DOM.

window.document или просто document - это основной объект визуализированной/видимой  объектной модели документа DOM. document содержит HTML-структуру.

window.screen или просто screen - это небольшой информационный объект о физических размерах экрана. Немного о screen.

В консоли при помощи команды console.dir можно посмотреть все свойства любого объекта.

Далее пойдет речь о размерах элементов DOM.



Cвойства clientWidth и clientHeight

Свойства clientWidth и clientHeight - обозначают размер элемента внутри рамок border.

Это ширина и высота содержимого вместе с полями padding, но без прокрутки.

HTML-код

<!DOCTYPE html>
<html lang="ru">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
   	<title>JavaScript</title>
   	<link rel="stylesheet" href="style.css">
  </head>
  <body>
 <!--noindex-->   
    <div class="box">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minus inventore, repudiandae laborum dolorem fuga repellendus dignissimos excepturi error sapiente laudantium, doloribus ut dolores ad autem quidem quis accusamus voluptas quae. Quam iusto sapiente quaerat dolorum blanditiis accusantium eligendi quas assumenda. Nostrum, ipsa dolorum repellat rem laborum voluptatibus ratione officiis illo quisquam optio perspiciatis accusamus tenetur, voluptate eligendi quibusdam incidunt, dolore repellendus error quis itaque libero nobis, provident voluptates dolor. Facilis exercitationem itaque eos consectetur vel incidunt nostrum cupiditate illo sunt, tenetur nihil laboriosam ratione in quas blanditiis natus doloremque aliquid rem nam, similique illum vero consequuntur labore sapiente? Perferendis veniam provident magni repellendus ad veritatis quod unde vero animi, aut quis suscipit ipsa asperiores enim, qui blanditiis ratione accusamus mollitia perspiciatis consectetur officiis eius aliquam. A adipisci at repellat impedit. Eaque ad, eum laudantium deserunt. Quis error voluptatem tempora quam ducimus aut, architecto odio voluptatum reiciendis. Atque error, deleniti similique non nam ratione. Perferendis, officiis mollitia laboriosam quam, nisi vel obcaecati vero dicta ducimus dolorum quas, excepturi consequatur fugiat sit minima repellendus quia aliquid numquam id autem unde dolorem quaerat odit. Harum eaque dolor dicta, accusantium deserunt eius deleniti nisi quas assumenda consectetur, odit modi exercitationem, officia doloribus quidem perferendis repellendus quos commodi eveniet cum beatae ea molestiae reprehenderit. Facilis, iste corporis earum. Nemo aliquam architecto error facilis amet, nihil sed excepturi necessitatibus rem delectus, omnis ipsa ut temporibus expedita quas natus ipsum fuga eum harum nisi facere cupiditate reiciendis! Id magnam blanditiis eligendi, nulla accusamus magni. Placeat quidem repellat explicabo minus esse numquam velit, accusantium a, cumque aperiam iure alias natus aliquam minima quas possimus assumenda quod, doloremque saepe perspiciatis nulla vero quibusdam voluptates. Nihil, aliquam maiores earum non similique quos? Quos cumque est illum assumenda perspiciatis, obcaecati atque doloribus cum soluta sit qui, deserunt reprehenderit quibusdam ratione odio similique a, quod cupiditate! Accusamus hic minus numquam, repellendus, ullam beatae itaque ad laudantium doloremque dolore error praesentium provident consequuntur consectetur culpa necessitatibus facere. Adipisci dignissimos fugiat consequuntur temporibus magni eius deleniti. Reiciendis, distinctio nesciunt modi repellendus aperiam quia dolore porro, pariatur eos. Ducimus iusto officiis cupiditate, error modi eius, dolores maxime a eaque tenetur? Quae nulla reprehenderit voluptatibus fugit cum distinctio hic libero maiores fugiat, atque amet qui cupiditate pariatur quaerat illo similique sunt doloribus modi reiciendis blanditiis in voluptatem esse. Hic voluptates atque beatae nihil ad perspiciatis repudiandae, consequuntur non nesciunt maiores alias eos odit, officiis inventore eaque aperiam voluptatibus. Fugiat eum esse nam saepe soluta ab accusamus nemo fuga aut, distinctio officia atque. Voluptatibus perspiciatis magni harum incidunt aliquid temporibus quas labore exercitationem. Alias mollitia magnam sequi, totam corrupti temporibus facere praesentium iste velit aliquam minus enim cupiditate rem. Iste molestiae maxime illum non accusantium voluptas blanditiis, quod consectetur, quidem est culpa voluptates obcaecati, ipsum ab natus vitae! Consectetur animi quae tenetur odio repellendus natus tempora ipsa culpa, inventore accusamus ea corporis doloribus id harum voluptatem, praesentium temporibus, explicabo totam mollitia molestiae est iusto vel repellat molestias. Repellat placeat voluptas quaerat eaque, illum dicta rerum numquam sunt!</div><!--/noindex-->
    <button>Click</button>
    
	<script src="script.js"></script>
  </body>
</html>

 

Пример №1 - НЕТ свойства box-sizing: border-box

CSS-код

.box {
  /* box-sizing: border-box; */
  width: 400px;
  height: 350px;
  overflow: scroll;
  margin: 0 auto;
  margin-top: 50px;
  padding: 10px;
  border: red solid 5px;
}
button {
  width: 100px;
  height: 40px;
  display: block;
  margin: 0 auto;
  margin-top: 20px;   
}

JavaScript-код

'use strict';

const box = document.querySelector('.box');

console.log(box.clientWidth);
console.log(box.clientHeight);

Результат в Браузере

Файл CSS: width: 400px; height: 350px; padding: 10px.

В результате: offsetWidth: 405 и offsetHeight: 355.

Ширина и высота содержимого вместе с полями padding, но без прокрутки.

Размеры содержимого блока увеличиваются на ширину полей padding, но также учитывается, что в эти размеры НЕ входит полоса прокрутки, шириной 15px.

Ширина полосы прокрутки в разных браузерах может различаться. Результат браузер Ghrome: clientWidth: 403 и clientHeight: 353.

clientWidth/Height + box-sizing

В CSS-файле свойство box-sizing: border-box присутствует.

Пример № 1.2 - ЕСТЬ свойство box-sizing: border-box

CSS-код

.box {
  box-sizing: border-box;
  width: 400px;
  height: 350px;
  overflow: scroll;
  margin: 0 auto;
  margin-top: 50px;
  padding: 10px;
  border: red solid 5px;
}
button {
  width: 100px;
  height: 40px;
  display: block;
  margin: 0 auto;
  margin-top: 20px;   
}

JavaScript-код

'use strict';

const box = document.querySelector('.box');

console.log(box.clientWidth);
console.log(box.clientHeight);

Результат в Браузере

Файл CSS: width: 400px; height: 350px; padding: 10px; border: 5px.

В результате: clientWidth: 375 и clientHeight: 325.

Размеры содержимого блока НЕ увеличиваются на ширину полей padding, а также учитывается, что в эти размеры НЕ входит полоса прокрутки, шириной 15px и размер границы 5px с каждой из сторон, то есть еще - 10px для clientWidth и clientHeight.

Ширина полосы прокрутки в разных браузерах может различаться. Результат браузер Ghrome: clientWidth: 373 и clientHeight: 323.

Cвойства offsetWidth и offsetHeight

Свойства offsetWidth и offsetHeight - содержат полный размер элемента, его внешнюю ширину и высоту, включая рамки.

Пример №1 - НЕТ свойства box-sizing: border-box;

CSS-код

.box {
  /* box-sizing: border-box; */
  width: 400px;
  height: 350px;
  overflow: scroll;
  margin: 0 auto;
  margin-top: 50px;
  padding: 10px;
  border: red solid 5px;
}
button {
  width: 100px;
  height: 40px;
  display: block;
  margin: 0 auto;
  margin-top: 20px;   
}

JavaScript-код

'use strict';

const box = document.querySelector('.box');

console.log(box.offsetWidth);
console.log(box.offsetHeight);

Результат в Браузере

Файл CSS: width: 400px; height: 350px; padding: 10px; border: 5px.

В результате: offsetWidth: 430 и offsetHeight: 380.

Полный размер элемента вместе с полями padding + границы.

offsetWidth/Height + box-sizing

Если в CCS-файле со стилями есть свойство box-sizing: border-box, то в результате значения свойств offsetWidth/offsetHeight такие же, как и у width и height: offsetWidth: 400; offsetHeight: 350.

Результат в Браузере

Свойства scrollWidth и scrollHeight

Свойства scrollWidth и scrollHeight – это аналоги свойств clientWidth и clientHeight, но с учётом прокрутки.

Если свойства clientWidth и clientHeight относятся только к видимой области элемента, то scrollWidth и scrollHeight добавляют к ней прокрученную область (которую не видно) по горизонтали и по вертикали.

CSS-код

.box {
  /* box-sizing: border-box; */
  width: 400px;
  height: 350px;
  overflow: scroll;
  margin: 0 auto;
  margin-top: 50px;
  padding: 10px;
  border: red solid 5px;
}
button {
  width: 100px;
  height: 40px;
  display: block;
  margin: 0 auto;
  margin-top: 20px;   
}

JavaScript-код

'use strict';

const box = document.querySelector('.box');

console.log(box.scrollWidth);
console.log(box.scrollHeight);

Результат в Браузере

Файл CSS: width: 400px; height: 350px; padding: 10px.

clientWidth: 405 и clientHeight: 355.

scrollWidth: 405 и scrollHeight: 1298.

scrollHeight: 1298полная внутренняя высота элемента, включая прокрученную область.

scrollWidth: 405полная внутренняя ширина, в данном случае прокрутки нет, поэтому она равна clientWidth.

scrollWidth/Height + box-sizing

CSS-код

.box {
  box-sizing: border-box;
  width: 400px;
  height: 350px;
  overflow: scroll;
  margin: 0 auto;
  margin-top: 50px;
  padding: 10px;
  border: red solid 5px;
}
button {
  width: 100px;
  height: 40px;
  display: block;
  margin: 0 auto;
  margin-top: 20px;   
}

Результат в Браузере

clientWidth: 375 и clientHeight: 325.

scrollWidth: 375 и scrollHeight: 1406.

scrollHeight - Распахнуть элемент на всю высоту

Свойства scrollWidth и scrollHeight можно использовать, чтобы  «распахнуть» элемент на всю ширину/высоту.

JavaScript-код

'use strict';

const box = document.querySelector('.box'),
      btn = document.querySelector('button');

btn.addEventListener('click', () => {
    box.style.height = box.scrollHeight + 'px';
});

Результат в Браузере

Свойства scrollLeft и scrollTop

Свойства scrollLeft и scrollTopширина и высота прокрученной в данный момент части элемента слева и сверху.

JavaScript-код

'use strict';

const box = document.querySelector('.box'),
      btn = document.querySelector('button');

btn.addEventListener('click', () => {
    console.log(box.scrollTop);
});

Результат в консоли

0
200
500

Результат в Браузере

Каждый раз, при клике по кнопке в консоли мы будем видеть, сколько текста прокручено/прочитано внутри элемента box.

document.documentElement - Ширина окна браузера

Рассмотренные выше свойства можно использовать, чтобы найти ширину окна браузера или узнать всю высоту страницы, с учётом прокрутки.

С позиции HTML, документ – это document.documentElement.

Свойства clientWidth и clientHeight для document.documentElement– это ширина и высота видимой области окна.

Результат в Браузере

JavaScript-код

'use strict';

console.log(document.documentElement.clientWidth);

Результат в консоли

1349

1349 – это ширина видимой области окна у экрана с разрешением 1366x768.

scrollLeft и scrollTop - Можно изменять

Свойства scrollLeft и scrollTopможно изменять.

В отличие от свойств, рассмотренных выше, значения scrollLeft и scrollTop можно изменять.

И браузер выполнит прокрутку элемента.

Пример с консолью

document.documentElement.scrollTop

900

Для примера нужно перейти на произвольную веб-страницу, немного прокрутить ее вниз и выполнить в консоли document.documentElement.scrollTop.

Допустим, в результате мы получили 900px.

Если после этого для document.documentElement.scrollTop присвоить значение 0, то браузер выполнит прокрутку страницы вверх и в консоли будет 0.

document.documentElement.scrollTop = 0

0

scrollBy и scrollTo - Прокрутка страницы

Обычные элементы можно прокручивать, изменяя scrollTop и scrollLeft.

Метод window.scrollBy принимает два аргумента и прокручивает страницу относительно её текущего положения.

window.scrollBy(x,y);

Пример с консолью

window.scrollBy(0, 700)

Этой командой браузер выполнит прокрутку страницы вниз (по оси y) на 700px относительно её текущего положения.

Метод window.scrollTo принимает два аргумента и прокручивает страницу на абсолютные координаты.

window.scrollTo(pageX,pageY);

Левый верхний угол браузера имеет указанные координаты относительно левого верхнего угла документа.

Пример с консолью

window.scrollTo(0, 300)

Прокрутка вниз на 300px, если мы находимся вначале страницы. Или прокрутка вверх (если мы находимся в середине/внизу веб-документа) до положения 300px относительно верхнего края окна браузера.

Метод getBoundingClientRect - Координаты элемента

Метод Element.getBoundingClientRect() возвращает размер элемента и его координаты относительно окна.

JavaScript-код

'use strict';

const box = document.querySelector('.box');

console.log(box.getBoundingClientRect());

Результат в Браузере

Результат в консоли

DOMRect {x: 190.5, y: 50, width: 430, height: 380, top: 50, …}
bottom: 430
height: 380
left: 190.5
right: 620.5
top: 50
width: 430
x: 190.5
y: 50
.
.
.

Обратить внимание: свойство right метода getBoundingClientRect() возвращает расстояние от левой границы окна браузера до правой границы элемента.

В то время как CSS-свойство right устанавливает расстояние от правого края окна браузера до правой границы элемента.

То же самое можно сказать о свойстве bottom метода getBoundingClientRect() и CSS-свойстве bottom.

getComputedStyle - Фактическое значение свойства

Метод getComputedStyle - возвращает фактическое значение CSS-свойств.

Их можно увидеть в Инструментах разработчика - вкладка Elements -> Computed.

Здесь собраны все стили, которые применились к элементу: не только те, которые указали для элемента, но и те, которые добавились к элементу из наследуемых свойств, а также свойств по умолчанию в браузере. 

CSS-свойсва Elements -> Computed - нельзя изменить.

JavaScript-код

'use strict';

const box = document.querySelector('.box');

const style = window.getComputedStyle(box);

console.log(style);

console.log(style.display);

Результат в Браузере

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

Также есть возможность получить значение какого-либо одного свойства.

getComputedStyle - Стили псевдоэлементов

В JS нельзя получить сам псевдоэлемент, но есть возможность работать со стилями псевдоэлементов.

Метод getComputedStyle может принимать 2 аргумента и, таким образом, позволяет получить стили псевдоэлементов.

getComputedStyle(element, [pseudo]);

element - элемент, значения для которого нужно получить.

pseudo - указывается, если нужен стиль псевдоэлемента. Не обязательный аргумент.

Читайте также...

site.komp36.ruТвой сайт фотографа. Создание сайтов Что есть на сайте? Несколько фото галерей: свадебная, постановочная съемка, love story, детские фото. Договор на фотосъемку, прайс-лист.
site.komp36.ru Акция Как начать свое дело? Свой сайт «Укладка плитки» 9 000 руб. Лендинг адаптируется под любой вид отделочных работ, продажу товаров или услуг. Сайт поможет найти новых клиентов
site.komp36.ru Акция Продающий лендинг «Установка и продажа окон» 9 000 руб. Одностраничный продающий сайт. Установка и продажа окон, установка дверей, перегородок. Заявки прямо с сайта

Отзывы и комментарии:

Комментариев нет...

Оставить отзыв:

Ваше Имя:

Текст комментария:

Ответьте на вопрос:

Сколько дней в Високосном году?


Рунет - Часть 5
Cвойства clientWidth и clientHeight - Размеры элементов DOM
577
Методы объекта ClassList - Работа с классами - Свойство length
891
Делегирование событий - Отслеживание событий на множестве элементов
2893
Пример создания табов в JavaScript - Работа с проектом
964
Методы setTimeout, setInterval и clearInterval – Синтаксис
714
Работа с датами - Методы объекта Date. 1970 год. Число миллисекунд
581
Таймер обратного отсчета – Остаток времени до полуночи
1279
Вызов и закрытие модального окна - Триггеры и data-атрибуты
4308
Открытие модального окна через промежуток времени и в конце страницы
534
Функции-конструкторы - Прототип объекта. Свойство prototype
234
Контекст вызова функции this - Методы call, apply и bind
289
Контекст вызова в обработчиках событий – this в стрелочной функции
291
Объявление и наследование классов - Свойство constructor
158
Тематические публикации
site.komp36.ru Как начать свое дело? Свой сайт «Укладка плитки» 9 000 руб. Лендинг адаптируется под любой вид отделочных работ, продажу товаров или услуг. Сайт поможет найти новых клиентов
site.komp36.ru Продающий лендинг «Установка и продажа окон» 9 000 руб. Одностраничный продающий сайт. Установка и продажа окон, установка дверей, перегородок. Заявки прямо с сайта
Популярные заметки
Последние заметки