视差滚动(Parallax Scrolling)效果的原理与实现
1.视差滚动效果的主要特点:
    1)直观的设计,快速的响应速度,更合适运用于单页面
    2)差异滚动 分层视差
    页面上很多的元素在相互独立地滚动着,如果我们来对其它分层的话,可以有两到三层 :背景层,内容层,贴图层。
2.原理
    1)差异滚动的实现规则:
      背景层的滚动(最慢)
      贴图层(内容层和背景层之间的元素)的滚动(次慢)
      内容层的滚动(可以和页面的滚动速度一致)
    2)1、运用大背景
      这些背景图像一般是高分辨率,大图,覆盖整个网站。高清照片是一个迅速抓住观众的好方式,可以产生极具冲击力的视觉效果,用户的视线会不自觉地落在宽大的背景上
      注意:
      1.1、背景图的色彩、内容在选择时要十分讲究,前提是不要破坏用户的体验,不然再漂亮的照片也是枉然。
      图片类型最好选取趋向于一些比较柔和、略带透明的一类,不要影响到网站主体内容的阅读,识别,讲究协调。
      1.2、以大量图片为特色的页面应该考虑图像的预加载问题,以便为用户提供更好更流畅的视觉体验.
    2、你也可以用简单的配色方案
         没有比纯色的背景更直观更简洁。纯色可以有很多种表达方式,一个视差区间内颜色最好保持使用2到3种,我们可以调整颜色的透明度,来达到各种视觉效果
    3、定位好背景层,贴图层和内容层之间的关系
         根据页面自身的功能来定义是否需要贴图层,贴图层的存在是为了更有效的传达视觉效果,但如果它成为了干扰,就会违背了我们使用的初衷
      内容层的展现是最主要的,无论背景层和贴图层有多少花哨,在设计师设计过程中,内容层对用户的展示是最优先的  
    4、讲故事
      有力的表现、简约的风格和设计的美感共同构成了一个出色地交互式叙事体验。我们经常听到这样的话:内容是王道,技术只是实现内容的一种工具。当 你能够成功地把有力的信息和漂亮的执行力结合起来,你就能创造出人们喜欢并且享受其中的体验。
3.实现方法
    1、在CSS中定义背景滚动方式的属性是backgroud-attacthment
background-attachment -- 定义背景图片随滚动轴的移动方式
    取值: scroll | fixed | inherit
        scroll: 默认值。背景图像会随着页面其余部分的滚动而移动。
        fixed: 当页面的其余部分滚动时,背景图像不会移动。
        inherit: 规定应该从父元素继承 background-attachment 属性的设置。
        初始值: scroll
        继承性: 否
        适用于: 所有元素

2、js实现,添加一些动画事件,移动的速度、方向不同

4.使用场景
1、初创网站。如果其目的在于宣传品牌、产品,且无太多文本内容呈现时,可在初期上线视差滚动网站,让人先对其产生兴趣,留下印象。之后随着访客增多,内容完善后,再改回常规网站形式。
2、主题宣传站点。对于需要在某个时间段发布的活动宣传页面,需要尽可能为用户产生视觉上的冲击,可上线视差滚动站点。例如阿里、腾讯很多专题网站。
3、特殊行业站点。这类站点的特色也在于“宣传为主、突出视觉冲击力、内容有限”。如一些设计公司网站、游戏公司网

效果

插件代码

(function($){
    var methods={
        init:function(options){
            var settings={
                offset:true,
                bgfixed:true,
                insert:true
            }
            return this.each(function(){
                if(options){
                    $.extend(settings,options);
                }
                var $this=$(this),
                    windowSelector = $(window),
                    documentSelector=$(document),
                    thisHeight=0,
                    thisOffsetTop,
                    image_url='';
                _constructor();
                function _constructor(){
                    image_url=$this.data("source-url");
                    $this.css({"background-image":"url("+image_url+")"});
                    if(settings.bgfixed){
                        $this.css({"background-attachment":"fixed"});
                    }
                    addEventsFunction();
                }
                function addEventsFunction(){
                    windowSelector.on("scroll",function(){
                        if(settings.offset){
                            parallaxEffect();
                        }
                    }).trigger("scroll");
                }
                function parallaxEffect(){
                    var documentScrollTop,
                        startScrollTop,
                        endScrollTop,
                        visibleScrollValue;
                    thisHeight=$this.outerHeight();            //800px
                    windowHeight=windowSelector.height();    //窗口的可见高度
                    thisOffsetTop=$this.offset().top;        //0px,
                    documentScrollTop=documentSelector.scrollTop();    //滚动条滚动的高度
                    startScrollTop=documentScrollTop + windowHeight;// 滚动条滚动的高度 + 窗口的可见高度
                    endScrollTop=documentScrollTop - thisHeight;    // 滚动条滚动的高度 - 800px
                    if((startScrollTop > thisOffsetTop) && (endScrollTop < thisOffsetTop)){
                        visibleScrollValue = startScrollTop - endScrollTop;        //定值,窗口的可见高度+800px
                        pixelScrolled = documentScrollTop - (thisOffsetTop - windowHeight);    //滚动条滚动的高度 - 窗口的可见高度
                        percentScrolled = pixelScrolled / visibleScrollValue;
                        if(settings.invert){
                            deltaTopScrollVal = percentScrolled *100;    //向下滚动
                            $this.css({"background-position":"50% "+deltaTopScrollVal+"%"});
                        }else{
                            deltaTopScrollVal = (1-percentScrolled) *100; //向上滚动
                            $this.css({"background-position":"50% "+deltaTopScrollVal+"%"});
                        }
                    }
                }
            });
        },
        destory:function(){},
        reposition:function(){},
        update:function(content){}
    };
    $.fn.cherryFixedParallax=function(method){
            if ( methods[method] ) {
                return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
            } else if ( typeof method === 'object' || ! method ) {
                return methods.init.apply( this, arguments );
            } else {
                $.error( 'Method with name ' +  method + ' is not exist for jQuery.cherryMediaParallax' );
            }
        }
})(jQuery);

