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,如需转载请自行联系原作者


相关文章
|
5月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。 伪类分为两种(以及新增的伪类选择器): UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。 :hover 结构化伪类:会在标记中存在某种结构上的关系时 例如: 某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。 :not和:target(CSS3新增的两个特殊的伪类选择器)
525 2
|
前端开发 JavaScript 开发者
前端 CSS 优化:提升页面美学与性能
前端CSS优化旨在提升页面美学与性能。通过简化选择器(如避免复杂后代选择器、减少通用选择器使用)、合并样式表、合理组织媒体查询,可减少浏览器计算成本和HTTP请求。利用硬件加速和优化动画帧率,确保动画流畅。定期清理冗余代码并使用缩写属性,进一步精简代码。这些策略不仅加快页面加载和渲染速度,还提升了视觉效果,为用户带来更优质的浏览体验。
|
前端开发 JavaScript
如何使用CSS过渡实现页面元素的淡入淡出效果?
如何使用CSS过渡实现页面元素的淡入淡出效果?
564 79
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
731 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
525 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
372 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
275 34
css3实现3D数字时钟滚动特效代码
css3实现3D数字时钟滚动特效代码
462 18
|
前端开发 JavaScript UED
CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画
本文探讨了CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画,这些效果增强了页面的吸引力和互动性。视差滚动通过不同层次元素的差异化移动,增加了页面的深度感和沉浸感。文章还讨论了实现方法、性能优化及案例分析,旨在为设计师和开发者提供实用指导。
385 7
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
606 7