js动画之轮播图

一、 使用Css3动画实现

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            body,ul{
                list-style: none;
            }

            .outer{
                width: 750px;
                height: 366px;
                margin: 100px auto;
                border: solid 2px gray;

                overflow: hidden;
                position: relative;
            }

            .inner{
                width: 500%;
                height: 100%;
                position: relative;
                left: 0;

                animation: myAni 15s linear infinite alternate;
            }

            .inner img{
                float: left;
                width: 20%;
            }

            @keyframes myAni{
                0%{left: 0;}
                10%{left:0}
                20%{left: -100%;}
                30%{left: -100%;}
                40%{left: -200%;}
                50%{left: -200%;}
                60%{left: -300%;}
                70%{left: -300%;}
                80%{left: -400%;}
                100%{left: -400%;}
            }

            .outer ul{
                position: absolute;
                bottom: 16px;
                left: 50%;
                transform: translateX(-50%);
                display: flex;
            }

            .outer li{
                /*width: 12px;
                height: 12px;*/
                margin: 0 10px;
                /*background: white;*/
                border: solid 8px white;
                border-radius: 50%;
            }

            .outer .scroll-ball{
                border-color: yellowgreen;
                position: relative;
                left: -180px;

                animation: myBall 15s linear infinite alternate;
            }

            @keyframes myBall{
                0%{left: -180px;}
                10%{left:-180px;}
                20%{left: -144px;}
                30%{left: -144px;}
                40%{left: -108px;}
                50%{left: -108px;}
                60%{left: -72px;}
                70%{left: -72px;}
                80%{left: -36px;}
                100%{left: -36px;}
            }
        </style>
    </head>
    <body>
        <div class="outer">
            <div class="inner">
                <img src="img/5af3df82N15a1910a.jpg"/>
                <img src="img/5afbf194Nce807c23.jpg"/>
                <img src="img/5afce833N3a41e948.jpg"/>
                <img src="img/5af3df82N15a1910a.jpg"/>
                <img src="img/5afce833N3a41e948.jpg"/>
            </div>
            <ul>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li class="scroll-ball"></li>
            </ul>
        </div>
    </body>
</html>
二、 使用js实现

html代码:

    <!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/slideshow.css"/>
    </head>
    <body>
        <div class="slideshow">
            <!--图片-->
            <a href="img/aaa.jpg" id="slideshow-href">
                <img src="img/aaa.jpg"  id="slideshow-item"/>
            </a>
            <!--底部导航小圆点-->
            <ul id="conLis">
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
            <!--左右导航-->
            <div id="leftBtn">&lt;</div>
            <div id="rightBtn">&gt;</div>
        </div>
    </body>
    <script type="text/javascript" src="js/slideshow.js"></script>
</html>

css代码:

    body,ul,li{margin: 0;padding: 0;}
a{text-decoration: none;}
li{list-style: none;}

.slideshow{
    width: 800px;
    height: 500px;
    margin: 100px auto;
    overflow: hidden;

    position: relative;
}

#slideshow-item{
    display: block;
    width: 800px;
}

#conLis{
    position: absolute;
    bottom: 16px;
    left: 50%;
    transform: translateX(-50%);
}

.slideshow li{
    margin: 0 10px;
    border: solid 6px black;
    border-radius: 50%;
    float: left;
    cursor: pointer;
}

#leftBtn,
#rightBtn{
    padding: 8px 6px;

    font-size: 60px;
    color: white;

    background: #E7E7E7;

    position: absolute;
    top: 50%;
    transform: translateY(-50%);

    opacity:0.3;
    cursor: pointer;
}

#leftBtn{
    left: 15px;
}

#rightBtn{
    right: 15px;
}

js代码:

    //获取元素
var slideshow = document.querySelector(‘.slideshow‘);

var scrollHref = gt("slideshow-href");
var scrollItem = gt("slideshow-item");

//console.log(scrollHref+"===="+scrollItem);

var conLis = gt(‘conLis‘);
var items = conLis.getElementsByTagName(‘li‘);

var leftBtn = gt(‘leftBtn‘);
var rigthBtn = gt(‘rightBtn‘);

//设置存储图片的容器
var imgArr = ["img/aaa.jpg","img/bbb.jpg","img/ccc.jpg","img/ddd.jpg","img/eee.jpg","img/fff.jpg"];
var hrefArr = ["img/aaa.jpg","img/bbb.jpg","img/ccc.jpg","img/ddd.jpg","img/eee.jpg","img/fff.jpg"];

