
getBoundingClientRect()
после инвалидации лэйаута занимает больше времени:Size: a a a
getBoundingClientRect()
после инвалидации лэйаута занимает больше времени:getBoundingClientRect()
всё равно, похоже, медленное ↓. Поэтому лучше его кешировать.lodash-webpack-plugin
↓babel-plugin-lodash
. Он выбрасывает из Lodash те методы, которые вы не вызываете. Я писал про него раньше_
с кучей методов, чем когда я 1) импортирую каждый метод в отдельности и 2) при взгляде на метод не могу сразу понять, он мой или «лодэшевский»_.forEach
или _.flatten
для меня считывается проще, чем просто forEach
или flatten
IntersectionObserver
— АПИ, которое помогает определять, когда элемент пересекает видимую область экрана или другой элемент. Обнаружил две вещи насчёт него:isIntersecting
в колбеке observer-а:const observer = new IntersectionObserver(myCallback);
observer.observe(document.querySelector('#target'));
function myCallback(entries) {
// entries[0].isIntersecting → true or false
}
<div class="a">
, а в другом — <div class="b">
, и вы хотите определять, когда они пересекутся, то этого не получится. Пересечения двух элементов будут ловиться, только если один элемент — потомок другого:const observer = new IntersectionObserver(
myCallback,
{ root: document.querySelector('.a') }
);
observer.observe(document.querySelector('.b'));
function myCallback(entries) {
// Если .b — не потомок .a, то колбек
// вызовется только один раз
// с entries[0].isIntersecting === false
}