锋利的jQuery-4--图片切换的一个例子(自己理解后写的,以备忘记时看看)

一个动画切换的效果,如图:

分析步骤:

1.点击左右的箭头图片滚动,左边的小点变化。

2.主要问题是当滚到最后一屏时切换回第一屏,第一屏在向前滚动是切换到最后一屏 :通过判断图片的总数然后除以每屏显示的数量得到最大屏数,根据当前处于第几屏判断如何滚动。

3.左边的小点切换问题 : 根据当前的屏数,通过eq()选中,因为eq()从0开始,所以要当前屏数 - 1 ,获取要显示的小点。

html部分的代码:

  <div class="v_show">
        <div class="v_caption">
            <h2 class="cartoon" title="卡通动漫">卡通动漫</h2>
            <div class="highlight_tip">
                <span class="current">1</span><span>2</span><span>3</span><span>4</span>
            </div>
            <div class="change_btn">
                <span class="prev" >上一页</span>
                <span class="next">下一页</span>
            </div>
            <em><a href="#">更多>></a></em>
        </div>
        <div class="v_content">
            <div  class="v_content_list">
                <ul>
                    <li><a href="#"><img src="img/01.jpg" alt="海贼王" /></a><h4><a href="#">海贼王</a></h4><span>播放:<em>28,276</em></span></li>
                    <li><a href="#"><img src="img/01.jpg" alt="海贼王" /></a><h4><a href="#">海贼王</a></h4><span>播放:<em>28,276</em></span></li>
                    <li><a href="#"><img src="img/01.jpg" alt="海贼王" /></a><h4><a href="#">海贼王</a></h4><span>播放:<em>28,276</em></span></li>
                    <li><a href="#"><img src="img/01.jpg" alt="海贼王" /></a><h4><a href="#">海贼王</a></h4><span>播放:<em>28,276</em></span></li>
                    <li><a href="#"><img src="img/02.jpg" alt="哆啦A梦" /></a><h4><a href="#">哆啦A梦</a></h4><span>播放:<em>33,326</em></span></li>
                    <li><a href="#"><img src="img/02.jpg" alt="哆啦A梦" /></a><h4><a href="#">哆啦A梦</a></h4><span>播放:<em>33,326</em></span></li>
                    <li><a href="#"><img src="img/02.jpg" alt="哆啦A梦" /></a><h4><a href="#">哆啦A梦</a></h4><span>播放:<em>33,326</em></span></li>
                    <li><a href="#"><img src="img/02.jpg" alt="哆啦A梦" /></a><h4><a href="#">哆啦A梦</a></h4><span>播放:<em>33,326</em></span></li>
                    <li><a href="#"><img src="img/03.jpg" alt="火影忍者" /></a><h4><a href="#">火影忍者</a></h4><span>播放:<em>28,276</em></span></li>
                    <li><a href="#"><img src="img/03.jpg" alt="火影忍者" /></a><h4><a href="#">火影忍者</a></h4><span>播放:<em>28,276</em></span></li>
                    <li><a href="#"><img src="img/03.jpg" alt="火影忍者" /></a><h4><a href="#">火影忍者</a></h4><span>播放:<em>28,276</em></span></li>
                    <li><a href="#"><img src="img/03.jpg" alt="火影忍者" /></a><h4><a href="#">火影忍者</a></h4><span>播放:<em>28,276</em></span></li>
                    <li><a href="#"><img src="img/04.jpg" alt="龙珠" /></a><h4><a href="#">龙珠</a></h4><span>播放 <em>57,865</em></span></li>
                    <li><a href="#"><img src="img/04.jpg" alt="龙珠" /></a><h4><a href="#">龙珠</a></h4><span>播放 <em>57,865</em></span></li>
                    <li><a href="#"><img src="img/04.jpg" alt="龙珠" /></a><h4><a href="#">龙珠</a></h4><span>播放 <em>57,865</em></span></li>
                    <li><a href="#"><img src="img/04.jpg" alt="龙珠" /></a><h4><a href="#">龙珠</a></h4><span>播放 <em>57,865</em></span></li>
                 </ul>
            </div>
        </div>
    </div>

主要通过css控制图片外围div(.v_content)和包裹图片的div(.v_content_list)的样式来控制图片的切换:

