使用CSS3来实现滚动视差效果的教程

   “视差(parallax)”效果现在在互联网上越来越流行了。如果你还没听说过什么是视差效果,它其实就是利用图片形成不同的层,分别以不同的速度,不同的方向移动产生的效果。这会产生出很奇妙的视觉效果,能有力的吸引住浏览者的目光。

  观看演示

  在web设计中,最常见的实现视差效果的方式是使用jQuery插件。但这种方法有一些弊端。这些插件大多都是在window对象的scroll事件上放置监听器。这会导致JavaScript需要处理大量的事件触发(处理scroll事件很容易造成浏览器性能问题,使用时需要非常小心。)移动不同的层,计算背景的位置,设置图片的属性,这都引起了大量的DOM操作。

  简言之,使用JavaScript来实现视差效果会让页面的滚动出现性能问题,出现卡顿。

  background-attachment属性回顾

  background-attachment -- 定义背景图片随滚动轴的移动方式

  取值: scroll | fixed | inherit

  scroll: 随着页面的滚动轴背景图片将移动

  fixed: 随着页面的滚动轴背景图片不会移动

  inherit: 继承

  初始值: scroll

  继承性: 否

  适用于: 所有元素

  background:背景.attachment:附着.

  示例

  CSS Code复制内容到剪贴板

  body

  {

  background-image:url('list-orange.png');

  background-attachment:fixed;

  background-repeat:repeat-x;

  background-position:center center;

  }

  屏幕的背景图片为一条橙色线.随着滚动轴移动,橙色线的视觉位置不变.

  CSS background-attachment 属性示例

  使用background-attachment: fixed实现视差效果

  为什么只有一小部分人知道,这种效果实际上可以用CSS实现。

  为了实现视差效果,多个背景图片必须放置在不同的元素上。这些背景图需要定义成background-attachment: fixed。通过设定background-attachment,我们可以改变背景图像的效果和位置。

  background-attachment的缺省值是scroll,也就是背景图片和内容的位置是相对静止的。这我们大家都见过,当我们上下滚动一个网页时,背景和内容一起滚动。

  当把background-attachment设置成fixed时,事情会变得有趣。fixed是说背景图片不随内容一起滚动,而是跟窗口保持静止。也就是说,当你拖动滚动条时,背景图片没有变化。这就能够产生漂亮的视差效果。

  让我看一个实际实现:

  CSS Code复制内容到剪贴板

  

  

 

  

foo

 

  

bar

 

  

baz

 

  

bazz

 

  

 

  // setting base styles to image containers

  [class*="bg__"] {

  height: 50vh;

  text-indent: -9999px;

  /* fix background */

  background-attachment: fixed;

  /* center it */

  background-position: center center;

  /* Scale it nicely to the element */

  background-size: cover;

  /* just make it look a bit better */

  &:nth-child(2n) {

  box-shadow: inset 0 0 1em #111;

  }

  }

  .bg__foo {

  background-image: url(

  http://www.webhek.com/wordpress/wp-content/uploads/2014/07/parallax1.jpg

  );

  }

  .bg__bar {

  background-image: url(

  http://www.webhek.com/wordpress/wp-content/uploads/2014/07/parallax2.jpg

  );

  }

  .bg__baz {

  background-image: url(

  http://www.webhek.com/wordpress/wp-content/uploads/2014/07/parallax3.jpg

  );

  }

  .bg__bazz {

  height: 100vh;

  background-image: url(

  http://www.webhek.com/wordpress/wp-content/uploads/2014/07/parallax1.jpg

  );

  }

  关于这种技术的浏览器兼容情况,你可以参考这里,基本上,现代浏览器和IE9+的浏览器都支持。

  观看演示

  对我个人而言,我更喜欢CSS技术实现的视差效果,而不是用JavaScript。用CSS实现,是受浏览器原生支持,没有编程逻辑,没有对DOM额外的操作,使得整个方案非常的简洁漂亮。

  即使是CSS实现的视差效果,也会给浏览器带来负担。

  background-attachment: fixed会导致浏览器更多的渲染,也会影响浏览器滚动的效率。所以,开发时一定要多做测试,视性能情况而决定实现的效果。

时间: 2024-11-30 23:59:27

使用CSS3来实现滚动视差效果的教程的相关文章

不通过JavaScript实现的自动滚动视差效果_经验交流

这个效果是仿照Chirs Coyier的视差教程实现的,经过Chirs的允许使用了其中的星空背景. 运行效果:在这里观看:http://www.fofronline.com/experiments/parallax/该效果可以在Safari 4 Beta和Google Chrome中正常预览,实现该效果无需JavaScript.(但是在IE7及以下版本中无法观看) 实现方法:这个页面的HTML代码非常简单,通过一个div来定义背景,另一个div来定义内容,这里使用了CSS3中的多重背景技术,所以

