原生 js 左右切换轮播图

使用方法:
可能很多人对轮播图感兴趣,下面奉上本人的 原生 js 轮播代码
复制 js 到页面的最底部,样式在 css 里改,js 基本不用动,有什么不懂的可以 加本人 QQ172360937 咨询 或者留言都可以,这个是用 原生写的 轮播图,样式可以写自己喜欢的样式,什么都不用改,只改变样式就行,页面结构的id 要与js的相对应li随便加。li 随便加的意思就是说你可以加无数个图片。每个li 里装一个图片,或者是其他什么元素,

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{padding:0;margin:0;}
        div{
            width:200px;/*必须有*/
            height:50px;/*必须有*/
            position:relative;/*必须有===*/
            overflow:hidden;/*必须有===*/
            -webkit-user-select: none;/*必须有*/
            -moz-user-select: none;/*必须有*/
            -ms-user-select: none;/*必须有*/
            user-select: none;/*必须有*/
            margin:20px;
        }
        ul{
            position:absolute;/*必须有*/
            left:0;/*必须有*/
            font-size:0;/*必须有*/

        }
        li{list-style: none;/*必须有*/
            font-size:16px;/*必须有*/
            height:50px;/*必须有*/
            width:200px;/*必须有*/
            float:left;/*必须有*/
        }
        #parent{
            width:50%;
            height:200px;
            border:1px solid red;
            margin:0 auto;
        }
        .span{
            display:inline-block;/*必须有*/
            width:20px;
            height:20px;
            line-height:20px;
            text-align: center;
            border-radius:50%;
            color:white;
            cursor:pointer;/*必须有*/
        }
    </style>
</head>
<body>
<div id="parent">
    <div>
        <ul id=‘ul‘>
            <li style=‘background:red;‘>第一个</li>
            <li style=‘background:yellow;‘>第二个</li>
            <li style=‘background:pink;‘>第三个</li>
            <li style=‘background:green;‘>第四个</li>
            <li style=‘background:blue;‘>第五个</li>
            <li style=‘background:blue;‘>第6个</li>
            <li style=‘background:green;‘>第7个</li>
            <li style=‘background:blue;‘>第8个</li>
            <li style=‘background:green;‘>第9个</li>
            <li style=‘background:blue;‘>第10个</li>
        </ul>
    </div>
    <a href="#" id="prev">向左</a>
    <a href="#" id="next">向右</a>
</div>
<script>
    var prev = document.getElementById(‘prev‘);
    var next = document.getElementById(‘next‘);
    var parent = document.getElementById(‘parent‘);
    var ttt;
    var type = true;
    var t;
    var span;
    var ul = document.getElementById(‘ul‘);
    var li = ul.getElementsByTagName(‘li‘);
    var color1 = ‘#cccccc‘;//小圆点的背景颜色 灰色
    var color2 = ‘red‘;//小圆点的背景颜色,红色
    var liWidth = li[0].offsetWidth;
    ul.style.width = liWidth*li.length+‘px‘;
    //        点点
    for(var i = 0;i<li.length;i++){
        li[i].index = i;
        span = document.createElement(‘span‘);
        span.className = ‘span‘;
        span.style.background = color1;
        span.innerHTML = i+1;
        parent.appendChild(span);
    }
    var span_span = parent.getElementsByTagName(‘span‘);
    for(var n = 0;n<span_span.length;n++){
        span_span[n].index = n;
        //所有的小圆点的事件
        span_span[n].onmouseover = function(){
            if(type){
                ul_ul(this.index);
                for(var s = 0;s<span_span.length;s++){
                    span_span[s].style.background = color1;
                    span_span[this.index].style.background = color2;
                }
                type = true;
            }
        }
    }
    function ul_ul(inde){
        var this_li = li[0].index;
        if(inde>this_li){
            var x = inde-this_li;
            for(var y = 0;y<x;y++){
                ul.appendChild(li[0]);
            }
        }
        if(inde<this_li){
            var x_x = this_li-inde;
            for(var g = 0;g<x_x;g++){
                ul.insertBefore(li[li.length-1],li[li.length-li.length]);
            }
        }
    }
    span_span[0].style.background = color2;
    prev.onclick = function(){
        if(type){
            clearInterval(t);
            ul.insertBefore(li[li.length-1],li[li.length-li.length]);
            liWidth = li[0].offsetWidth;
            ul.style.left = ‘-‘+liWidth+‘px‘;
            t = setInterval(rem,5);//动画速度修改
            type = false;
            background(0);
        }
    };
    next.onclick = function(){
        if(type){
            liWidth = 0;
            clearInterval(ttt);
            ttt = setInterval(nex,5);//动画速度修改
            type = false;
            background(1);
        }
    };
    function background(number){
        for(var j = 0;j<span_span.length;j++){
            span_span[j].style.background = color1;
        }
        span_span[li[number].index].style.background = color2;
    }
    function nex(){
        ul.style.left = ‘-‘+liWidth+ ‘px‘;
        liWidth += 3 ;
        if(liWidth == li[0].offsetWidth+1){
            clearInterval(ttt);
            ul.appendChild(li[li.length-li.length]);
            liWidth = 0;
            ul.style.left = liWidth+‘px‘;
            type = true;
        }
    }
    function rem(){
        ul.style.left = ‘-‘+liWidth+‘px‘;
        liWidth -= 3 ;
        if(liWidth == -1){
            clearInterval(t);
            type = true;
        }
    }
    var parent_t = setInterval(next.onclick,1500);
    parent.onmouseover = function(){
        clearInterval(parent_t);
    };
    parent.onmouseout = function(){
        parent_t = setInterval(next.onclick,1500);
    };
