热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

jquery——左右按钮点击切换一组图片功能

一、最终效果二、功能分析1、需求分析点击左边pre按钮,显示前面三个图片,点击右边的next按钮,显示后面的一组(三个)图片。初始化只显示next按钮,到最后一组只显示pre按钮,中间过程两按钮都显示
一、最终效果

>a>li>
<li><a href="Javascript:;"><img src="images/activity02-1410.jpg">a>li>
<li><a href="Javascript:;"><img src="images/activity03-1410.jpg">a>li>
<li><a href="Javascript:;"><img src="images/activity03-1410.jpg">a>li>
<li><a href="Javascript:;"><img src="images/activity02-1410.jpg">a>li>
ul>
div>

 #activity-slide是整个幻灯的入口,后面会将其作为参数来调用幻灯功能。

 两个按钮ps_pre和ps_next将添加click事件响应点击切换功能。

 3、功能分析

因为左右切换都是三个为一组的切换,如果li总个数不是3的倍数时,需要增加li节点填满。

//需要追加的li节点个数
var addli = 0;
//一组切换3个li
var num=3;
var lisize = a.find("ul li").size();//获取li个数

//判断需要添加的li节点数量
var reminder=lisize%num;
if(lisize%num!=0){addli = num-reminder;}
else{addli = 0;}
addlist();

上面是判断得到需要追加的个数lisize,然后调用addlist追加。