利用CSS3实现圆角的outline效果的教程

  一.首先,outline是个很牛的东西 1. border近亲 outline和border是近亲,为什么这么讲呢?首先,都是给元素外面套框框的;其次,支持的属性值几乎都是一样的,例如,outline-style和border-style值dotted, dashed, solid, ...之类的,一些语法也几乎一样.如果这都不算近亲,你让绝对定位和浮动何言以对. 2. IE8+支持 outline严格来讲属于CSS3属性,但是IE8+浏览器就支持了.外挂一句,IE9+浏览器的outline

2013网页设计趋势:滚动视差网站设计

文章描述:网页特效:滚动视差设计指南. 作为未来网页设计的热点趋势之一的"滚动视差"在近年来被越来越多网站所采用,特殊新颖的展示模式也让许多用户眼前一亮.网络上也如雨后春笋一般出 现了很多像<30个让人兴奋的视差滚动网站>.<60个视差滚动网站赏析>--等一系列的视差滚动的文章,不过赏析的居多,真正指导设计师如何去设计,如 何去实现的实用型文章却很少.于是萌发了自己写一篇的想法,与感兴趣的人共同交流下滚动视察设计时的一些心得. 什么是滚动视差?视差滚动(Para

网站设计:什么是滚动视差? 滚动视差设计指南

作为未来网页设计的热点趋势之一的"滚动视差"在近年来被越来越多网站所采用,特殊新颖的展示模式也让许多用户眼前一亮.网络上也如雨后春笋一般出现了很多像<30个让人兴奋的视差滚动网站>.<60个视差滚动网站赏析>--等一系列的视差滚动的文章,不过赏析的居多,真正指导设计师如何去设计,如何去实现的实用型文章却很少.于是萌发了自己写一篇的想法,与感兴趣的人共同交流下滚动视察设计时的一些心得. 什么是滚动视差? 视差滚动(Parallax Scrolling)是指让多层背

网页特效滚动视差设计指南

  什么是滚动视差? 视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验. 视差效果,原本是一个天文学术语,当我们观察星空时,离我们远的星星移动速度较慢,离我们近的星星移动速度则较快.当我们坐在车上向车窗外 看时,也会有这样的感觉,远处的群山似乎没有在动,而近处的稻田却在飞速掠过.许多游戏中都使用视差效果来增加场景的立体感.说的简单点就是网页内的元素 在滚动屏幕时发生的位置的变化,然而各个不同的元素位置变化的速度不同,导致网

JS+CSS3模拟溢出滚动效果_javascript技巧

移动开发的时候,我们经常会遇到滑动事件,众所周知手机端滑动主要依靠touch事件.最近接连遇到两个页面都有类似overflow:auto的效果,一般情况下通过css设置是可以实现的(虽说丑了点儿),,但是一旦overflow:auto的元素响应touch事件时就会有诸多不便,例如fullpage中某一元素自滑动,我们可以通过normalScrollElements来使元素滑动的时候不滑动到下一屏,但是在元素滑动到最底部的时候也就不能响应下一屏事件,上滑也是一样,这时候就需要touch事件来响应,

滚动视差网站工具与教程

滚动视差绝对是今年最炫的设计风格,也是最近的设计趋势,之前我们分享了<60多个超炫的视差滚动效果网站设计欣赏>相信让很多人都耳目一新,现在整理几个比较不错的开源滚动视差项目,它们大都托管在github上,大家可以用在自己的项目中,当然,从中获取灵感自己开发会更好-- Scrollorama curtain.js jQuery-Parallax stellar.js jparallax Skrollr Parallax.js A Simple Parallax Scrolling Techniq

《Cocos2d 跨平台游戏开发指南(第2版)》一1.11 添加视差效果

1.11 添加视差效果 在本部分,我们将向游戏中添加视差效果(背景滚动效果),它是游戏中非常流行的一种效果.在视差效果中,相比于背景中的对象,前景中的对象移动得更快,背景中的对象移动得要慢很多,借此产生立体感与运动错觉. 1.11.1 准备工作 回想一下以前的电影片段,其中的英雄或主角保持静止不动,他们看上去就像在骑马一样,背景不断循环,让人产生错觉,以为英雄在场景中真地向前移动,如图1-31所示. 下面我们将实现一个非常简单的视差效果,其中所有的背景对象(例如,树.灌木.草)都以相同的速度进行

Android实现有视差效果的ListView_Android

视差效果是什么? 所谓的视差效果在Web设计和移动应用中都非常常见,我们在一些主要的平台都可以发现它的身影,从Windows Phone到iOS乃至Android.按照维基百科的说法,视差滚动是计算机图形学中的一种特殊的滚动技术,在此相机移动背景图像比前景图像慢,从而引起了视觉深度的假象. 那么到底什么是视差效果呢?一起来看效果图就知道了: 我们可以看到 ListView 的 HeaderView 会跟随 ListView 的滑动而变大,HeaderView里的图片会有缩放效果.这些可以使用属性