js--整页滚动

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>整页滚动</title>
        <style>
            body {
                overflow: hidden;
                padding: 0;
                margin: 0;
            }

            .container {
                transition: transform 1s ease-in;
            }

            .page {
                height: 100vh;
                font-size: 80px;
                color: #fff;
                font-weight: 600;
                text-align: center;
                line-height: 100vh;
            }

            .page-1 {
                background:#00ffa1;
            }
            .page-2 {
                background:#bcf1ae;
            }
            .page-3 {
                background:#dab573;
            }
            .page-4 {
                background:#c3d86d;
            }
        </style>
	</head>
	<body>
        <div class="container">
            <div class="page page-1">1</div>
            <div class="page page-2">2</div>
            <div class="page page-3">3</div>
            <div class="page page-4">4</div>
        </div>
		
		<script>
            const container = document.querySelector('.container') // container of pages
            const pageH = window.innerHeight // height of one page
            const pageCount = document.querySelectorAll('.page').length

            const scrollDuation = 1e3 // 1s
            let containerScrollTop = 0 // scrollTop of container

            const onePageScrollHandler = throttle(onePageScroll, scrollDuation)
            window.addEventListener('wheel', onePageScrollHandler)

            function onePageScroll(evt) {
                const direction = evt.wheelDelta < 0 ? 'down' : 'up' // direction of scroll
                if (direction === 'down') { // scroll to next page
                    nextPage()
                }

                if (direction === 'up') { // scroll to prev page
                    prevPage()
                }
            }

            function throttle(fn, delay) { // 函数节流:防止频繁触发
                let execTime = 0 // exec time of wheel-handler
                return function () {
                    const curTime = Date.now()
                    if (execTime + delay < curTime) {
                        fn.apply(this, arguments)
                        execTime = curTime
                    }
                }
            }

            function nextPage() {
                if ( !isReachBot() ) {
                    containerScrollTop += pageH
                    container.style.transform = `translateY(${ -containerScrollTop }px)`
                }
            }

            function isReachBot() {
                // if container is scroll to bot.
                return containerScrollTop === (pageCount - 1) * pageH
            }

            function prevPage() {
                if (containerScrollTop > 0) {
                    containerScrollTop -= pageH
                    container.style.transform = `translateY(${ -containerScrollTop }px)`
                }
            }
        </script>
	</body>
</html>
要制作整屏滚动的HTML页面,可以使用现成的JavaScript库,如fullPage.jsPagePiling.js。这些库提供了易于使用的API,可以帮助您快速创建漂亮的全屏滚动页面。 以下是使用fullPage.js创建整屏滚动页面的基本步骤: 1. 在HTML文档中引入fullPage.js库和相关的CSS文件。 2. 创建一个包含所有屏幕内容的主容器,并将每个屏幕作为容器的子元素。 3. 在JavaScript代码中初始化fullPage.js插件,并配置选项,如每个屏幕的背景色、过渡效果和导航条等。 4. 在每个屏幕容器中添加内容,如标题、文本、图片、视频等。 下面是一个使用fullPage.js创建整屏滚动页面的示例代码: ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Full Page Scrolling</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullPage.js/3.1.0/fullpage.min.css" integrity="sha512-XqXJLOb3u3iZfK6I5rJ5+0J5oE3tUa2Yi5W/lJw1RJH+iP9yKOCeJYf4Sb3xMLc9VQw7UOXK/3GsQjM9y4LkGg==" crossorigin="anonymous" /> </head> <body> <div id="fullpage"> <div class="section"> <h1>Section 1</h1> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in dui mauris. Vivamus hendrerit arcu sed erat molestie vehicula. Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor.</p> </div> <div class="section"> <h1>Section 2</h1> <p>Phasellus sodales massa malesuada tellus fringilla, nec bibendum tellus blandit. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla lectus ante, consequat et ex eget, feugiat tincidunt metus.</p> </div> <div class="section"> <h1>Section 3</h1> <p>Aliquam bibendum, turpis eu mattis iaculis, ex lorem mollis sem, ut sollicitudin risus orci quis tellus. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula.</p> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/fullPage.js/3.1.0/fullpage.min.js" integrity="sha512-GSPzZwI8Zi6SbCk1DvGJZ8HqPn9J1rGqSbfiFzQYb1VtkL0OgqctjN5qY4CvM7G7A8V1O7y4p5G5dZs64Sx2/w==" crossorigin="anonymous"></script> <script> new fullpage('#fullpage', { // options here autoScrolling:true, scrollHorizontally: true, sectionsColor: ['#f2f2f2', '#4BBFC3', '#7BAABE', 'whitesmoke'], navigation: true, navigationPosition: 'right', }); </script> </body> </html> ``` 在这个示例中,我们创建了一个包含三个屏幕的主容器,并使用fullPage.js插件配置每个屏幕的背景色、导航条和过渡效果。在每个屏幕容器中添加了标题和文本内容。将以上代码保存为HTML文件,然后在浏览器中打开,你就可以看到一个漂亮的整屏滚动页面了。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值