addlist如下,从ul的第一个li开始复制,需要几个就复制出几个节点追加。节点追加完毕后重新计算ul的宽度。

        function addlist(){
for(i=0;i){
var html = a.find("ul li").eq(i).html();
a.find(
"ul").append("
  • "+html+"
  • ");
    }
    a.find(
    "ul").css({"width":(w_li+margin_li*2)*(lisize+addli)});
    }

    现在准备工作已经完成了。接下来就是给按钮添加响应事件。在幻灯切换时涉及到左右按钮的显示和隐藏,所以先说这个按钮显示功能,将此分装成一个函数btnshow。

            /***
    参数说明:
    now:当前是第几组,默认是0
    c:总共有几组
    d:初始化时li的个数
    e:每组显示li个数
    **
    */
    function btnshow(now,c,d,e){
    if(d<=e){//如果初始化时li的个数小于一组要显示的数,则不显示pre和next按钮
    a.find(".ps_next").hide();
    a.find(
    ".ps_pre").hide();
    }
    else if(now==0){//初始化now=0,显示第一组,只显示next
    a.find(".ps_next").show();
    a.find(
    ".ps_pre").hide();
    }
    else if(now==c-1){//显示到最后一组,只显示pre
    a.find(".ps_next").hide();
    a.find(
    ".ps_pre").show();
    }
    else{//显示中间组,pre和next都需要显示
    a.find(".ps_next").show();
    a.find(
    ".ps_pre").show();
    }
    }

     接下来幻灯切换。这里a是传入的参数,也就是 #activity-slide。给它下面的所有的pre和next添加响应。

    向前一组,组数now减一,now是几,就让ul的margin-left为负几倍的组宽(即3倍的(li宽度+margin宽度)),然后显示对于按钮即可。

    向后滑动一组li同理。

            function photoscroll(){
    a.find(
    ".ps_pre").on("click",function(){//console.log(num);
    now--;
    if(now >= 0){
    a.find(
    "ul").animate({"margin-left":-now*num*(w_li+margin_li*2)});
    btnshow(now,parseInt((lisize
    +addli)/num),lisize,num);
    }
    });

    a.find(
    ".ps_next").on("click",function(){//console.log(num);
    now++;
    if(now <(lisize+addli)/num){
    a.find("ul").animate({"margin-left":-now*num*(w_li+margin_li*2)});
    btnshow(now,parseInt((lisize
    +addli)/num),lisize,num);
    }
    });
    btnshow(now,parseInt((lisize
    +addli)/num),lisize,num);
    }

    4、问题

    可能是jquery写的原因,加了浏览器缩放尺寸响应后点击切换按钮响应有延时。

    三、代码

    1、用到图片

    >a>li>
    <li><a href="Javascript:;"><img src="images/activity02-1410.jpg">a>li>
    <li><a href="Javascript:;"><img src="images/activity03-1410.jpg">a>li>
    <li><a href="Javascript:;"><img src="images/activity03-1410.jpg">a>li>
    <li><a href="Javascript:;"><img src="images/activity02-1410.jpg">a>li>
    ul>
    div>
    div>

    div>


    body>
    html>
    <script src="http://code.jquery.com/jquery-latest.js">script>
    <script>
    //首页图片滚动切换
    (function($){
    $.photolist
    =function(a){
    var w_li = a.find("li").width();
    var h_li = a.find("li").height();
    var margin_li=parseInt(a.find("li").css("marginLeft"));
    var now = 0;
    var num = 0;
    var addli = 0;
    var lisize = a.find("ul li").size();
    var htmlall = a.find("ul").html();

    //判断每次滚动数量
    /*
    var w_body = $("body").width();
    if(w_body <=1170){
    var num = 3;
    }else if(w_body<= 1380){
    var num = 4;
    }else if(w_body>1380){
    var num = 5;
    }
    */
    var num=3;

    //判断需要添加的li节点数量
    var reminder=lisize%num;
    if(lisize%num!=0){addli = num-reminder;}
    else{addli = 0;}
    addlist();
    //点击滚动事件
    photoscroll();

    $(window).resize(
    function(){
    //location.reload();
    now = 0;
    addli
    = 0;
    a.find(
    "ul").html(htmlall);//html内容还原初始值
    a.find(".ps_next").show();//按钮样式初始化
    a.find(".ps_pre").hide();
    //判断每次滚动数量
    /*
    var w_body = $("body").width();
    if(w_body <=1170){
    var num = 3;
    }else if(w_body<= 1380){
    var num = 4;
    }else if(w_body>1380){
    var num = 5;
    }
    */
    var num=3;
    //判断需要添加的li节点数量
    var reminder=lisize%num;
    if(lisize%num!=0){addli = num-reminder;}
    else{addli = 0;}
    addlist();
    w_li
    = a.find("li").width();
    margin_li
    =parseInt(a.find("li").css("marginLeft"));
    a.find(
    "ul").css({"width":(w_li+margin_li*2)*(lisize+addli)});
    a.find(
    "ul").animate({"margin-left":0});//ul位置还原
    btnshow(now,parseInt((lisize+addli)/num),lisize,num);
    });


    function addlist(){
    for(i=0;i<addli;i++){
    var html = a.find("ul li").eq(i).html();
    a.find(
    "ul").append("

  • "+html+"
  • ");
    }
    a.find(
    "ul").css({"width":(w_li+margin_li*2)*(lisize+addli)});
    //console.log(a.find("ul li").size());
    }
    function photoscroll(){
    a.find(
    ".ps_pre").on("click",function(){//console.log(num);
    now--;
    if(now >= 0){
    a.find(
    "ul").animate({"margin-left":-now*num*(w_li+margin_li*2)});
    btnshow(now,parseInt((lisize
    +addli)/num),lisize,num);
    }
    });

    a.find(
    ".ps_next").on("click",function(){//console.log(num);
    now++;
    if(now < (lisize+addli)/num){
    a.find("ul").animate({"margin-left":-now*num*(w_li+margin_li*2)});
    btnshow(now,parseInt((lisize
    +addli)/num),lisize,num);
    }
    });
    btnshow(now,parseInt((lisize
    +addli)/num),lisize,num);
    }
    /***
    参数说明:
    now:当前是第几组,默认是0
    c:总共有几组
    d:初始化时li的个数
    e:每组显示li个数
    **
    */
    function btnshow(now,c,d,e){
    if(d<=e){//如果初始化时li的个数小于一组要显示的数,则不显示pre和next按钮
    a.find(".ps_next").hide();
    a.find(
    ".ps_pre").hide();
    }
    else if(now==0){//初始化now=0,显示第一组,只显示next
    a.find(".ps_next").show();
    a.find(
    ".ps_pre").hide();
    }
    else if(now==c-1){//显示到最后一组,只显示pre
    a.find(".ps_next").hide();
    a.find(
    ".ps_pre").show();
    }
    else{//显示中间组,pre和next都需要显示
    a.find(".ps_next").show();
    a.find(
    ".ps_pre").show();
    }
    }

    }
    })(jQuery);
    $.photolist($(
    "#activity-slide"));
    script>View Code

    css部分:

    View Code

     

    本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/4956293.html有问题欢迎与我讨论,共同进步。

     


    推荐阅读
    • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
    • CSS3选择器的使用方法详解,提高Web开发效率和精准度
      本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
    • Webpack5内置处理图片资源的配置方法
      本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
    • 大连微软技术社区举办《.net core始于足下》活动,获得微软赛百味和易迪斯的赞助
      九月十五日,大连微软技术社区举办了《.net core始于足下》活动,共有51人报名参加,实际到场人数为43人,还有一位专程从北京赶来的同学。活动得到了微软赛百味和易迪斯的赞助,场地也由易迪斯提供。活动中大家积极交流,取得了非常成功的效果。 ... [详细]
    • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
    • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
      一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
    • [译]技术公司十年经验的职场生涯回顾
      本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
    • 家装日记六:家具采购和瓷砖选择
      本文记录了作者进行家装的过程,包括家具采购和瓷砖选择。作者介绍了自己家的装修风格以及选择烤漆家具和红白系列的原因。作者还提到了装修风格以简约为主,不可以太花哨的要求。最后,作者提到了价格较贵的问题。 ... [详细]
    • 本文讨论了当某位排位靠前的涉众提供了一张精美的界面图片时,是否可以将其作为设计约束。同时还探讨了高质量素材和愿景之间的关系,以及老大自身的软件方法和建模技能。 ... [详细]
    • sklearn数据集库中的常用数据集类型介绍
      本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
    • 本文介绍了一些好用的搜索引擎的替代品,包括网盘搜索工具、百度网盘搜索引擎等。同时还介绍了一些笑话大全、GIF笑话图片、动态图等资源的搜索引擎。此外,还推荐了一些迅雷快传搜索和360云盘资源搜索的网盘搜索引擎。 ... [详细]
    • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
      这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
    • 本文研究了使用条件对抗网络进行图片到图片翻译的方法,并提出了一种通用的解决方案。通过学习输入图像到输出图像的映射和训练相应的损失函数,我们可以解决需要不同损失函数公式的问题。实验证明该方法在合成图片、重构目标和给图片着色等多个问题上都很有效。这项工作的重要发现是不再需要人为构建映射函数和损失函数,同时能够得出合理的结果。本文的研究对于图片处理、计算机图片合成和计算机视觉等领域具有重要意义。 ... [详细]
    • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
    • 也就是|小窗_卷积的特征提取与参数计算
      篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
    author-avatar
    双木子婷_893
    这个家伙很懒,什么也没留下!
    Tags | 热门标签
    RankList | 热门文章
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有