博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
尝试写第一个js插件 图片轮播
阅读量:6508 次
发布时间:2019-06-24

本文共 5493 字,大约阅读时间需要 18 分钟。

最近在看怎么写js插件,尝试写了一个简单的图片轮播插件 jqury.picPlay.js 。

基本html框架为<div class="picPanel"><div class="slider"></div></div>,根据需要往里添加class为.pic、.num、.txt的div来分别放置图片列表,数字列表和文字列表。

调用方式:$.fn.jsPicPlay(setting);

setting可以设置三个参数

type: 图片切换方向,默认为横向切换,值为2的时候为垂直切换

intervalTime:设置图片多久切换一次,默认为3000ms

speed:图片切换的速度,默认为200ms

 

插件源码

JS

View Code
(function($){    $.fn.extend({        jsPicPlay:function(setting){            var setting = setting || {};            var config = {                type:1, //默认横向切换                intervalTime:3000,                speed:400            };            $.extend(config,setting);            var panel =  this.length ? this : $(".picPanel");            panel.each(function(){                var panel = $(this),pic = $(".pic",panel),num = $(".num",panel),txt = $(".txt",panel),cn="on",intervalTime = config.intervalTime,speed = config.speed,type=config.type,curIndex=0,myTime = 0;                var picList = $("ul",pic),picItem = $("li",pic),numItem=$("li",num),txtItem = $("li",txt);                var flash = {                    setStyle:function(){                        switch(type){                            case 2:                                picList.css({position:"absolute"});                                    break;                            default:                                picList.css({position:"absolute","width":picItem.width()*picItem.length});                                picItem.css({
"float":"left"}); } }, setNum:function(){ var ht=""; for(var i=1;i
"; } num.append("
    "+ht+"
"); numItem = $("li",num); numItem.first().addClass("on"); }, play:function(){ ++curIndex >= picItem.length && (curIndex=0); switch(type){ case 2: picList.animate({ top:-curIndex*picItem.height() },speed); break; default: picList.animate({ left:-curIndex*picItem.width() },speed); } numItem.removeClass(cn).eq(curIndex).addClass(cn); txt.length && txtItem.eq(curIndex).show().siblings().hide(); }, start:function(){ myTime = picItem.length && setInterval(flash.play,3000); }, stop:function() { clearInterval(myTime); } }; flash.setStyle(); pic.length && num.length && flash.setNum(); flash.start(); num.delegate("li",'click',function(){ flash.stop(); curIndex=numItem.index($(this))-1; flash.play(); flash.start(); }); }); return panel; } });})(jQuery);

CSS

View Code
.picPanel ul,.picPanelul li{
padding:0; margin:0; list-style:none;}.picPanel {
font-size:12px; font-family:arial,simsun;}.slider{
width:400px; height:300px; padding:2px; border:1px solid #ccc; overflow:hidden; position:relative;}.pic {
width:400px; height:300px; overflow:hidden; position:absolute;}.num {
position:absolute; bottom:20px; right:10px; height:20px;}.num li {
width:14px; height:14px; background:#000; color:#fff; margin:0 3px; text-align:center; line-height:14px; font-size:10px; cursor:pointer; float:left;}.num .on {
font-weight:bold; background:#ff0000;}.txt {
position:absolute; bottom:2px; height:20px; width:400px; opacity:0.6; filter:alpha(opacity=60); background:#000; overflow:hidden;}.txt li {
color:#fff; height:20px; line-height:20px; padding-left:8px; z-index:99;}

示例:

完整的带有数字和文字的轮播

 
  • 风景1
  • 风景2
  • 风景3
  • 风景4

html

  • 风景1
  • 风景2
  • 风景3
  • 风景4

执行JS

$("#picOne").jsPicPlay();

 

仅有图片的轮播

html

执行JS

$("#picTwo").jsPicPlay({type:2});

 

如果当前页面的一个或多个轮播都使用同样的设置直接写$.fn.jsPicPlay()来执行;

转载于:https://www.cnblogs.com/blackwood/archive/2013/04/03/2998186.html

你可能感兴趣的文章
浅谈Tomcat服务器优化方法
查看>>
面向对象访问修饰符
查看>>
安装oracle出现环境不满足最低要求
查看>>
Java并发编程(一)并发特性
查看>>
css3 渐变实例2径向渐变
查看>>
Python通用编程 - 第四章:字符编码
查看>>
好程序员java教程分享+号与append的效率问题
查看>>
滚动字幕标记<marquee></marquee>
查看>>
Hadoop2搭建Federation+HA
查看>>
bzoj 1066: [SCOI2007] 蜥蜴
查看>>
JQ和Js获取span标签的内容
查看>>
计算机网络的现实应用
查看>>
oracle笔记
查看>>
jQuery学习笔记(二)
查看>>
线性回归
查看>>
操作系统概述
查看>>
java研发工作组环境架设
查看>>
速度快的国外镜像国家
查看>>
牛客网NOIP赛前集训营-普及组(第一场)
查看>>
Linux GPRS模块问题
查看>>