我的编程空间,编程开发者的网络收藏夹
学习永远不晚

jquery如何实现走马灯特效

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

jquery如何实现走马灯特效

本文小编为大家详细介绍“jquery如何实现走马灯特效”,内容详细,步骤清晰,细节处理妥当,希望这篇“jquery如何实现走马灯特效”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

话不多说,先上大致效果:

jquery如何实现走马灯特效

html代码:

<div class="main-box">    <div class="poker_box">      <div class="pokerCaroursel poker-content" data-setting='{        "width":1094,        "height":338,        "pokerWidth":488,        "pokerHeight":338,        "scale":0.85,        "speed": 500,        "autoPlay":true,        "delay":2000,        "verticalAlign":"middle"                }'>        <!-- 向左按钮 -->        <div class="poker-btn poker-prev-btn"></div>        <ul class="poker-list">          <!-- 图片张数最好是基数,这样呈现的画面才好看 -->          <li class="poker-item poker-rad">              <div class="item">                <a href="#" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" ><img class="tabImg" class="lazy" data-src="images/01.jpg"></a>                 <span class="poker-item-title">图一</span>              </div>          </li>          <li class="poker-item poker-rad">              <div class="item">                <a href="#" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" ><img class="tabImg" class="lazy" data-src="images/02.jpg"></a>                <span class="poker-item-title">图二</span>               </div>          </li>          <li class="poker-item poker-rad">            <div class="item">              <a href="#" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" ><img class="tabImg" class="lazy" data-src="images/03.jpg"></a>              <span class="poker-item-title">图三</span>            </div>          </li>        </ul>        <!-- 向右按钮 -->        <div class="poker-btn poker-next-btn"></div>      </div>    </div>  </div>

注意:

  • 类名不要随意更改(否则插件里面的也要更改),替换图片地址即可。

  • data-setting属性记得按照以上格式设置,不然可能报错

script代码:

<script class="lazy" data-src="jquery.js"></script><script class="lazy" data-src="jquery.pokerCarousel.js"></script><script>pokerCaroursel.init($('.pokerCaroursel'))</script>

