Fork me on GitHub

jquery制作一个简单的轮播

效果图:

演示地址:
http://ae6623.cn/demo/slider/index.html

思路:

利用css的定位属性 left 进行调整图片的显示,每次点击上一页下一页按钮的时候,-图片宽度 * index(当前li索引)即可。

代码:


<!DOCTYPE HTML>
<html>
<head>
    <!--申明当前页面的编码集-->
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <!--网页标题-->
    <title>slider</title>
    <!--网页关键词-->
    <meta name="keywords" content="" />
    <!--网页描述-->
    <meta name="description" content="" />
    <!--适配当前屏幕-->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
    <!--禁止自动识别电话号码-->
    <meta name="format-detection" content="telephone=no" />
    <!--禁止自动识别邮箱-->
    <meta content="email=no" name="format-detection" />
    <!--iphone中safari私有meta标签,
        允许全屏模式浏览,隐藏浏览器导航栏-->
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <!--iphone中safari顶端的状态条的样式black(黑色)-->
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style type="text/css">
        /*reset 重置*/
        body,ul,ol,p,h1,h2,h3,h4,h5,dl,dd,form,input,textarea,
        td,th,button,strong,em,select,video,canvas{margin:0;padding:0;}
        li{list-style:none;vertical-align:top;}
        table{ border-collapse:collapse;}
        textarea{resize:none;overflow:auto;}
        img{ border:none; vertical-align:middle;}
        em{ font-style:normal;}
        a{ text-decoration:none;}
        a,input{
            -webkit-appearance: none;/*屏蔽阴影*/
            -webkit-tap-highlight-color:rgba(0,0,0,0);
            /*ios android去除自带阴影的样式*/
        }
        a, img {
            /* 禁止长按链接与图片弹出菜单 */
            -webkit-touch-callout: none;
        }
        html, body {
            /* 禁止选中文本(如无文本选中需求,此为必选项) */
            -webkit-user-select: none;
            user-select: none;
        }
        /*public*/
        html {
            font-size : 20px;
        }
        @media only screen and (min-width: 401px){
            html {
                font-size: 25px !important;
            }
        }
        @media only screen and (min-width: 428px){
            html {
                font-size: 26.75px !important;
            }
        }
        @media only screen and (min-width: 481px){
            html {
                font-size: 30px !important;
            }
        }
        @media only screen and (min-width: 569px){
            html {
                font-size: 35px !important;
            }
        }
        @media only screen and (min-width: 641px){
            html {
                font-size: 40px !important;
            }
        }
        body{font-family: "Helvetica Neue", Helvetica, "STHeiTi", sans-serif;
            overflow-x:hidden; overflow-y:auto; font-size:0.7rem;
        }
        .clear{zoom:1;}
        .clear:after{content:''; display:block; clear:both;}
        .fl{float:left;}
        .fr{float:right;}
        .viewport{ max-width:640px; margin:0 auto; overflow-x:hidden;}

        #slider{width:400px;position: relative;overflow: hidden;}
        #slider-head{width:400px;}
        #silder-head>div{float: left;height: 20px;line-height: 20px;vertical-align: middle;}
        
        #slider-head-button{width:350px;}
        #slider-head-button span{font-size: 12px;display: block;float: left;margin:3px;}
        
        #slider-content ul{position:relative;height: 150px;width:2000px;}
        #slider-content li{position:relative;width:200px;height: 150px;float: left;margin-right:5px;}
        #slider-content  .li1{background-color:#3399cc;}
        #slider-content  .li2{background-color: #cc3333;}
        #slider-head-dots{ }
        #slider-head-dots li{display: inline-block; width: 10px; height: 10px; margin: 5px 0px; text-indent: -999em; border: 2px solid #fff; border-radius: 6px; cursor: pointer; opacity: .4; -webkit-transition: background .5s, opacity .5s; -moz-transition: background .5s, opacity .5s; transition: background .5s, opacity .5s; background: #000;} 

        #slider-head-dots li.active,li:hover {
            background: #000;
            opacity: 1;
        }

        </style> 
       
        </head>
<body>
    <div>
        <div id="main">
            <div id="slider">
                <div id="silder-head">
                    <div id="slider-head-button"><span class="l"> <a href="#" class="pri"><</a></span><span class="r"> <a href="#" class="next">></a> </span></div>
                    <div id="slider-head-dots">
                        <ol class="dots">
                            <li class="dot active">1</li>
                            <li class="dot">2</li>
                        </ol>
                    </div>
                </div>
                <div class="clear"></div>
                <div id="slider-content">
                    <ul>
                        <li class="li1">1</li>
                        <li class="li2">2</li>
                        <li class="li1">3</li>
                        <li class="li2">4</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  <script type="text/javascript">
    $(function() {
        console.log('author:Luo Yu');
        //拿到小圆点
        var nav = $('#slider-head-dots ol').find('li');
        //轮播内容
        var content = $("#slider-content").find('ul');
       //按钮 左右剪头,我没用图片,用了大于号小于号临时将就一下
        var head_button = $("#slider-head-button").find("a");
        //第一张图片的宽度 
        var imgWidth = content.find("li").eq(0).width() + 5;

        //点击了小圆点
        nav.click(function() {
            var me = $(this);
            var index = me.index();
            nav.removeClass("active");
            me.addClass("active");
            //轮播
            content.animate({
                "left": -imgWidth * 2 * index
            });
        });

        //点击了左右剪头
        head_button.click(function(){
            var me = $(this);
            var index = me.attr("class");
            if(index == "pri"){
                index = 0;
            }else{
                index = 1;
            }

            nav.removeClass("active");
            nav.eq(index).addClass("active");
            content.animate({
                "left": -imgWidth * 2 * index
            });
            
        });
    });
    </script>
</body>

</html>


posted @ 2016-02-22 01:22  _落雨  阅读(202)  评论(0编辑  收藏  举报