CSS-页面滑屏滚动原理

简介:

现在的网站有的时候为了简洁就是很多的单页滑屏滚动介绍,主要呈现方式有两种,一种是整体的元素一直排列下去,假设有五个需要展示的全屏页面,那么高度是500%,只是展示100%,剩下的可以通过transform进行Y轴定位,也可以通过margin-top实现,第二种就是所有的子元素和页面一样,都显示在当前页面,简单的实现第一种页面。

Html代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div  class = "container" >
        <div  class = "wrapper" >
            <div  class = "page page0 active"  data-page= "0" >
                第一页 博客园-FlyElephant
            </div>
            <div  class = "page page1"  data-page= "1" >
                第二页
            </div>
            <div  class = "page page2"  data-page= "2" >
                第三页
            </div>
            <div  class = "page page3"  data-page= "3" >
                第四页
            </div>
        </div>
    </div>

 页面样式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
html,
    body {
        height: 100%;
        padding: 0px;
        margin: 0px;
    }
    
    .container {
        height: 100%;
        overflow: hidden;
    }
    
    .wrapper {
        height: 100%;
        touch-action: none;
        transition: all 1000ms ease;
    }
    
    .page {
        height: 100%;
        width: 100%;
    }
    
    .page0 {
        background: #551A8B;
    }
    
    .page1 {
        background: #FF8247;
    }
    
    .page2 {
        background: #CD919E;
    }
    
    .page3 {
        background: #98FB98;
    }

鼠标滑动控制代码,如果需要获取鼠标的滚轮事件可以直接通过JavaScript,也可以通过query.mousewheel.min.js插件来写,原生态的JS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/** This is high-level function.
  * It must react to delta being more/less than zero.
  */
function handle(delta) {
         if  (delta < 0)
         …;
         else
         …;
}
 
/** Event handler for mouse wheel event.
  */
function wheel( event ){
         var  delta = 0;
         if  (! event /* For IE. */
                 event  = window. event ;
         if  ( event .wheelDelta) {  /* IE/Opera. */
                 delta =  event .wheelDelta/120;
         else  if  ( event .detail) {  /** Mozilla case. */
                 /** In Mozilla, sign of delta is different than in IE.
                  * Also, delta is multiple of 3.
                  */
                 delta = - event .detail/3;
         }
         /** If delta is nonzero, handle it.
          * Basically, delta is now positive if wheel was scrolled up,
          * and negative, if wheel was scrolled down.
          */
         if  (delta)
                 handle(delta);
         /** Prevent default actions caused by mouse wheel.
          * That might be ugly, but we handle scrolls somehow
          * anyway, so don't bother here..
          */
         if  ( event .preventDefault)
                 event .preventDefault();
     event .returnValue =  false ;
}
 
/** Initialization code.
  * If you use your own event management code, change it as required.
  */
if  (window.addEventListener)
         /** DOMMouseScroll is for mozilla. */
         window.addEventListener( 'DOMMouseScroll' , wheel,  false );
/** IE/Opera. */
window.onmousewheel = document.onmousewheel = wheel;

通过jQuery插件控制控制滚动的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<script type= "text/javascript" >
    $(function() {
        $( '.container' ). on ( 'mousewheel' , function( event ) {
            //mac自然状态向上是-1
            //window向上滑动时候是1 向下-1
            console.log( event .deltaX,  event .deltaY,  event .deltaFactor);
            var  currentPage = parseInt($( '.active' ).attr( 'data-page' ));
            if  ( event .deltaY > 0) {
                var  prevpage = currentPage - 1;
                if  (prevpage >=0) {
                    $( '.page'  + prevpage).addClass( 'active' );
                    $( '.page'  + currentPage).removeClass( 'active' );
                    $( '.wrapper' ).css({
                        'transform' 'translate(0,'  + (prevpage * -100) +  '%)'
                    });
                }
            else  {
                var  nextpage = currentPage + 1;
                if  (nextpage < 4) {
                    $( '.page'  + nextpage).addClass( 'active' );
                    $( '.page'  + currentPage).removeClass( 'active' );
                    $( '.wrapper' ).css({
                        'transform' 'translate(0,'  + (nextpage * -100) +  '%)'
                    });
                }
            }
 
        });
    });
    </script>

  关于滚轮的时间的控制,以及不确定页面元素时候的代码没有给出判断,大体思路不变,其他的仅供参考~

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/5042324.html,如需转载请自行联系原作者


相关文章
HTML+CSS 实现通用的企业官网页面(记得收藏)
HTML+CSS 实现通用的企业官网页面(记得收藏)
|
1月前
|
数据采集 前端开发 JavaScript
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
本文介绍了如何使用 Puppeteer 结合 CSS 选择器抓取动态网页中的关键元素,以亚航网站的特价机票信息为例,通过设置代理 IP、User-Agent 和 Cookie 等技术手段,有效提升爬虫策略,实现高效、稳定的爬取。
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
|
24天前
|
前端开发 JavaScript UED
CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画
本文探讨了CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画,这些效果增强了页面的吸引力和互动性。视差滚动通过不同层次元素的差异化移动,增加了页面的深度感和沉浸感。文章还讨论了实现方法、性能优化及案例分析,旨在为设计师和开发者提供实用指导。
51 7
|
24天前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
48 7
|
1月前
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。
|
25天前
|
JavaScript
jQuery+css3制作精美的2024圣诞节倒计时页面
jQuery+css3制作精美的2024圣诞节倒计时页面动画
20 0
jQuery+css3制作精美的2024圣诞节倒计时页面
|
1月前
|
前端开发
css页面顶部底部固定,中间自适应几种方法
【10月更文挑战第22天】css页面顶部底部固定,中间自适应几种方法
|
2月前
|
编解码 前端开发 JavaScript
使用 CSS 打印样式为 Web 页面设置专业的打印机效果
使用 CSS 打印样式为 Web 页面设置专业的打印机效果
72 2
|
2月前
|
前端开发 JavaScript
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
38 0
HTML+CSS 实现带轮播图的企业官网页面(记得收藏)
HTML+CSS 实现带轮播图的企业官网页面(记得收藏)