切换图片尝试写第一个js插件 图片轮播


在写这篇文章之前,xxx已经写过了几篇关于改切换图片主题的文章,想要了解的朋友可以去翻一下之前的文章

最近在看怎么写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<picItem.length+1;i++){
                            ht+="<li>"+i+"</li>";
                        }
                        num.append("<ul>"+ht+"</ul>");
                        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

<div id="picOne" class="picPanel">
            <div class="slider">
                <div class="pic">
                    <ul>
                        <li><img src="img/1.jpg"/></li>
                        <li><img src="img/2.jpg"/></li>
                        <li><img src="img/3.jpg"/></li>
                        <li><img src="img/4.jpg"/></li>
                    </ul>
                </div>
                <div class="num"></div>
                <div class="txt">
                    <ul>
                        <li>景致1</li>
                        <li>景致2</li>
                        <li>景致3</li>
                        <li>景致4</li>
                    </ul>
                </div>
            </div>
        </div>

执行JS

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

 

仅有图片的轮播

  • 切换和图片
  • 切换和图片
  • 切换和图片
  • 切换和图片

html

<div class="picPanel" id="picTwo">
            <div class="slider">
                <div class="pic">
                    <ul>
                        <li><img src="img/4.jpg"/></li>
                        <li><img src="img/1.jpg"/></li>
                        <li><img src="img/2.jpg"/></li>
                        <li><img src="img/3.jpg"/></li>
                    </ul>
                </div>
            </div>
        </div>

执行JS

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

 

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

文章结束给大家分享下程序员的一些笑话语录: 问答
Q:你是怎么区分一个内向的程序员和一个外向的程序员的? A:外向的程序员会看着你的鞋和你说话时。
Q:为什么程序员不能区分万圣节和圣诞节? A:这是因为 Oct 31 == Dec 25!(八进制的 31==十进制的 25)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我来帮你一个轮播图的 HTML 代码。 首先,我们需要准备好轮播图的图片,可以将图片放在本地,也可以使用在线图片。 然后,在 HTML 代码中,我们可以使用 `<div>` 标签来包含轮播图的内容,然后使用 `<img>` 标签来显示每张图片。 下面是一个简单的例子: ```html <div class="slideshow"> <img src="image1.jpg" alt="image1"> <img src="image2.jpg" alt="image2"> <img src="image3.jpg" alt="image3"> </div> ``` 在这个例子中,我们使用了 `class` 属性来为轮播图定义一个类名,这样我们就可以使用 CSS 来设置轮播图的样式。 接下来,你可以使用 JavaScript 来实现轮播图的自动播放和切换效果。你也可以使用现成的轮播插件来实现这些功能。 希望这些内容能帮到你。 ### 回答2: 当然可以帮你一个轮播图的HTML代码。以下是一个简单的轮播图的HTML示例: ```html <!DOCTYPE html> <html> <head> <title>轮播图示例</title> <style> .slideshow { width: 500px; height: 300px; margin: 0 auto; overflow: hidden; } .slideshow img { width: 500px; height: 300px; } </style> </head> <body> <div class="slideshow"> <img src="image1.jpg" alt="图片1"> <img src="image2.jpg" alt="图片2"> <img src="image3.jpg" alt="图片3"> </div> <script> var index = 0; var images = document.getElementsByTagName('img'); setInterval(function() { images[index].style.display = 'none'; index = (index + 1) % images.length; images[index].style.display = 'block'; }, 2000); </script> </body> </html> ``` 上述代码创建了一个宽度为500px,高度为300px的轮播图容器,容器中包含了三张图片,分别是image1.jpg、image2.jpg和image3.jpg。通过设置JavaScript代码,实现了图片轮播效果,每2秒切换一张图片显示。 你可以将上述代码保存为一个HTML文件,然后在浏览器中打开,就可以看到简单的轮播效果了。你可以根据自己的实际需求,修改CSS样式和图片路径,来适配你自己的轮播图。 ### 回答3: 当然可以帮您一个轮播图的HTML代码。 首先,我们需要在HTML文件中创建一个容器,用于显示轮播图的图片。我们可以使用以下代码创建一个div元素,并给它一个id作为标识: ```html <div id="carousel"></div> ``` 接下来,我们需要在CSS中设置容器的样式,以便显示图片和实现轮播效果。您可以根据自己的需求进行调整。以下是一个简单的示例: ```html <style> #carousel { width: 100%; height: 300px; overflow: hidden; position: relative; } #carousel img { width: 100%; height: auto; position: absolute; top: 0; left: 0; display: none; } </style> ``` 然后,我们需要在JavaScript中编代码来切换图片。以下是一个使用JavaScript实现轮播效果的示例: ```html <script> var images = ["image1.jpg", "image2.jpg", "image3.jpg"]; // 图片源 var currentIndex = 0; // 当前显示的图片索引 function changeImage() { var carousel = document.getElementById("carousel"); var img = carousel.getElementsByTagName("img"); // 隐藏当前图片 img[currentIndex].style.display = "none"; // 切换到下一张图片 currentIndex++; // 如果到达最后一张图片,则切换到第一张图片 if (currentIndex >= images.length) { currentIndex = 0; } // 显示下一张图片 img[currentIndex].style.display = "block"; } // 每隔3秒切换一次图片 setInterval(changeImage, 3000); </script> ``` 最后,我们还需要在div容器中添加图片。您可以根据需要添加任意数量的图片。以下是一个示例: ```html <script> var carousel = document.getElementById("carousel"); for (var i = 0; i < images.length; i++) { var img = document.createElement("img"); img.src = images[i]; carousel.appendChild(img); } // 显示第一张图片 carousel.getElementsByTagName("img")[0].style.display = "block"; </script> ``` 这样,一个简单的轮播图就完成了。您可以根据自己的需要进行调整和美化,添加更多的功能和效果。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值