</script>
</body>
</html>
时间: 2024-10-25 15:39:39

原生 js 左右切换轮播图的相关文章

原生JS实现简易轮播图

原生JS实现简易轮播图(渐变?) 最近做网页总是会用到轮播图,我就把之前写的轮播图单独拿出来吧,如果有...如果真的有人也需要也可以复制去用用啊..哈~.. window.onload = function() { var tab = 0; var loop_imgs = new Array("img/l1.jpg", "img/l2.jpg", "img/l3.jpg", "img/l4.jpg", "img/l5

photoSlider-html5原生js移动开发轮播图-相册滑动插件

简单的移动端图片滑动切换浏览插件 分别引用css文件和js文件 如: <link rel="stylesheet" type="text/css" href="css/photoSlider.min.css" /> <script src="js/photoSlider.min.js" type="text/javascript" charset="utf-8">

原生js写简单轮播图方式1-从左向右滑动

轮播图就是让图片每隔几秒自动滑动,达到图片轮流播放的效果.轮播图从效果来说有滑动式的也有渐入式的,滑动式的轮播图就是图片从左向右滑入的效果,渐入式的轮播图就是图片根据透明度渐渐显示的效果,这里说的是实现第一种效果的方法. 原理 相同大小的图片并成一列,但只显示其中一张图片,其余的隐藏,通过修改left值来改变显示的图片.点击查看效果 html部分 nav为总容器,第一个ul列表#index为小圆点列表,鼠标覆盖哪个小圆点就显现第几张图片,on是一个给小圆点添加背景颜色属性的类:第二个ul列表#i

一个用原生JS造的轮播图插件

a native-js slider 一个无缝轮播图的小轮子 ( ?° ?? ?°)?? 前言 自己弄这个轮子是来自之前vue做一个音乐播放器项目时,用到了一个第三方vue组件better-scroll,当时参考这个文档做轮播图的时候,发现slider-item真实渲染出来的多了两个节点,向作者提问了下,回答当传入 snap:{loop:true} 的时候,前后各 clone 一个节点,保证可以无缝循环轮播,那么多克隆这两个节点是怎么实现无无缝轮播图呢,查阅了相关原理,就做了下这个轮子. 在线演

js自动切换轮播图

思路:左右切换--左右切换(加上小圆点)--小圆点点击--动画效果--自动切换 html: <div id="container"> <div id="list" style="left: -600px;"> <img src="images/55.jpg" alt="1"> <img src="images/11.jpg" alt="

原生js点击轮播图效果

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script> <title>原生js轮播效果</title&g

原生js实现的轮播图,易用+可多用

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style rel="stylesheet"> body { margin: 0; padding: 0 } .imgwall { position: relative; overflow: hidden; margin: 0 auto

原生js仿网易轮播图

<!-- HTML部分 --> <div id="wrap"> <div class="picBox"> <!-- 图片区域 --> <div id="pic"> <div><a href="#"><img src="imgs/1.jpg" alt=""/></a></div

原生JavaScript实现无缝轮播图

无缝轮播图是页面常用的特效之一,然而在实际的开发过程中,大部分的开发者都会使用插件来对轮播图进行开发,那么它的底层到底是怎么实现的呢,本文章将围绕这一问题展开探讨. 在讨论如何利用原生JS实现图片之间无缝切换轮播的动画效果之前,我们先来谈谈无缝轮播图片的css布局. 首先我们需要一个用来显示图片的DIV容器,然后把想要轮播的图片没有缝隙的排成一行放入DIV容器中,给DIV容器设置 overflow: hidden,这样在页面中就可以只看到一张图片,然后通过利用JS来移动ul的left值就能达到无