Demo演示:http://nba.titan24.com/focus/kikx/slider_demo.html

DEMO 说明:
图片横向滑动切换的原理很简单,就是当前被选中的图片,或者当前鼠标划入的图片宽度变大,

其他的图片减少相应的尺寸就可以了,于是我们就有了这个公式:

假如我们有11张图片,图片容器宽度一共为 960 px ,则每个图片宽度为 960/11 px ,

图片打开状态宽度为 160 px,那么其他图片就要变成 (960-160)/10 px 基于这个公式,
再结合jQuery的 animate 方法对样式的控制,我们就可以模拟这个效果。

这个动画的原理很简单,但是在实现的过程中有几个需要注意的问题。

1,样式上:


由于图片要始终位于中间位置,所以我们把图片作为背景图片,这样做的好处有2。

第一,根据容器大小的变换显示图片区域大小 ,就模拟了Flash 遮罩的效果;

第二,用  background:url(../images/0.jpg) center top no-repeat; 可以使得图片始终在容器中间位置显示。

由于图片容器是浮动的,所以我们必须保证图片们不能换行,在本例中,
我采用了这样的DOM结构 :

<div class="picon" id="picon">
        <ul>
           <li class="pic1"> <!--背景是pic1.jpg的 li--> </li>
          <li class="pic2"> <!--背景是pic2.jpg的 li--> </li> 
           .....
      </ul>
</div>

样式:

.picon{ clear:both; height:400px; overflow:hidden; background:#000; position:relative;}
.picon ul{ position:absolute; top:0; left:0; height:400px; width:1000px;} /*大于外层容器宽度 预留安全空间*/
.picon li{ float:left; height:400px; border-right:1px solid #fff; width:79px; position:relative;}


2,在脚本方面的技巧


第一:在算图片的尺寸的时候要取整 ,var avgw= parseInt((960-maxw-2)/11);

          我们并不需要带小数的像素值。|

第二:就是延时执行,也就是鼠标移入一个图片的时候,不立即执行,要延时一段时间,
          如果立即执行则鼠标在经过的途中会划过N多的图片,每个都会触发动作,就导致

这样就导致运行缓慢系统负担严重,而且我们并不想

          触发那些动作。 

         比如 我们把动作设置成一个函数 

var act=function (){ 
             //code goes here; 
          }

           那么我们采用如下方式 

mouseover(

                  function(){ 


           )

          这样就避免了鼠标快速划过触发的动作,别忘了在离开的时候 还要

if(t){

            }


           来取消延时。


具体的代码大家可以再下载的例子中查看。

下载地址 http://kikx.googlecode.com/files/uefa_slider.zip

PS:在实现的过程中我还试图采用表格的结构,利用表格自动分配宽度的原理来省却计算

每个容器的宽度,结果是在IE中运行可以,但是在Firefox等其他现代浏览器中出现反复跳

动的现象。所以最后还是采取了脚本计算分配宽度的做法。