Spaces:
Sleeping
Sleeping
| (function () { | |
| const percentageSeen = (element) => { | |
| const parent = document.getElementById("stacked-cards-component-demo"); | |
| const child = element.children.item(0); | |
| // Get the relevant measurements and positions | |
| const parentRect = parent.getBoundingClientRect(); | |
| const childRect = child.getBoundingClientRect(); | |
| if (childRect.bottom < parentRect.bottom) return 100; | |
| if (childRect.top > parentRect.bottom) return 0; | |
| return Math.round( | |
| (Math.abs(parentRect.bottom - childRect.top) / childRect.height) * 100 | |
| ); | |
| }; | |
| const stackedCardsSection = document.getElementById( | |
| "stacked-cards-component-demo" | |
| ); | |
| const stackedCards = document.getElementById("preview-stacked-cards"); | |
| const cardsArray = Array.from(stackedCards.children); | |
| stackedCardsSection.addEventListener("scroll", function () { | |
| const percentageOfSecondCardSeen = percentageSeen(cardsArray[1]); | |
| const percentageOfThirdCardSeen = percentageSeen(cardsArray[2]); | |
| cardsArray[0].children.item(0).style.scale = | |
| 1 - | |
| (0.1 * percentageOfSecondCardSeen) / 100 - | |
| (0.1 * percentageOfThirdCardSeen) / 100; | |
| cardsArray[0].children.item(0).style.opacity = | |
| 1 - | |
| (0.1 * percentageOfSecondCardSeen) / 100 - | |
| (0.1 * percentageOfThirdCardSeen) / 100; | |
| cardsArray[0].children.item(0).style.filter = `blur(${ | |
| (10 * percentageOfSecondCardSeen) / 100 + | |
| (10 * percentageOfThirdCardSeen) / 100 | |
| }px)`; | |
| cardsArray[1].children.item(0).style.scale = | |
| 1 - (0.1 * percentageOfThirdCardSeen) / 100; | |
| cardsArray[1].children.item(0).style.opacity = | |
| 1 - (0.1 * percentageOfThirdCardSeen) / 100; | |
| cardsArray[1].children.item(0).style.filter = `blur(${ | |
| (10 * percentageOfThirdCardSeen) / 100 | |
| }px)`; | |
| }); | |
| })(); | |