轮播图--JS手写

轮播图基本每个网站都会有,也有很多的JQuery插件可以用,这里是用JS代码写的。

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Test</title>
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    @*Css样式*@
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            height: 600px;
            position: relative;
        }

            ul li {
                float: left;
                list-style-type: none;
                height: 100%;
                background-position: 50% 50%;
                background-size: cover;
            }

        .one {
            background-image: url("/Content/1.jpg");
        }

        .two {
            background-image: url("/Content/2.jpg");
        }

        .three {
            background-image: url("/Content/3.jpg");
        }

        .four {
            background-image: url("/Content/4.png");
        }

        .dw {
            position: absolute;
            bottom: 5px;
            width: 100%;
            text-align: center;
        }

        ol {
            list-style: none;
            text-align: center;
        }

        ol li {
                display: inline-block;
                width: 22px;
                height: 4px;
                padding: 4px;
                overflow: hidden;
                text-indent: -999em;
                cursor: pointer;
                background-color: white;
            }

        .hasClass {
            background-color: red;
        }
    </style>

</head>
<body>
    <div style="position: relative; overflow: hidden; height: 600px;">
        @*有多少个li,ul的宽度就是 X00%*@
        <ul style="width:600%; margin-left:-100%;">
            @*第一张前面放最后一张,做轮播给人一种一直往一个方向的感觉*@        当显示这张图片时,ul就改变样式定位到第4张图片
            <li class="four" style="width:16.6667%"></li>   

            @*这里的li标签宽度是16.66667%怎么来的, 只有4张图片做轮播,前后各加一张就是6张,
            16.666667=100/6  如果是2张做轮播,一共4个li,   每个li的宽度就是25%*@

            @*这4张图片做轮播*@
            <li class="one" style="width:16.6667%"></li>
            <li class="two" style="width:16.6667%"></li>
            <li class="three" style="width:16.6667%"></li>
            <li class="four" style="width:16.6667%"></li>

            @*最后一张后面放第一张,做轮播给人一种一直往一个方向的感觉*@               当显示这张图片时,ul改变样式定位到第1张图片
            <li class="one" style="width:16.6667%"></li>

        </ul>
        <nav class="dw">
            <ol >
                <li data-slide="0" class="hasClass"></li>
                <li data-slide="1" class=""></li>
                <li data-slide="2" class=""></li>
                <li data-slide="3" class=""></li>

            </ol>
        </nav>
    </div>
</body>
</html>
<script>

    var mm;
    function hh() {
        //ul li做向左移动
        $("ul").animate({ "left": "+=" + "-100%" }, 1200, function () {
            var i;//得到第几张的值
            $("ol li").each(function () {
                if ($(this).attr("class") != "") {
                    i = $(this).attr("data-slide");
                }
            });
            //因为是做过一次动画才来找值,所有当i为3时,ul是的left是 -400%,也就是第5张图片
            i = parseInt(i) + 1;
            //如果等于4 就重置下,               这里有4张做轮播就是4
             if (parseInt(i) == 4) {
                i = 0;
                $("ul").css("left", "0%");  //重新定位下,ul的left已经重置了,因为图片没变,所以给人一个方向的假象
            }
            $("ol li").attr("class", "");   //把所有的li的样式移除
            $("ol li:eq(" + parseInt(i) + ")").attr("class", "hasClass");    //下面的图标显示

        })
        mm = setTimeout("hh()", 4000);   //每个4秒做一次动画
    }

    $(document).ready(function () {
        mm = setTimeout("hh()", 4000);
        //点第几张就显示几张    左右也是一回事,这里没写
        $("ol").on("click", "li", function () {
            var jj = $(this).attr("data-slide"); //点的第几张
            $("ol li").attr("class", "");
            $("ol li:eq(" + parseInt(jj) + ")").attr("class", "hasClass");    //下面的图标显示
            clearTimeout(mm);
            $("ul").animate({ "left": "-" + parseInt(jj) + "00%" }, 1200, function () {
                mm = setTimeout("hh()", 4000);
            });  //重新定位下
        })
    })

</script>
时间: 2024-11-08 20:25:01

轮播图--JS手写的相关文章

轮播图js底层思想

