图片轮播效果

今天有点空,写了个图片轮播的效果,使用了jq,直接上代码吧。

效果:http://edwardzhong.github.io/blog/2014/10/31/slidePics.html

html如下:

<div class="wrap">
    <div class="left fl">&lt;</div>
    <div class="right fr">&gt;</div>
    <div class="pics">
        <ul class="clearfix">
            <li><img src="../images/Chrysanthemum.jpg" alt="" /></li>
            <li><img src=../images/Desert.jpg" alt="" /></li>
            <li><img src="../images/Hydrangeas.jpg" alt="" /></li>
            <li><img src="../images/Jellyfish.jpg" alt="" /></li>
            <li><img src="../images/Koala.jpg" alt="" /></li>
            <li><img src="../images/Lighthouse.jpg" alt="" /></li>
            <li><img src="../images/Penguins.jpg" alt="" /></li>
            <li><img src="../images/Tulips.jpg" alt="" /></li>
        </ul>
    </div>
</div>

样式如下:

<style>
    .wrap{
        width: 800px;
        margin: 0 auto;
        border:1px solid #ddd;
    }
    .left,.right{
        width: 20px;
        height: 240px;
        line-height: 240px;
        background-color: #ddd;
        cursor: pointer;
        color:#666;
        font-size: 30px;
        font-weight: bold;

    }
    .clearfix:after{
        content: ‘.‘;
        display: block;
        height: 0;
        visibility: hidden;
        clear: both;
    }
    .clearfix{zoom:1;}
    .fl{float: left;}
    .fr{float: right;}
    .pics{
        height: 240px;
        margin:0 20px;
    }
    .pics img{
        width: 100%;
        opacity: 1;filter: alpha(opacity=100);
    }
    .pics ul{
        list-style-type: none;
        margin: 0;padding: 0;
        position: relative;
    }
    .pics ul li{
        position: absolute;
        top:60px;right:380px;
        width: 160px;
        height: 120px;
        background-color: #000;
        display: none;
        cursor: pointer;
    }
</style>

js如下:

<script>
$(function(){
    //轮播使用到的5张图片
    var s=[
        {i:3,zIndex:5,opacity: 1,animate:{top:‘0‘,left:‘220px‘,width:‘320px‘,height:‘240px‘}},
        {i:2,zIndex:4,opacity: 0.5,animate:{top:‘22px‘,left:‘100px‘,width:‘260px‘,height:‘195px‘}},
        {i:4,zIndex:3,opacity: 0.5,animate:{top:‘22px‘,left:‘400px‘,width:‘260px‘,height:‘195px‘}},
        {i:1,zIndex:2,opacity: 0.2,animate:{top:‘60px‘,left:‘30px‘,width:‘160px‘,height:‘120px‘}},
        {i:5,zIndex:1,opacity: 0.2,animate:{top:‘60px‘,left:‘570px‘,width:‘160px‘,height:‘120px‘}}
    ],
    //隐藏的图片
    hid={zIndex:0,top:‘60px‘,left:‘380px‘,width:‘160px‘,height:‘120px‘,opacity: 1,display:‘none‘},
    lis=[].slice.call($(‘.pics li‘)),len=lis.length,slen=s.length,i,
    timer=null,lflag,rflag;
    //初始化
    function init(){
        if(len<s.length){
            slen=s.length=len;
        }
        s.sort(function(a,b){
            return a.i-b.i;
        });
        i=Math.floor(slen/2);
        while(i--){
            slideRight();
        }
        animate(400);
    }
    //执行动画
    function animate(interval){
        $(lis).each(function(i){
            if(s[i]){
                $(this).attr("i",i)
                .css({zIndex:s[i].zIndex})
                .animate(s[i].animate, interval).show()
                .children(‘img‘).animate({opacity:s[i].opacity}, interval);
            }else{
                $(this).css(hid);
            }
        });
    }
    //将元素第1项移到队列尾部从而实现向右移动的效果
    function slideLeft(){
        lis.push(lis.shift());
    }
    //将元素最后1项移到队列头部从而实现向左移动的效果
    function slideRight(){
        lis.unshift(lis.pop());
    }
    //轮播
    function next(){
        timer=setInterval(function(){
            slideLeft();
            animate(400);
        },2000);
    }
    //绑定向左向右事件
    //鼠标移入,清除自动播放,移开时添加自动播放,点击执行向/左向右滚动
    //同时控制点击间隔为300ms
    lflag=rflag=true;
    $(‘.left‘).click(function(event){
        if(!lflag){return;}
        slideLeft();
        animate(400);
        lflag=false;
        setTimeout(function(){
            lflag=true;
        },300);
    }).mouseover(function(){
        clearInterval(timer);
    }).mouseout(next);
    $(‘.right‘).click(function(){
        if(!rflag){return;}
        slideRight();
        animate(400);
        rflag=false;
        setTimeout(function(){
            rflag=true;
        },300);
    }).mouseover(function(){
        clearInterval(timer);
    }).mouseout(next);

    //鼠标移入ul时,清除自动播放,移开时添加自动播放
    $(‘.pics ul‘).mouseover(function() {
        clearInterval(timer);
    }).mouseout(next);

    //点击两侧的图片将立即移动到中间显示
    $(‘.pics‘).on(‘click‘, ‘li‘, function(event) {
        var index=$(this).attr(‘i‘),interval=300;
        index=index-Math.floor(slen/2);
        if(index<0){
            index=Math.abs(index);
            interval=interval/index;
            while(index--){
                slideRight();
                animate(interval);
            }
        }else if(index>0){
            interval=interval/index;
            while(index--){
                slideLeft();
                animate(interval);
            }
        }
    });

    init();
    next();
});
</script>