注意:
要记得先引入jquery.js文件(可去官网下载:https://jquery.com/download/),再引入jquery.pokerCarousel.js文件

jquery.pokerCarousel.js文件完整代码:

var MIDDLE_PIC_POS = 1//计算如何用最短的距离移动到目标//由于有两种移动方式,向左边移动或者像右边移动,只需要在这两种方式中选择一个小的就行了;(function($){    var pokerCaroursel = function (caroursel){        var self = this;        this.caroursel = caroursel;        this.pokerList = caroursel.find(".poker-list");        this.pokerItems = caroursel.find(".poker-item");        this.firstpokerItem = this.pokerItems.first();        this.lastpokerItem = this.pokerItems.last();        this.prevBtn = this.caroursel.find(".poker-prev-btn");        this.nextBtn = this.caroursel.find(".poker-next-btn");        this.buttonItems = caroursel.find(".tabBtn");        //每个移动元素的位置索引,用于记录每个元素当前的位置,在每次移动的时候,该数组的值都会发生变化        //数组的下标对应li元素的位置索引        this.curPositions = [];        for(var i = 0;i<this.pokerItems.length;++i){            this.curPositions[i] = i+1;        }        this.setting = {            "width":"1106",            "height":"340",            "pokerWidth":"488",            "pokerHeight":"340",            "scale":"0.8",            "speed":"1000",            "isAutoplay":"true",            "dealy":"2000"        };        $.extend(this.setting,this.getSetting());        this.setFirstPosition();        this.setSlicePosition();        this.refreshCss();        this.rotateFlag = true;        this.prevBtn.bind("click",function(){            if(self.rotateFlag){                self.rotateFlag = false;                self.rotateAnimate("left")            }        });        this.nextBtn.bind("click",function(){            if(self.rotateFlag){                self.rotateFlag = false;                self.rotateAnimate("right")            }        });        //绑定位置按钮事件         this.buttonItems.each(function(index){             var _this = $(this);             _this.click(function(){                 self.clickPosButtonIndex(index);             })         });        if(this.setting.isAutoplay){            this.autoPlay();            this.caroursel.hover(function(){clearInterval(self.timer)},function(){self.autoPlay()})        }    };    pokerCaroursel.prototype = {        autoPlay:function(){          var that = this;          this.timer =  window.setInterval(function(){              that.nextBtn.click();          },that.setting.dealy)        },        refreshCss:function(){            var that= this;            var curFirstPos;//当前位于中间的li元素位置            this.buttonItems.each(function(index){                var _this = $(this);                var curPos = that.curPositions[index];                if(curPos == 1){                    _this.addClass('poker-btn-active');                }                else{                    _this.removeClass('poker-btn-active');                }            });        },        //记录每次移动的状态        refreshPositions:function(offset){            for(var i = 0; i < this.curPositions.length; ++i)            {                var nextPos = this.curPositions[i] + offset;                if (nextPos > this.curPositions.length) {//移动超过末尾,则位置变成到开头                    nextPos = nextPos - this.curPositions.length;                }else                  if (nextPos < 1) {向左边移动已经移动到开始位置更左边,则位置变成结束                     nextPos = this.curPositions.length + nextPos;                 }                this.curPositions[i] = nextPos;            }            //console.log('after refreshPositions',this.curPositions);            this.refreshCss();        },         cal_move_path:function(curPos,desPos,arraySize) {            if(curPos == desPos) return null;            //往左边移动             var goRightSteps;             var goLeftSteps;             var retDirect;             var retStep;             if(curPos > desPos){                 goRightSteps = curPos - desPos;                 goLeftSteps = desPos + (arraySize - curPos);                 retDirect = (goRightSteps <= goLeftSteps) ? "left":"right";                 return {"direct":retDirect,"step":Math.min(goLeftSteps,goRightSteps)};             }        },        //点击位置按钮,根据点击的按钮索引 决定向左还是向右移动[因为只有三个位置,该方法能够仅靠向左或向右就能将        //指定的位置移动到中间]        clickPosButtonIndex:function(index){            var self = this;            if(self.rotateFlag == false) {//目前正在移动等移动结束后才能进入                return;            }            var curPos = this.curPositions[index];            var retPath = this.cal_move_path(curPos,MIDDLE_PIC_POS,this.curPositions.length);            if (retPath == null){                return;            }            var direct = retPath.direct;            var step = retPath.step;            self.rotateFlag = false;            self.rotateAnimate(direct,step)        },        rotateAnimate:function(type,step){            step = step || 1;            var that = this;            var zIndexArr = [];            var speed = that.setting.speed;                this.pokerItems.each(function(){                   var self = $(this);                   var destPic = null;                   var curPic = self;                   for (var i = 0; i < step;++i){                        if(type == "left"){// 向左边移动, 下一张图片在自己的右边,所以用next()                            destPic = curPic.next().get(0)?curPic.next():that.firstpokerItem;                        }                        else{                            destPic = curPic.prev().get(0)?curPic.prev():that.lastpokerItem;                        }                        curPic = destPic;                    }                    var width = destPic.css("width");                    var height = destPic.css("height");                    var zIndex = destPic.css("zIndex");                    var opacity = destPic.css("opacity");                    var left = destPic.css("left");                    var top = destPic.css("top");                    zIndexArr.push(zIndex);                    self.animate({                        "width":width,                        "height":height,                        "left":left,                        "opacity":opacity,                        "top":top                    },speed,function(){                        that.rotateFlag = true;                    });                });                this.pokerItems.each(function(i){                    $(this).css("zIndex",zIndexArr[i]);                });                if (type == 'right'){                    this.refreshPositions(-step);                }else{                    this.refreshPositions(step);                }        },        setFirstPosition:function(){            this.caroursel.css({"width":this.setting.width,"height":this.setting.height});            this.pokerList.css({"width":this.setting.width,"height":this.setting.height});            var width = (this.setting.width - this.setting.pokerWidth) / 2;            console.log(this.pokerItems.length)            this.prevBtn.css({"width":width , "height":this.setting.height,"zIndex":Math.ceil(this.pokerItems.length/2)});            this.nextBtn.css({"width":width , "height":this.setting.height,"zIndex":Math.ceil(this.pokerItems.length/2)});            this.firstpokerItem.css({                "width":this.setting.pokerWidth,                "height":this.setting.pokerHeight,                "left":width,                "zIndex":Math.ceil(this.pokerItems.length/2),                "top":this.setVertialType(this.setting.pokerHeight)            });        },        setSlicePosition:function(){            var _self = this;            var sliceItems = this.pokerItems.slice(1),                level = Math.floor(this.pokerItems.length/2),                leftItems = sliceItems.slice(0,level),                rightItems = sliceItems.slice(level),                pokerWidth = this.setting.pokerWidth,                pokerHeight = this.setting.pokerHeight,                Btnwidth = (this.setting.width - this.setting.pokerWidth) / 2,                gap = Btnwidth/level,                containerWidth = this.setting.width;            var i = 1;            var leftWidth = pokerWidth;            var leftHeight = pokerHeight;            var zLoop1 = level;            leftItems.each(function(index,item){                var scale = _self.setting.scale;                if(index==1){                    scale = scale*scale;                }                leftWidth = pokerWidth * scale;                leftHeight = pokerHeight*scale;                $(this).css({                    "width":leftWidth,                    "height":leftHeight,                    "left": Btnwidth - i*gap,                    "zIndex":zLoop1--,                    "opacity":2/(i+1),                    "top":_self.setVertialType(leftHeight)                });                i++;            });            var j = level;            var zLoop2 = 1;            var rightWidth = pokerWidth;            var rightHeight = pokerHeight;            rightItems.each(function(index,item){                var scale = _self.setting.scale;                if(index==0){                    scale = scale*scale;                }                var rightWidth = pokerWidth * scale;                var rightHeight = pokerHeight*scale;                $(this).css({                    "width":rightWidth,                    "height":rightHeight,                    "left": containerWidth -( Btnwidth - j*gap + rightWidth),                    "zIndex":zLoop2++,                    "opacity":2/(j+1),                    "top":_self.setVertialType(rightHeight)                });                j--;            });        },        getSetting:function(){            var settting = this.caroursel.attr("data-setting");            if(settting.length > 0){                return $.parseJSON(settting);            }else{                return {};            }        },        setVertialType:function(height){            var align = this.setting.align;            if(align == "top") {                return 0            }else if(align == "middle"){                return (this.setting.pokerHeight - height) / 2            }else if(align == "bottom"){                return this.setting.pokerHeight - height            }else {                return (this.setting.pokerHeight - height) / 2            }        }    };    pokerCaroursel.init = function (caroursels){        caroursels.each(function(index,item){            new pokerCaroursel($(this));        })  ;    };    window["pokerCaroursel"] = pokerCaroursel;})(jQuery);// JavaScript Document

css代码:

.main-box{ height: 352px; width:1118px;position: absolute;top: 122px;left: 32px;}.poker_box h3 {font-size: 30px;color: #015293;font-weight: bold;text-align: center;}.poker_box h4 {font-size: 16px;color: #015293;margin: 10px 0 35px;text-align: center;}.poker-content {width: 1129px;position: relative;width: 100%;height: 350px!important;margin-left: auto;margin-right: auto;}.poker-content img {display: block;box-shadow: 0px 0px 10px #222222;-webkit-box-shadow: 0px 0px 10px #222222;border: 0;}.poker-content a, .poker-content img {display: block;width: 100%;height: 100%;border: none;}img {border: none;display: block;}.poker-content .poker-list {width: 1118px;height: 500px;}.poker-content .poker-list .poker-item {width: 200px;height: 350px;position: absolute;left: 0;top: 0;}.poker-rad{  border-radius: 20px;  overflow: hidden;}.poker-rai{  border-radius: 20px;  overflow: hidden;}.poker-content .poker-list .poker-item .item {position: relative;width: 100%;height: 100%;}.poker-content .poker-btn {position: absolute;top: 0;cursor: pointer;filter: opacity(.5) brightness(1);}.poker-content .poker-btn:hover {filter: opacity(1) brightness(2);}.poker-content .poker-prev-btn {left: 0;}.poker-content .poker-next-btn {right: 0;}.poker-item-title {background:rgba(42, 42, 42, 0.8) none repeat scroll 0 0 !important;filter:Alpha(opacity=80); background:#2a2a2a;text-align: center;color: #FFF;width: 100%;height: 52px;line-height: 52px;position: absolute;bottom: 0;text-indent: 29px}

读到这里,这篇“jquery如何实现走马灯特效”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

jquery如何实现走马灯特效

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

jquery如何实现走马灯特效

本文小编为大家详细介绍“jquery如何实现走马灯特效”,内容详细,步骤清晰,细节处理妥当,希望这篇“jquery如何实现走马灯特效”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。话不多说,先上大致效果:html代
2023-06-29

Vue如何实现简单跑马灯特效

这篇文章主要介绍“Vue如何实现简单跑马灯特效”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue如何实现简单跑马灯特效”文章能帮助大家解决问题。效果:点击按钮让文字动起来,点击停止按钮让文字停止知
2023-06-30

微信小程序如何实现走马灯式抽奖

今天小编给大家分享一下微信小程序如何实现走马灯式抽奖的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。先来看下效果设置奖项awa
2023-06-30

Vue如何实现跑马灯效果

这篇文章主要介绍Vue如何实现跑马灯效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、跑马灯效果说明:单击"应援"按钮文字向左飘动,再单击"暂停"按钮停止当前飘动2、完整代码 (注意:代码中需要引入vue.js文
2023-06-25

jquery如何实现轮播特效

这篇文章主要介绍了jquery如何实现轮播特效的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jquery如何实现轮播特效文章都会有所收获,下面我们一起来看看吧。1、获取li的个数length和宽度width v
2023-07-04

Vue如何实现列表跑马灯效果

这篇文章主要介绍了Vue如何实现列表跑马灯效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue如何实现列表跑马灯效果文章都会有所收获,下面我们一起来看看吧。Vue文件中:
    2023-06-30

Vue如何实现简易跑马灯效果

本文小编为大家详细介绍“Vue如何实现简易跑马灯效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue如何实现简易跑马灯效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Vue跑马灯效果:1.分析a.点击"加
2023-06-30

小程序如何实现跑马灯效果

这篇“小程序如何实现跑马灯效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“小程序如何实现跑马灯效果”文章吧。先看效果图实现
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录