//设置索引0为第一张显示的图片
var currentIndex = 0;
scrollItem.src = imgArr[0];
scrollHref.href = hrefArr[0];

//设置第一个小圆点为黄色
items[0].style.borderColor = "yellow";

//设置定时更换图片
var timer = setInterval(changeItem,2000);

function changeItem(){
    currentIndex++;//图片索引自增1,显示下一张图片
    if(currentIndex == imgArr.length){
        currentIndex = 0;
    }
    //调用图片轮播,动态的改变当前索引值来改变轮播的图片
    slideShow(currentIndex);
}

//图片轮播
function slideShow(i){
    //设置轮播图片及链接图片
    scrollItem.src = imgArr[i];
    scrollHref.href = hrefArr[i];

    //设置对应轮播图片的小圆点效果
    for(var j = 0; j < items.length; j++){
        //设置所有小圆点为默认样式
        items[j].style.borderColor = ‘black‘;
    }

    //单独设置某张轮播图对应的小圆点样式
    items[i].style.borderColor = "yellow";
}

//设置鼠标滑过底部导航小圆点显示对应的图片
for(var j = 0; j < items.length; j++){
    //for循环内有事件动作的话是先执行循环,要想按钮每一次点击都是按钮的下标值,就要先记录i值,
    //不然等到循环执行完再执行onclick事件就会等于for循环最后得到的i值。
    items[j].index = j;//将循环数据赋值给列表中的索引;防止闭包函数中无法正常获取当前索引i,而衍生出的一个绑定在dom元素上的数据index
    items[j].onmouseover = function(){
        clearInterval(timer);//停止自动轮播
        slideShow(this.index);
    }

    items[j].onmouseout = function(){
        currentIndex = this.index;//将元素索引赋值给currentIndex,保证下一次自动轮播继续当前这个向下轮播
        timer = setInterval(changeItem,2000);
    }
}

//设置点击左右箭头的轮播
leftBtn.onmouseover = rightBtn.onmouseover = function(){
    leftBtn.style.opacity = "1";
    rightBtn.style.opacity = "1";

    //鼠标移动到区域停止轮播
    clearInterval(timer);
}

leftBtn.onmouseout = rigthBtn.onmouseout = function(){
    leftBtn.style.opacity = "0.3";
    rightBtn.style.opacity = "0.3";

    //鼠标离开开始轮播
    timer = setInterval(changeItem,2000);
}

leftBtn.onclick = function(){
    //判断当前图片是否为第一张图片索引
    if(currentIndex == -1){
        currentIndex = imgArr.length-1;//将最后一张图片赋值给前面的索引
    }
    slideShow(currentIndex);//调用轮播方法

    currentIndex--;//点击左侧按钮,做减法操作
}

rightBtn.onclick = function(){
    //判断当前图片是否为最后一张图片的索引
    if(currentIndex == imgArr.length-1){
        currentIndex = 0;//将第一张图片索引赋值
    }
    slideShow(currentIndex);

    currentIndex++;
}

//封装通过id获取元素的方法
function gt(id){//传入字符串类型的参数
    console.log("进入方法");
    return document.getElementById(id);
    console.log("获取元素成功");
}

原文地址:https://www.cnblogs.com/menglong1214/p/9595205.html

时间: 2024-10-07 11:34:48

js动画之轮播图的相关文章

JS+css3焦点轮播图PC端

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>js原生web轮播图</title> 6 <style> 7 *{ 8 margin:0; 9 padding:0; 10 list-style: none; 11 -moz-user-select: none;/*文字不可选

JS学习笔记--轮播图效果

希望通过自己的学习收获哪怕收获一点点,进步一点点都是值得的,加油吧!!! 本章知识点:index this for if else 下边我分享下通过老师教的方式写的轮播图,基础知识实现: 1.css代码 <style> ul, ol { padding:0; margin:0; } li { list-style:none; } #box { width:600px; height:350px; border:10px solid #ccc; margin:0 auto; position:r

原生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

原生 js 左右切换轮播图

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

js学习总结----轮播图之渐隐渐现版

具体代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{ margin:0; padding:0; font-size:14px; -webkit-user-select:none; } ul,li{ list-style } im

photoSlider-原生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&q

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

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

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