漂亮的图片切换

前几天看到一个朋友分享的仿京东的图片切换样式,觉得很好,不过仔细研究后发现代码比较繁琐,经过改良之后觉得用起来会比较方便,看着也简洁了许多。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery仿京东通过商品标题切换背景图片特效 - JS代码网</title>
<link rel="stylesheet" href="style/style.css" />
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/floor.js"></script>
</head>
<body>
<center><br>

        <div class="fr">
            <ul class="frImg">
                <li><img src="image/1.jpg"  /></li>
                <li><img src="image/2.jpg" /></li>
                <li><img src="image/3.jpg" /></li>
                <li><img src="image/4.jpg"  /></li>
                <li><img src="image/5.jpg" /></li>
            </ul>
            <ul class="frText">
                <li class="hover"><span class="fCs1"> 美丽伊人 <s></s></span></li>
                <li><span class="fCs2">天使翅膀<s></s></span></li>
                <li><span class="fCs3">完美心情<s></s></span></li>
                <li><span class="fCs4">迷人芬芳<s></s></span></li>
                <li><span class="fCs5">靓丽如花<s></s></span></li>
            </ul>
        </div>
  </div>

</center>
<div style="text-align:center;clear:both"><br>

</div>
</body>
</html>

这里,只需要一个div,套两个ul就可以了,然后设置两个ul的position: absolute,外层的div为position: relative;这样两个ul就都定位在这个叫.fr的div上了。

/*@charset "utf-8";*/

*{margin:0;padding: 0}

body{font-famliy:"微软雅黑";}
li{list-style: none;}
.fr{width: 350px;height: 425px;margin-right: 10px;position: relative;overflow: hidden;} //这里设置的是外层div的高宽,同时这也是一长图片的高宽,超过的就隐藏
.frImg{width:1750px;height:425px;position: absolute;left: 0px;}         //这里是第一个ul的样式,需要说明的是,width需要设置成图片的宽度*张数,如果设置小了,后面的图片就没法显示了
.frImg li{float:left;}                                                 //图片层只要设置一下左浮动就可以了
.frText{width:350px;position: absolute ;left:0;top:275px;}  //这是第二个ul的样式,主要就是要和图片的底部对齐,用top就可以了
.frText li{height: 30px;position: relative;overflow: hidden; opacity: 0.4;}//上边设置了每个li是30px,此处设置了opacity是因为想要不影响底层图片的美观
.frText li.hover{opacity:1;}                                        //当然,如果选中的话就设置其为不透明的
.frText li span{width: 350px;height: 30px;display: block;position: absolute;left:-30px; color:#FFFFFF;line-height:27px;font-size:16px; font-weight:800}//此处就是切换条的高宽和文字样式了
.frText li span s{width: 5px;height: 9px;position: absolute;top:10px;right: 15px;cursor: pointer;overflow: hidden;background: url(../image/heels.png) -107px -20px;opacity: 0;}
.frText li.hover span s{opacity: 1;}    //这是右侧那个小尖括号的样式,hover的时候显示,否则就不显示
.fCs1{background:#87B6A7;}
.fCs2{background:#FFA042;}
.fCs3{background:#C093CC;}
.fCs4{background:#9EA7D6;}
.fCs5{background:#93AE60;}

接下来调用js

 

$(function(){
    $(".frText li.hover").find("span").css({left:0});//这段脚本的意思是当鼠标悬浮在哪个切换条的时候,那个切换条就left:0 ,本来的样式是-30
    $(".frText li").mouseover(function(){
        if($(this).hasClass("hover")){return};//此处是说当鼠标悬浮在进度条的那个类上的时候,首先查找这个类hover类,如果是就返回,如果不是执行以下代码
          var toleft=$(this).index()*350*(-1)+"px";    //声明一个变量toleft,将当前li的指数乘以350再乘以-1,得出的数赋值给这个变量
          $(this).addClass("hover").find("span").stop().animate({left:0,opacity: 1},500);//此处的意思是找到当前li之后添加hover类,并且添加后面的动画,使切换条向右滚动
          $(this).siblings().removeClass("hover").find("span").stop().animate({left:"-30px",opacity: 0.5},600);//此时还需要把之前的hover类去掉,并且还原样式
          //图片显示
          $(this).parent().prev(".frImg").stop().animate({left:toleft},400);   //最后需要找到这个li的父级的前一层中为.frImg的类,让它的图片向左移动toleft
    })

})

效果图如下:

 

posted @ 2014-12-02 10:48  spade  阅读(595)  评论(0编辑  收藏  举报