* { margin:0; padding:0; word-break:break-all; }
body { background:#FFF; color:#333; font:12px/1.5em Helvetica, Arial, sans-serif; }
h1, h2, h3, h4, h5, h6 { font-size:1em; }
a { color:#2B93D2; text-decoration:none; }
a:hover { color:#E31E1C; text-decoration:underline; }
ul, li { list-style:none; }
fieldset, img { border:none; }

/* v_show style */
.v_show { width:595px; margin:20px 0 1px 60px; }
.v_caption { height:35px; overflow:hidden; background:url(img/btn_cartoon.gif) no-repeat 0 0; }
.v_caption h2 { float:left; width:84px; height:35px; overflow:hidden; background:url(img/btn_cartoon.gif) no-repeat; text-indent:-9999px; }
.v_caption .cartoon { background-position: 0 -100px; }
.v_caption .variety { background-position:-100px -100px; }
.highlight_tip { display:inline; float:left; margin:14px 0 0 10px; }
.highlight_tip span { display:inline; float:left; width:7px; height:7px; overflow:hidden; margin:0 2px; background:url(img/btn_cartoon.gif) no-repeat 0 -320px; text-indent:-9999px; }
.highlight_tip .current { background-position:0 -220px; }
.change_btn { float:left; margin:7px 0 0 10px; }
.change_btn span { display:block; float:left; width:30px; height:23px; overflow:hidden; background:url(img/btn_cartoon.gif) no-repeat; text-indent:-9999px; cursor:pointer; }
.change_btn .prev { background-position:0 -400px;  }
.change_btn .next { width:31px; background-position:-30px -400px; }
.v_caption em { display:inline; float:right; margin:10px 12px 0 0; font-family:simsun; }

/* 控制外围的div的position为relative,overflow为hidden,里边的div的position为absolute,这样才能控制里边的div滚动 */
.v_content { position:relative; width:592px; height:160px; overflow:hidden; border-right:1px solid #E7E7E7; border-bottom:1px solid #E7E7E7; border-left:1px solid #E7E7E7; }
.v_content_list { position:absolute; width:2500px;top:0px; left:0px; }
.v_content ul {float:left;}
.v_content ul li { display:inline; float:left; margin:10px 2px 0; padding:8px; background:url(img/v_bg.gif) no-repeat; }
.v_content ul li a { display:block; width:128px; height:80px; overflow:hidden; }
.v_content ul li img {  width:128px; height:96px; }
.v_content ul li h4 { width:128px; height:18px; overflow:hidden; margin-top:12px; font-weight:normal; }
.v_content ul li h4 a { display:inline !important; height:auto !important; }
.v_content ul li span { color:#666; }
.v_content ul li em { color:#888; font-family:Verdana; font-size:0.9em; }

jQuery代码:

$(function(){
            var page = 1;  //定义当前的页码
            var i = 4;   //定义每页显示的图片数量

            $(".change_btn .next").click(function(){  //下一页按钮点击事件
                var parent = $(this).parents("div.v_show");  //根据当前点击的元素获取到父元素
                var content = parent.find("div.v_content");  //找到 "图片展示区域" 的外围div
                var content_list = parent.find("div.v_content_list");  //找到 "图片展示区域" 的div
                var sleft = content.css("width");  //获取外围div的宽度,以便控制图片滚动的宽度[css()获取到的是元素的样式宽度,带px。width()获取到的是元组在页面上的宽度,不带px]

                var imgNum = content_list.find("li").length;  //获取图片的总数,以便计算最多有多少屏
                var sumPage = Math.ceil(imgNum / i);  //最大屏数,控制到最后一屏时回到第一屏,进一取整
                if(page == sumPage){
                    content_list.stop(false,true).animate({"left" : 0}, 600);  //如果当前是最后一屏,则回到第一屏
                    page = 1;  //把当前页设为1
                }else{
                    content_list.stop(false,true).animate({"left" : "-=" + sleft}, 600);  //如果不是最后一屏,left值递减
                    page++ ;  //当前页加1
                }

                /* 根据当前的页数判断选定第几个span添加current类 */
                parent.find(".highlight_tip").find("span").eq(page - 1).addClass("current").siblings().removeClass("current");

            });

            $(".change_btn .prev").click(function(){  //上一页按钮点击事件
                var parent = $(this).parents("div.v_show");
                var content = parent.find("div.v_content");
                var content_list = parent.find("div.v_content_list");
                var sleft = content.width();

                var imgNum = content_list.find("li").length;
                var sumPage = Math.ceil(imgNum / i);
                if(page == 1){
                    content_list.stop(false,true).animate({"left" : -((sumPage-1) * sleft) + "px"}, 600);
                    page = sumPage;
                }else{
                    content_list.stop(false,true).animate({"left" : "+=" + sleft}, 600);
                    page-- ;
                }
                parent.find(".highlight_tip").find("span").eq(page - 1).addClass("current").siblings().removeClass("current");

            });

        });

  

完整代码下载:http://vdisk.weibo.com/s/aj5eU-ZwuaV0t

时间: 2024-10-22 02:17:59

锋利的jQuery-4--图片切换的一个例子(自己理解后写的,以备忘记时看看)的相关文章

JQuery实现图片切换(自动切换+手动切换)

学习JS的时候本来积攒了很多有趣的小例子,但是苦于没有找到一些好的平台来展示这些JS效果.今天发现了RunJS这个分享代码的平台,迫不及待得想跟大家分享. 在浏览各大商城网站的时候,或者某些网站的首页,都会展示与本网站相关的一些实时切换的图片, 本文就给大家分享一个用jQuery实现图片自动切换的例子. 主页核心代码(Default.aspx): <!DOCTYPE html> <html> <head> <meta http-equiv="Conten

18款 非常实用 jquery幻灯片图片切换

1.jquery图片滚动仿QQ商城带左右按钮控制焦点图片切换滚动 jquery图片特效制作仿腾讯QQ商城首页banner焦点图片轮播切换效果,带索引按钮控制和左右按钮控制图片切换. 查看演示>>          下载地址 2.jquery图片切换插件制作图片层叠缩放展示效果 jquery图片插件制作图片等比列缩放层叠样式,图片叠加展示.点击层叠最上层的图片依次点击缩放图片层叠缩放切换. 查看演示>> 下载地址 3.jquery图像幻灯片制作大小图片切换滚动展示 jquery图像幻

Jquery实现图片切换效果(IE,FF,Goole)都可以正常运行

这里先对标签的样式进行设置(我这里只用了3张图片,可以根据自己的情况,添加) 1 <style type="text/css"> 2 3 /*展示图片切换的div样式*/ 4 #ShowImg { 5 width: 599px; 6 height: 324px; 7 background-image: url("imgs/1.jpg");/*注意自己的图片路径和图片名称*/ 8 margin: 0 auto; 9 } 10 /*显示点击切换按钮的div*

jquery视差图片切换

<!DOCTYPE html>   <html>       <head>   <meta charset="UTF-8">   <title>视差图片文字切换</title>   <script src="js/jquery-2.1.0.js"></script>   <style>   .box {   width:750px;   height: 750

一个例子深入理解ClassLoader

文件类加载器,该加载器重载了loadClass方法,逻辑是只读取文件来加载类,不委托给父类加载器进行加载 package com.ydd.study.hello.classloader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public cl

jquery 图片切换

仿着写的一个jquery的图片切换小插件,代码如下: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{ margin:0; padding:0; } ul,li{ list-style:none; } .cl{ zoom:1;

一款基于jQuery的图片分组切换焦点图插件

这是一款基于jQuery的图片切换焦点图插件,这款jQuery焦点图插件的特点是图片可以分组切换,也就是说一次可以切换多张图片,相比其他焦点图插件,它能节省更多的空间,可以向用户展示更多的图片,非常实用. 在线预览   源码下载 实现的代码. html代码: <div class="device"> <h2> <a href="javascript:;" class="pre">上一组</a><

HTML5 切换播放的video,图片切换

1.图片切换 //将img中src修改后图片就将修改 //H5 <img id="img" src="img/1.jpg" > //JS var img = document.getElementById("img"); img.setAttribute("src", "img/2.jpg"); 2.video播放的视频仿照图片进行切换--失败 //1.仿照图片切换,修改后播放的视频没有改变 /

用html+css+jQuery实现的一个简单的图片切换特效

这篇文章主要介绍了用html+css+js(jQuery)实现的一个简单的图片切换特效,需要的朋友可以参考下. 记得要引入一个jQuery库文件,可以是网上在线的,也可以是本地的,注意路径. 如图所示. 该图片切换特效实现很简单,而且兼容性很好. html页面如下 复制代码代码如下: <div class="wrapper"> <div id="focus"> <ul> <li><a href="htt