原生css实现fullPage的整屏滚动贴合

1,前言


今天摸鱼的时候,发现一个很有意思的css属性scroll-snap-type,属性的解释是:定义在滚动容器中的一个临时点如何被严格的执行。听起来有点模糊,大致意思就是可以设置滚动容器中子元素的滚动动作,查看了一下MDN文档,我制作了一个简单的仿fullPage整屏滚动的deme,纯css实现。

2,效果展示


动图展示

完整代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>css</title>
  <style>
    * {
      padding: 0;
      margin: 0;
    }
    #main {
      width: 100vw;
      height: 100vh;
      overflow: auto;
      scroll-snap-type: y mandatory;
    }
    #main::-webkit-scrollbar {
      width: 0;
    }
    #main div {
      width: 100vw;
      height: 100vh;
      color: white;
      font-size: 30px;
      display: flex;
      justify-content: center;
      align-items: center;
      scroll-snap-align: start;
    }

    #main div:nth-child(1) {
      background-color: pink;
    }

    #main div:nth-child(2) {
      background-color: blue;
    }

    #main div:nth-child(3) {
      background-color: green;
    }
  </style>
</head>

<body>
  <main id="main">
    <div>第一页</div>
    <div>第二页</div>
    <div>最后一页</div>
  </main>
</body>
</html>

3,属性说明


主要用到了两个属性,设置在外部容器的scroll-snap-type,和设置在子元素的scroll-snap-align

3.1 scroll-snap-type

该属性用于设置水平滚动定位,还是垂直滚动定位,属性值如下:

说明
none无效果
x水平轴
y垂直轴
block块轴
inline内联轴
both水平垂直全设置
mandatory当滚动动作结束,强制到指定的点
proximity当滚动动作结束,如果接近指定的点,则会贴合

语法:

scroll-snap-type: none | [ x | y | block | inline | both ] [ mandatory | proximity ]

3.2,scroll-snap-align

该属性作用在滚动容器的子元素上,表示捕获点是上边缘,下边缘,还是中间位置,属性值如下:

说明
none无效果
start起始位置对齐
end结束位置对齐
center居中对齐

语法:

scroll-snap-align: [ none | start | end | center ]{1,2};

4,实际使用


实际使用过程中,只需要设置如下:

#main {
   overflow: auto;
   scroll-snap-type: y mandatory;
 }
 #main div {
   scroll-snap-align: start;
 }

4.1,兼容性

兼容性


如果看了觉得有帮助的,我是@鹏多多i,欢迎 点赞 关注 评论;
END

面向百度编程

公众号

公众号

往期文章

个人主页

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要制作整屏滚动的HTML页面,可以使用现成的JavaScript库,如fullPage.js或PagePiling.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文件,然后在浏览器中打开,你就可以看到一个漂亮的整屏滚动页面了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏多多.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值