利用CSS固定背景交替实现视差滚动效果

利用CSS固定背景交替实现视差滚动效果
 外部样式表部分
*{
 margin:0;
 padding:0;
}
body{
 font-family:"Trebuchet MS", "Myriad Pro", Arial, sans-serif;
 font-size:14px;
 background:#222;
 color:#333;
 
 overflow-x:hidden;
}
h1{
 font-size:56px;
 color:#ccc;
}
h2{
 font-size:20px;
 padding:10px 0px 10px 0px;
 margin:15px 0px 20px 0px;
}
a{
 color:#555;
 text-decoration:none;
}
a:hover{
 color:#222;
}
p{
 padding:5px 0px;
}
.wrapper{
 width:960px;
 margin:100px auto 20px;
 text-align: center;
}
.clear{
 clear:both;
}
.footer{
 text-align:center;
 width:100%;
 padding:20px 0px;
 clear:both;
 margin-top:30px;
}
.footer a{
 margin:0px 20px;
}
.pxs_container{
 width:100%;
 height:420px;
 position:relative;
 border-top:7px solid #333;
 border-bottom:7px solid #333;
 overflow:hidden;
 -moz-box-shadow:0px 0px 7px #000;
 -webkit-box-shadow:0px 0px 7px #000;
 box-shadow:0px 0px 7px #000;
}
.pxs_bg{
 background:transparent url(../images/bg.png) repeat top left;
}
.pxs_bg div{
 position:absolute;
 top:0px;
 left:0px;
 width:7584px; 
 height:420px;
 background-repeat:repeat;
 background-position:top left;
 background-color:transparent;
}
.pxs_bg .pxs_bg1{
 background-image:url(../images/bg1.png);
}
.pxs_bg .pxs_bg2{
 background-image:url(../images/bg2.png);
 
}
.pxs_bg .pxs_bg3{
 background-image:url(../images/bg3.png);
 
}
.pxs_slider_wrapper{
 display:none;
}
.pxs_container ul{
 margin:0px;
 padding:0px;
 list-style:none;
}
ul.pxs_slider{
 position:absolute;
 left:0px;
 top:0px;
 
}
ul.pxs_slider li{
 
 float:left;
 position:relative;
}
ul.pxs_slider li img{
 display:block;
 margin:35px auto 0px auto;
 -moz-box-shadow:0px 0px 7px #222;
 -webkit-box-shadow:0px 0px 7px #222;
 box-shadow:0px 0px 7px #222;
 border: 8px solid transparent;
 -moz-border-radius:4px;
 -webkit-border-radius:4px;
 border-radius:4px;
}
ul.pxs_thumbnails{
 height:35px;
 position:absolute;
 top:320px;
 left:50%;
}
ul.pxs_thumbnails li{
 position:absolute;
 display:block;
}
ul.pxs_thumbnails li img{
 border: 5px solid #FFFFFF;
 -moz-box-shadow:1px 1px 7px #555;
 -webkit-box-shadow:1px 1px 7px #555;
 box-shadow:1px 1px 7px #555;
 cursor:pointer;
 display:block;
 opacity:0.7;
}
ul.pxs_thumbnails li.selected img{
 opacity:1.0;
}
.pxs_navigation span{
 position:absolute;
 width:30px;
 height:60px;
 -moz-box-shadow:0px 0px 2px #000;
 -webkit-box-shadow:0px 0px 2px #000;
 box-shadow:0px 0px 2px #000;
 top:145px;
 opacity:0.6;
 -moz-border-radius:4px;
 -webkit-border-radius:4px;
 border-radius:4px;
 cursor:pointer;
}
.pxs_navigation span:hover{
 opacity:0.9;
}
.pxs_navigation span.pxs_prev{
 background:#000 url(../images/prev.png) no-repeat center center;
}
.pxs_navigation span.pxs_next{
 background:#000 url(../images/next.png) no-repeat center center;
}
.pxs_loading{
 color:#fff;
 font-size:20px;
 padding:15px 15px 15px 50px;
 position:absolute;
 background:#333 url(../images/ajax-loader.gif) no-repeat 10px 50%;
 -moz-border-radius:15px;
 -webkit-border-radius:15px;
 border-radius:15px;
 opacity:0.7;
 width:180px;
 position:absolute;
 top:150px;
 left:50%;
 margin-left:-90px;
}
html及js部分
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta charset="UTF-8"/>
        <meta name="description" content="" />
        <meta name="keywords" content=""/>
  <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"/>
        <link rel="stylesheet" type="text/css" href="css/style.css" />
        <link rel="stylesheet" href="http://dreamsky.github.io/main/blog/common/init.css">
  <script src="js/cufon-yui.js" type="text/javascript"></script>
  <script src="js/ChunkFive_400.font.js" type="text/javascript"></script>
  <script type="text/javascript">
   Cufon.replace('h1',{ textShadow: '1px 1px #000'});
   Cufon.replace('h2',{ textShadow: '1px 1px #000'});
   Cufon.replace('.footer',{ textShadow: '1px 1px #000'});
   Cufon.replace('.pxs_loading',{ textShadow: '1px 1px #000'});
  </script>
    </head>
    <body>
  
  <div id="pxs_container" class="pxs_container">
   <div class="pxs_bg">
    <div class="pxs_bg1"></div>
    <div class="pxs_bg2"></div>
    <div class="pxs_bg3"></div>
   </div>
   <div class="pxs_loading">Loading images...</div>
   <div class="pxs_slider_wrapper">
    <ul class="pxs_slider">
     <li><img src="images/1.jpg" alt="First Image" /></li>
     <li><img src="images/2.jpg" alt="Second Image" /></li>
     <li><img src="images/3.jpg" alt="Third Image" /></li>
     <li><img src="images/4.jpg" alt="Forth Image" /></li>
     <li><img src="images/5.jpg" alt="Fifth Image" /></li>
     <li><img src="images/6.jpg" alt="Sixth Image" /></li>
    </ul>
    <div class="pxs_navigation">
     <span class="pxs_next"></span>
     <span class="pxs_prev"></span>
    </div>
    <ul class="pxs_thumbnails">
     <li><img src="images/thumbs/1.jpg" alt="First Image" /></li>
     <li><img src="images/thumbs/2.jpg" alt="Second Image" /></li>
     <li><img src="images/thumbs/3.jpg" alt="Third Image" /></li>
     <li><img src="images/thumbs/4.jpg" alt="Forth Image" /></li>
     <li><img src="images/thumbs/5.jpg" alt="Fifth Image" /></li>
     <li><img src="images/thumbs/6.jpg" alt="Sixth Image" /></li>
    </ul>
   </div>
  </div>
  
  <!-- The JavaScript -->
  <script type="text/javascript" src="http://cdn.staticfile.org/jquery/1.4.2/jquery.min.js"></script>
  <script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
        <script type="text/javascript">
   (function($) {
    $.fn.parallaxSlider = function(options) {
     var opts = $.extend({}, $.fn.parallaxSlider.defaults, options);
     return this.each(function() {
      var $pxs_container  = $(this),
      o     = $.meta ? $.extend({}, opts, $pxs_container.data()) : opts;
      
     
      var $pxs_slider  = $('.pxs_slider',$pxs_container),
      
      $elems   = $pxs_slider.children(),
      
      total_elems  = $elems.length,
     
      $pxs_next  = $('.pxs_next',$pxs_container),
      $pxs_prev  = $('.pxs_prev',$pxs_container),
      
      $pxs_bg1  = $('.pxs_bg1',$pxs_container),
      $pxs_bg2  = $('.pxs_bg2',$pxs_container),
      $pxs_bg3  = $('.pxs_bg3',$pxs_container),
     
      current   = 0,
      
      $pxs_thumbnails = $('.pxs_thumbnails',$pxs_container),
     
      $thumbs   = $pxs_thumbnails.children(),
      
      slideshow,
      
      $pxs_loading = $('.pxs_loading',$pxs_container),
      $pxs_slider_wrapper = $('.pxs_slider_wrapper',$pxs_container);
       
      
      var loaded  = 0,
      $images  = $pxs_slider_wrapper.find('img');
       
      $images.each(function(){
       var $img = $(this);
       $('<img/>').load(function(){
        ++loaded;
        if(loaded == total_elems*2){
         $pxs_loading.hide();
         $pxs_slider_wrapper.show();
          
         
         var one_image_w  = $pxs_slider.find('img:first').width();
       
        
         setWidths($pxs_slider,
         $elems,
         total_elems,
         $pxs_bg1,
         $pxs_bg2,
         $pxs_bg3,
         one_image_w,
         $pxs_next,
         $pxs_prev);
       
         
         $pxs_thumbnails.css({
          'width'   : one_image_w + 'px',
          'margin-left'  : -one_image_w/2 + 'px'
         });
         var spaces = one_image_w/(total_elems+1);
         $thumbs.each(function(i){
          var $this  = $(this);
          var left = spaces*(i+1) - $this.width()/2;
          $this.css('left',left+'px');
           
          if(o.thumbRotation){
           var angle  = Math.floor(Math.random()*41)-20;
           $this.css({
            '-moz-transform' : 'rotate('+ angle +'deg)',
            '-webkit-transform' : 'rotate('+ angle +'deg)',
            'transform'   : 'rotate('+ angle +'deg)'
           });
          }
         
          $this.bind('mouseenter',function(){
           $(this).stop().animate({top:'-10px'},100);
          }).bind('mouseleave',function(){
           $(this).stop().animate({top:'0px'},100);
          });
         });
          
         
         highlight($thumbs.eq(0));
          
         
         $pxs_next.bind('click',function(){
          ++current;
          if(current >= total_elems)
           if(o.circular)
            current = 0;
          else{
           --current;
           return false;
          }
          highlight($thumbs.eq(current));
          slide(current,
          $pxs_slider,
          $pxs_bg3,
          $pxs_bg2,
          $pxs_bg1,
          o.speed,
          o.easing,
          o.easingBg);
         });
         $pxs_prev.bind('click',function(){
          --current;
          if(current < 0)
           if(o.circular)
            current = total_elems - 1;
          else{
           ++current;
           return false;
          }
          highlight($thumbs.eq(current));
          slide(current,
          $pxs_slider,
          $pxs_bg3,
          $pxs_bg2,
          $pxs_bg1,
          o.speed,
          o.easing,
          o.easingBg);
         });
       
         
         $thumbs.bind('click',function(){
          var $thumb = $(this);
          highlight($thumb);
          
          if(o.auto)
           clearInterval(slideshow);
          current  = $thumb.index();
          slide(current,
          $pxs_slider,
          $pxs_bg3,
          $pxs_bg2,
          $pxs_bg1,
          o.speed,
          o.easing,
          o.easingBg);
         });
       
        
       
        
         if(o.auto != 0){
          o.circular = true;
          slideshow = setInterval(function(){
           $pxs_next.trigger('click');
          },o.auto);
         }
       
         
         $(window).resize(function(){
          w_w = $(window).width();
          setWidths($pxs_slider,$elems,total_elems,$pxs_bg1,$pxs_bg2,$pxs_bg3,one_image_w,$pxs_next,$pxs_prev);
          slide(current,
          $pxs_slider,
          $pxs_bg3,
          $pxs_bg2,
          $pxs_bg1,
          1,
          o.easing,
          o.easingBg);
         });
        }
       }).error(function(){
        alert('here')
       }).attr('src',$img.attr('src'));
      });
       
       
       
     });
    };
    
    
    var w_w    = $(window).width();
    
    var slide   = function(current,
    $pxs_slider,
    $pxs_bg3,
    $pxs_bg2,
    $pxs_bg1,
    speed,
    easing,
    easingBg){
     var slide_to = parseInt(-w_w * current);
     $pxs_slider.stop().animate({
      left : slide_to + 'px'
     },speed, easing);
     $pxs_bg3.stop().animate({
      left : slide_to/2 + 'px'
     },speed, easingBg);
     $pxs_bg2.stop().animate({
      left : slide_to/4 + 'px'
     },speed, easingBg);
     $pxs_bg1.stop().animate({
      left : slide_to/8 + 'px'
     },speed, easingBg);
    }
    
    var highlight  = function($elem){
     $elem.siblings().removeClass('selected');
     $elem.addClass('selected');
    }
    
    var setWidths  = function($pxs_slider,
    $elems,
    total_elems,
    $pxs_bg1,
    $pxs_bg2,
    $pxs_bg3,
    one_image_w,
    $pxs_next,
    $pxs_prev){
     
     var pxs_slider_w = w_w * total_elems;
     $pxs_slider.width(pxs_slider_w + 'px');
     
     $elems.width(w_w + 'px');
     
      
     $pxs_bg1.width(pxs_slider_w + 'px');
     $pxs_bg2.width(pxs_slider_w + 'px');
     $pxs_bg3.width(pxs_slider_w + 'px');
     
     
     var position_nav = w_w/2 - one_image_w/2 + 3;
     $pxs_next.css('right', position_nav + 'px');
     $pxs_prev.css('left', position_nav + 'px');
    }
    
    $.fn.parallaxSlider.defaults = {
     auto   : 0, 
           
     speed   : 1000,
     easing   : 'jswing',
     easingBg  : 'jswing',
     circular  : true,
     thumbRotation : true,
    };
    
   })(jQuery);
  </script>
  <script type="text/javascript">
   $(function() {
    var $pxs_container = $('#pxs_container');
    $pxs_container.parallaxSlider();
   });
        </script>
  <script src="http://dreamsky.github.io/main/blog/common/init.js"></script>
    </body>
</html>

 
图片

图片

图片

图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值