视差滚动(Parallax Scrolling)效果的原理与实现的更多相关文章

  1. 视差滚动(Parallax Scrolling)效果的原理和实现

    视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验.作为今年网页设计的热点趋势,越来越多的网站应用了这项技术. 一.什么是视差滚 ...

  2. 【转】视差滚动(Parallax Scrolling)效果的原理和实现

    原文:http://www.cnblogs.com/JoannaQ/archive/2013/02/08/2909111.html 视差滚动(Parallax Scrolling)是指让多层背景以不同 ...

  3. 视差滚动(Parallax Scrolling)插件补充

    13. Windows Windows (github) 是一个让你用占据整个屏幕的section来构建单面网站的插件.该插件提供给你一些回调函数,当新的section出现在可视区并且并且处理快照时被 ...

  4. jQuery视差滚动插件,(附原理分析,调用方法)

    演示地址:http://www.jq22.com/jquery-info1799 jquery插件,使用验证过可用. 分析源代码后总结原理:设置background样式为fixed,判断浏览器滚动距离 ...

  5. 30个让人兴奋的视差滚动(Parallax Scrolling)效果网站--转

    视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验.作为今年网页设计的热点趋势,越来越多的网站应用了这项技术.今天这篇文章就与大 ...

  6. 视差滚动(Parallax Scrolling)的一点小心得

    下面内容来源于我知乎的这个答案:http://www.zhihu.com/question/20990029/answer/21436067 假期有空,整理到博客园这边,并做了一些语境的调整. ——— ...

  7. 那些H5用到的技术(5)——视差滚动效果

    前言原理使用方式结合swiper.js 前言 视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验. 目前最火热的视差开源库为pa ...

  8. CSS完成视差滚动效果

    一.是什么 视差滚动(Parallax Scrolling)是指多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验 我们可以把网页解刨成:背景层.内容层.悬浮层 当滚动鼠标滑轮的时候 ...

  9. 利用background-attachment做视差滚动效果

    视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验.作为今年网页设计的热点趋势,越来越多的网站应用了这项技术. 不明白的可以先看 ...

随机推荐

  1. HTML&CSS基础学习笔记1.27-input提交数据

    提交数据 我们在表单上填的信息很多情况下需要提交到后台. <input>的[type]属性值为“submit”时,表示提交表单数据.它在页面的表现形式也是个按钮,点击该按钮,表单数据将会提 ...

  2. 程序设计C 实验三 题目九 方程式(0300)

    Description: Consider equations having the following form: a*x1*x1 + b*x2*x2 + c*x3*x3 + d*x4*x4 = 0 ...

  3. 配置TC2.0运行环境

    一. 学习过程 下载TC2.0并打开如图: 这是一个集成的C语言环境包,包括TC.dosbox和一些编译工具,很明显这样我无法判断单个程序的功能,也无法区分哪些程序是必须的. 那么为了搞清楚哪些文件是 ...

  4. gitosis使用笔记

    gitosis是Git下的权限管理工具,通过一个特殊的仓库(gitosis-admin.git)对Git权限进行管理. 1:服务端安装并配置gitosis (1)通过以下方式获取到安装包 root@w ...

  5. NSIS操作系统环境变量

    手头有个项目需要修改PATH变量 需要!include "EnvVarUpdate.nsh" 以下是NSIS脚本代码 ; Script generated by the HM NI ...

  6. java解析网页的内容

    有时候,我们需要在java程序中获取一个连接,然后解析连接后,获取连接返回的内容结果来解析.准确的说是解析一个链接. 以下代码时解析百度首页的链接,获取的html代码的效果: public stati ...

  7. BZOJ2751: [HAOI2012]容易题(easy)

    2751: [HAOI2012]容易题(easy) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 872  Solved: 377[Submit][S ...

  8. Java Spring各种依赖注入注解的区别

    Spring对于Bean的依赖注入,支持多种注解方式: @Resource javax.annotation JSR250 (Common Annotations for Java) @Inject ...

  9. Day56

    今天干啦啥呢 早上七点起来 天气冷了真起不来啊 再坚持坚持就好了 今天上午九点开始考数据库 我去 大学四年第一次感觉到这样的爽  作弊的爽啊 也没有完全的作弊啦 是开卷考试,反正做的很顺利了. 我和胡 ...

  10. c指针点滴1

    #include <stdio.h> #include <stdlib.h> void main() { ; int *p = &num;//&num是一个地址 ...