diff --git a/scroll-animation/index.html b/scroll-animation/index.html new file mode 100644 index 0000000..7f2e1d0 --- /dev/null +++ b/scroll-animation/index.html @@ -0,0 +1,26 @@ + + + + + + + Scroll Animation + + +

Scroll to see the animation

+

Content

+

Content

+

Content

+

Content

+

Content

+

Content

+

Content

+

Content

+

Content

+

Content

+

Content

+

Content

+

Content

+ + + diff --git a/scroll-animation/script.js b/scroll-animation/script.js new file mode 100644 index 0000000..f021563 --- /dev/null +++ b/scroll-animation/script.js @@ -0,0 +1,19 @@ +const boxes = document.querySelectorAll('.box') + +window.addEventListener('scroll', checkBoxes) + +checkBoxes() + +function checkBoxes() { + const triggerBottom = window.innerHeight / 5 * 4 + + boxes.forEach(box => { + const boxTop = box.getBoundingClientRect().top + + if(boxTop < triggerBottom) { + box.classList.add('show') + } else { + box.classList.remove('show') + } + }) +} \ No newline at end of file diff --git a/scroll-animation/style.css b/scroll-animation/style.css new file mode 100644 index 0000000..a0e7490 --- /dev/null +++ b/scroll-animation/style.css @@ -0,0 +1,47 @@ +@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap'); + +* { + box-sizing: border-box; +} + +body { + background-color: #efedd6; + font-family: 'Roboto', sans-serif; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + margin: 0; + overflow-x: hidden; +} + +h1 { + margin: 10px; +} + +.box { + background-color: steelblue; + color: #fff; + display: flex; + align-items: center; + justify-content: center; + width: 400px; + height: 200px; + margin: 10px; + border-radius: 10px; + box-shadow: 2px 4px 5px rgba(0, 0, 0, 0.3); + transform: translateX(400%); + transition: transform 0.4s ease; +} + +.box:nth-of-type(even) { + transform: translateX(-400%); +} + +.box.show { + transform: translateX(0); +} + +.box h2 { + font-size: 45px; +}