时间: 2024-08-09 10:38:59

图片轮播效果的相关文章

CSS3图片轮播效果

原文:CSS3图片轮播效果 在网页中用到图片轮播效果,单纯的隐藏.显示,那再简单不过了,要有动画效果,如果是自己写的话(不用jquery等),可能要费点时间.css3的出现,让动画变得不再是问题,而且简单易用.下面介绍我用css3与js写的一个图片轮播效果. 一般图片轮播就是三四张图片: <div class="wrap"> <div class="carousel"> <div><img src="http://

js实现淘宝首页图片轮播效果

原文:http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=10585 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>淘宝首页图片轮播效果</title> <style> <!-- * {margin: 0;padding:0;} body

jQuery个性化图片轮播效果

购物产品展示:图片轮播器<效果如下所示> 思路说明: 每隔一段时间,实现图片的自动切换及选项卡选中效果 两个区域:   最外层容器区域,如上图红色线框矩形   选项卡区域 两个事件:    鼠标悬浮或鼠标划入mouseover    鼠标离开mouseleave /**大屏广告滚动样式**/ 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF

首页图片轮播效果

<html><head><meta  charset="utf-8" /><title>首页图片轮播效果</title><style type="text/css">* {margin: 0;padding:0;}body {background: #222;}ol{list-style: none;}img {border: 0 none;}#slider { border: 1px soli

简单的图片轮播效果

用js代码来实现一个简单的图片轮播效果 鼠标移入图片后显示左右箭头按钮,点击就可以实现图片的切换. 以下分别是html代码和js代码,欢迎批评和讨论! <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片轮播</title> <style> *{padding:0px; margin:0px;

安卓首页图片轮播效果(淘宝、京东首页广告效果)

直奔主题: 1.主要原理就是利用定时任务器定时切换ViewPager的页面. 2.里面用了一个读取网络图片的插件.做client使用本地图片轮播的也非常少. 先上个效果图: 项目代码结构截图: 自己定义View 的布局文件layout_slideshow.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.and

Jquery实现图片轮播效果

废话不多说,先上源码 1 <div id="baner"> 2 <div class="imgt"> 3 <div class="shadeDiv clarity"></div><!-- 透明层 --> 4 <ul> 5 <li name="1"></li> 6 <li name="2"></l

基于原生js的图片轮播效果简单实现

基本效果如下: 实现了三张图片自动轮播+按键点击切换的效果. 基本思想: 图片轮播的效果和老式电影院的胶片放映形式很相似,在老式的电影院放映中,使用长长的胶片记录影片,胶片上是按顺序排列的一系列图片,通过快速通过放映机放映口,使这些图片产生一个连贯的切换效果,形成了动态的影片.所以,这里图片轮播的形式也可以采用这种方式来形成动画效果. 形式如下图: (黑框即我们的最外层的容器,充当放映机的存在:绿框就是胶片,上面搭载着很多的图片:粉框内即我们要轮播的图片) 从上图出发,我们要做到图片轮播,那么只

选项卡例题效果和图片轮播效果例题

一.选项卡效果   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <html xmlns="http://www.w3.org/1999/xhtml">   <head>   <meta http-equi