>  기사  >  웹 프론트엔드  >  JavaScript를 사용하여 페이지 슬라이딩 전환 효과 달성

JavaScript를 사용하여 페이지 슬라이딩 전환 효과 달성

王林
王林원래의
2023-08-09 13:57:152000검색

JavaScript를 사용하여 페이지 슬라이딩 전환 효과 달성

JavaScript를 사용하여 페이지 슬라이딩 전환 효과 달성

현대 웹 페이지 디자인에서 페이지 슬라이딩 전환 효과는 일반적인 디자인 요구 사항이 되었으며, 이는 사용자 경험을 개선하고 페이지 상호 작용성을 높일 수 있습니다. 이 글에서는 JavaScript를 통해 이러한 효과를 얻을 것입니다.

먼저 HTML에 몇 가지 기본 구조와 스타일을 추가해야 합니다. 다음은 간단한 예입니다.

<!DOCTYPE html>
<html>
<head>
    <title>页面滑动切换效果</title>
    <style>
        .page {
            width: 100%;
            height: 100%;
            position: absolute;
            top: 0;
            left: 0;
            display: none;
        }
    </style>
</head>
<body>
    <div class="page" id="page1">
        <h1>页面1</h1>
    </div>
    <div class="page" id="page2">
        <h1>页面2</h1>
    </div>
    <div class="page" id="page3">
        <h1>页面3</h1>
    </div>

    <script src="script.js"></script>
</body>
</html>

CSS 스타일에서는 절대 위치 지정 기능이 있고 기본적으로 표시되지 않는 "페이지"라는 클래스를 정의합니다. HTML에 세 개의 페이지 요소를 추가하고 각각의 ID를 설정했습니다.

다음으로 JavaScript를 사용하여 페이지의 슬라이딩 전환 효과를 구현해 보겠습니다. "script.js"라는 파일을 생성하고 HTML에 포함시킵니다.

스크립트 파일에서는 JavaScript를 사용하여 페이지 표시 및 숨기기를 제어하고 CSS 스타일을 추가하여 슬라이딩 효과를 얻습니다.

document.addEventListener("DOMContentLoaded", function() {
    var pages = document.querySelectorAll(".page");
    var currentPage = 0;
    var isAnimating = false;

    // 初始化当前页面
    pages[currentPage].style.display = "block";

    document.addEventListener("wheel", function(event) {
        if (isAnimating) return;

        // 向下滚动
        if (event.deltaY > 0) {
            nextPage();
        }
        // 向上滚动
        else {
            prevPage();
        }
    });

    function nextPage() {
        if (currentPage < pages.length - 1) {
            isAnimating = true;

            // 当前页面向上移动
            pages[currentPage].classList.add("move-up");

            // 下一页显示
            setTimeout(function() {
                pages[currentPage].style.display = "none";
                currentPage++;
                pages[currentPage].style.display = "block";
                pages[currentPage].classList.add("move-up");

                // 动画完成后移除样式
                setTimeout(function() {
                    pages[currentPage].classList.remove("move-up");
                    isAnimating = false;
                }, 1000);
            }, 1000);
        }
    }

    function prevPage() {
        if (currentPage > 0) {
            isAnimating = true;

            // 当前页面向下移动
            pages[currentPage].classList.remove("move-up");

            // 上一页显示
            setTimeout(function() {
                pages[currentPage].style.display = "none";
                currentPage--;
                pages[currentPage].style.display = "block";
                pages[currentPage].classList.remove("move-up");
                isAnimating = false;
            }, 1000);
        }
    }
});

JavaScript에서는 먼저 모든 페이지 요소를 가져오고 현재 페이지를 첫 번째 페이지로 초기화합니다. 다음으로, 페이지 전환을 위해 마우스 휠 이벤트 리스너를 추가합니다.

아래로 스크롤할 때 현재 페이지를 숨기고 다음 페이지를 표시하는 nextPage() 함수를 호출합니다. CSS 애니메이션 효과를 사용하여 현재 페이지를 위로 슬라이드하고 애니메이션이 완료된 후 다음 페이지가 표시되도록 지연을 추가합니다. 마지막으로 애니메이션이 완료된 후 해당 CSS 스타일을 제거합니다.

위로 스크롤할 때 prevPage() 함수를 호출하면 현재 페이지를 숨기고 이전 페이지를 표시합니다. 마찬가지로 CSS 애니메이션 효과를 사용하여 현재 페이지를 아래로 슬라이드하고 애니메이션이 완료된 후 이전 페이지를 표시합니다.

마지막으로 CSS에 다음 스타일을 추가합니다.

.move-up {
    transform: translateY(-100%);
    transition: transform 1s;
}

이 스타일을 사용하면 1초의 애니메이션 시간으로 페이지 요소가 100% 위로 슬라이드됩니다.

위의 코드 예제를 통해 JavaScript를 사용하여 페이지 슬라이딩 전환 효과를 성공적으로 구현했습니다. 보다 개인화된 효과를 얻기 위해 실제 필요에 따라 수정하고 확장할 수 있습니다.

위 내용은 JavaScript를 사용하여 페이지 슬라이딩 전환 효과 달성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.