V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
dyniao
V2EX  ›  JavaScript

分享一个新鲜代码,用 Javascript 和 CSS3 来增加页面滚动的效果

  •  
  •   dyniao · 2015-12-17 10:03:09 +08:00 · 2971 次点击
    这是一个创建于 3300 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先上示例动图

    示例动图

    熟肉核心代码

    scroll(function(direction) {
    if (direction == "up") {
    jQuery(".scrollcircle").addClass("scroll_up");
    } else {
    jQuery(".scrollcircle").addClass("scroll_down");
    }
    });
    var cssend = document.querySelector(".scrollcircle");
    cssend.addEventListener("webkitAnimationEnd", function() {
    jQuery(".scrollcircle").removeClass("scroll_up").removeClass("scroll_down");
    }, false);
    function scroll(fn) {
    var beforeScrollTop = document.body.scrollTop, fn = fn || function() {
    };
    window.addEventListener("scroll", function() {
    var afterScrollTop = document.body.scrollTop, delta = afterScrollTop - beforeScrollTop;
    if (delta === 0) {
    return false;
    }
    fn(delta > 0 ? "down" : "up");
    beforeScrollTop = afterScrollTop;
    }, false);
    };

    全部代码详见

    http://www.dyniao.com/use-javascript-and-css3-add-scroll-effect/

    第 1 条附言  ·  2015-12-18 23:32:43 +08:00

    目前这样的配置确实没有什么意义,主要就是看着玩的。

    但是可以将这个做成有意义的。
    比如弄个右下角的菜单,鼠标指向展开什么的,藏几个链接在里边。

    多加了一个判断,这样两个浏览器都能获取到滚动条的位置了。

    document.documentElement.scrollTop || document.body.scrollTop

    改成非 jq 版的 js 代码,便于操作,将 class 改成 id 了,或者用 html5 的 document.querySelector 。
    function g(e){return document.getElementById(e);}
    //function g(e){return document.querySelector(e);}
    //用法 g(".css") 用着跟 jquery 选择器一样。
    scroll(function(direction) {
    if(direction=='up')
    {
    g("scrollcircle").className+='scroll_up ';}
    else {
    g("scrollcircle").className+='scroll_down ';

    }
    });
    var anim = g("scrollcircle");
    anim.addEventListener('animationend', function(){anim.className="";}, false);
    function scroll(fn) {
    var beforeScrollTop = document.documentElement.scrollTop || document.body.scrollTop,fn = fn || function() {};
    window.addEventListener("scroll", function() {var afterScrollTop = document.documentElement.scrollTop || document.body.scrollTop, delta = afterScrollTop - beforeScrollTop;if( delta === 0 ) return false;fn( delta > 0 ? "down" : "up" );beforeScrollTop = afterScrollTop;
    }, false);
    }

    13 条回复    2015-12-21 18:14:01 +08:00
    chemzqm
        1
    chemzqm  
       2015-12-17 11:37:09 +08:00
    老实说,看着有点累,用户浏览网页通常是为了浏览内容,被特效干扰体验不友好
    kirainmoe
        2
    kirainmoe  
       2015-12-17 11:47:53 +08:00
    mark
    zhe13
        3
    zhe13  
       2015-12-17 11:54:49 +08:00
    求无 JQuery 版本
    oott123
        4
    oott123  
       2015-12-17 11:55:23 +08:00
    成品代码为啥不给一个页面让用户体验一下……
    说实话看动图我完全没看懂这是个啥。
    oott123
        5
    oott123  
       2015-12-17 11:56:47 +08:00
    @oott123 好吧,没注意楼主网站上就有一个。因为我用的 Firefox 所以这玩意儿并不会动,而且屏幕稍微大一旦就根本留意不到……
    50vip
        6
    50vip  
       2015-12-17 12:59:36 +08:00
    代码不错,完全可以改成没有 jq 的~
    bk201
        7
    bk201  
       2015-12-17 13:03:40 +08:00
    如果能让左下原盘可以手动滚动,使得滚动条滚动就是一个不错的轮子了。
    botao1
        8
    botao1  
       2015-12-17 13:46:25 +08:00
    这存在的意义是什么?
    flowfire
        9
    flowfire  
       2015-12-17 15:37:53 +08:00
    跳帧现象。。。
    Balthild
        10
    Balthild  
       2015-12-18 07:38:50 +08:00 via Android
    手机上巨卡
    dyniao
        11
    dyniao  
    OP
       2015-12-18 23:36:40 +08:00
    @Balthild 应该是硬件渲染 css3 慢导致的吧。具体原因不是很明白。
    dyniao
        12
    dyniao  
    OP
       2015-12-21 13:36:29 +08:00
    @50vip
    @zhe13
    已经无 jq 了
    50vip
        13
    50vip  
       2015-12-21 18:14:01 +08:00
    @dyniao github 地址呢?大小有多大啊?需要我我给你提供 cdn 地址不~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   941 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:17 · PVG 03:17 · LAX 11:17 · JFK 14:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.