There is a problem with the section (located in the middle of the page, ie, there are the same blocks above / below). I want the moment when this section is visible on the screen, it has a fixed position. But if I scroll up / down 200px, then it becomes static again.
PS The problem is that if I make his position fixed, all the layout moves out.
Tried to make a fixed position using javascript, but the section starts to twitch.
const element = document.querySelector('.list-tools_ul'); let Visible = function (target) { // ΠΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° let targetPosition = { top: window.pageYOffset + target.getBoundingClientRect().top, left: window.pageXOffset + target.getBoundingClientRect().left, right: window.pageXOffset + target.getBoundingClientRect().right, bottom: window.pageYOffset + target.getBoundingClientRect().bottom }, // ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΎΠΊΠ½Π° windowPosition = { top: window.pageYOffset, left: window.pageXOffset, right: window.pageXOffset + document.documentElement.clientWidth, bottom: window.pageYOffset + document.documentElement.clientHeight }; if (targetPosition.bottom > windowPosition.top && // ΠΡΠ»ΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π²Π΅ΡΡ
Π½Π΅ΠΉ ΡΠ°ΠΉΡΠΈ ΠΎΠΊΠ½Π°, ΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΠΈΠ΄Π΅Π½ ΡΠ²Π΅ΡΡ
Ρ targetPosition.top < windowPosition.bottom && // ΠΡΠ»ΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π²Π΅ΡΡ
Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΠΉΡΠΈ ΠΎΠΊΠ½Π°, ΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΠΈΠ΄Π΅Π½ ΡΠ½ΠΈΠ·Ρ targetPosition.right > windowPosition.left && // ΠΡΠ»ΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΏΡΠ°Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΊΠ½Π°, ΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΠΈΠ΄Π΅Π½ ΡΠ»Π΅Π²Π° targetPosition.left < windowPosition.right && (targetPosition.top+targetPosition.bottom)/2<=(windowPosition.top+windowPosition.bottom)/2) { // ΠΡΠ»ΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π»Π΅Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΠΉΡΠΈ ΠΎΠΊΠ½Π°, ΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΠΈΠ΄Π΅Π½ ΡΠΏΡΠ°Π²Π° // ΠΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π²ΠΈΠ΄Π½ΠΎ, ΡΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ return true; } return false; }; // ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈ ΠΏΡΠΎΠΊΡΡΡΠΊΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ window.addEventListener('scroll', function() { let answer=Visible (element); if (answer){ window.addEventListener('scroll', onscrollFun); window.scroll(0,document.querySelector('.big-height-two').offsetTop);//ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ } }); function onscrollFun(e) { let top = window.pageYOffset; let copyThisLength; if (lastScrollTop > top) { console.log('top'); } else if (lastScrollTop < top) { itemsCount--; copyThisLength=-1; if (itemsCount >= 0) { copyThisLength = itemsCount; content[copyThisLength].style.opacity = 1; } while (copyThisLength < content.length - 1) { content[copyThisLength+1].style.top = `${parseInt(content[copyThisLength+1].style.top) + 8}%`; content[copyThisLength+1].style.fontSize=`${parseInt(getComputedStyle(content[copyThisLength+1]).fontSize)-4}px`; if (100-parseInt(content[copyThisLength+1].style.top)<30){ content[copyThisLength+1].style.opacity -= .3; } copyThisLength++; } } lastScrollTop = top; e.preventDefault(); }