1. 先获得所有的对象. 2. 根据图片的个数动态的生成(创建)小方块. 2.1 默认让第一个小方块显示黄色 3. 注册鼠标移入事件,鼠标移入对应的小方块的时候,当前的小方块显示黄色,排他让其它的变为无色. 4. 鼠标移入小方块,显示对应的图片 比如放入第3个小方块,就显示第3张图片,也就是让ul向左移动. 5. 鼠标移入大盒显示左右按钮. 6. 给左右按钮注册单击事件. 7. 动态的在ul的最后添加第一张图片. 8.添加自动轮播. Ps : 让轮播图上的标识的小方块和左右点击的时候让它们的显示

轮播图js编写

//面向对象 function Left() { this.index = 0; this.lefthover = $('#left-content'); this.listenhover() } //监听hover事件(鼠标放上去轮播图停止) Left.prototype.listenhover = function () { var self = this; this.lefthover.hover(function () { clearInterval(self.timer) },func

手写angular轮播图(手机端无缝版)

代码地址: http://files.cnblogs.com/files/fxnet/%E6%89%8B%E5%86%99angular%E8%BD%AE%E6%92%AD%E5%9B%BE%EF%BC%88%E6%89%8B%E6%9C%BA%E7%AB%AF%E6%97%A0%E7%BC%9D%E7%89%88%EF%BC%89.zip <html><head> <meta name="viewport" content="initial-s

转:大气炫酷焦点轮播图js特效

使用方法 Step 1. 在html的标签内引入相关文件 <script type="text/javascript" src="js/myfocus-2.0.0.min.js"></script><!--引入myFocus库--> <script type="text/javascript" src="js/mf-pattern/slide3D.js"></script&

banner轮播图js

例子1: if(!$('.side_ul ul').is(":animated")){            var wli = $('.side_ul li').width()+25;            var lli = $('.side_ul li').length;            var tw = lli*wli;            var witem = wli*3;            var marl = parseInt($('.side_ul ul'

js实现图片轮播图(一)

一.实现原理 (1)将所有图片放在一个父容器div里面,通过display属性来设置图片的出现与隐藏: (2)轮播图分为手动轮播和自动轮播: 手动轮播的重点是每次点击图片下方的小圆圈,获得它的索引号,并让与之对应索引号的图片显示,并且此时的小圆圈为高亮显示: 自动轮播:利用定时器setInterval(),来每隔一定的时间来播放一次图片. (3)所有的基础知识:dom操作,定时器,事件运用. 二.轮播图页面布局: <div id="content">   <!-- 总

jquery特效(3)—轮播图①(手动点击轮播)

今天上班做设计做的头疼,就写了一个轮播图练练手,先写了一个手动点击轮播的轮播图,随后我会慢慢接着深入写自动轮播图和鼠标悬浮图片停止移动轮播图等~~~~~~虽然今天我生日,但是代码还是得写的,不能找借口放松自己,原地踏步也算后退~~~~ 下面来看看最终做的手动点击轮播效果: 哈哈哈,有没有看出来我的四张图片都是美男子哦~~~~找个赏心悦目的图片真不容易,这样才能激起我写轮播图的代码欲望,写出来就可以点击按钮翻他们牌子了~~~~ 一.原理说明 (1)首先是轮播图的架构,我采用了一个最外边的大div包

自己动手丰衣足食之轮播图一动态修改marginTop属性实现轮播图

引言 学习jQuery有年头了,刚开始学习时自己动手写过轮播图,放的久了以至于忘了大致思路了.现在转而做前端,抽空把jquery轮播图拿出来写一写,把各种思路都自己练习练习,这里主要使用动态修改marginTop来实现. 实现原理 1.除第一张图片外,其余图片全部隐藏,4张图片重叠起来. 2.导航按钮添加mouseover和mouseleave事件. 3.设置interval函数,启动定时器调用ShowImg函数. 4.动态修改marginTop属性达到上下轮播的效果,说道动态修改margin属

超详细轮播图,让你彻底明白轮播图!

刚开始学JavaScript时候很多新手都会尝试写一些简单的小项目,轮播图应该是写的最多的.但是很多时候对于基础不是很好的新手,虽然参照别人的代码能写出来一些轮播图,但其中的一些细节和过程可能还是一知半解甚至不懂,我作为一个新手刚刚写了几种常见的轮播图,里面的各种细节也花了不少时间弄懂,这里为大家介绍一种简单易懂且很完善的轮播图写法.里面的细节我会一一详细说明,希望和各位初入JavaScript的小伙伴一起进步. 轮播图的思路其实很简单:就是用JavaScript来控制轮播的图片的样式,可以控制