游民轮播图效果实现

zhangzhiyong zhangzhiyong     2023-01-06     473

关键词:

  游民轮播图,如下图示,当红色进度条走满的时候更换图片,同时下方对应的缩略图也变化。点击缩略图也会更换图片的效果。

技术分享图片

  该轮播图为过渡变化,所以不用无缝连接,只需5张图片即可。

  首先,大图区域给了div,并设置了背景图片,后期变化全是用背景图片的变换来实现。然后给了缩略图的5张小图。

  html代码如下:

 <section class="container" id="container">
        <i id="leftPo"></i>
        <div class="imgs" id="imgs">
        </div>
        <div id="line">
        </div>
        <div class="thumbnail" id="thumbnail">
            <img src="../img/1.jpeg" >
            <img src="../img/2.jpeg" >
            <img src="../img/3.jpeg" >
            <img src="../img/4.jpeg" >
            <img src="../img/5.jpeg" >
        </div>
        <i id="rightPo"></i>
    </section>

  css代码如下:

   <style>
        * 
            padding: 0;
            margin: 0;
        

        .container 
            width: 640px;
            height: 600px;
            margin: 20px auto;
            position: relative;
            overflow: hidden;
            background-color: rgb(228, 228, 228);
        

        .imgs 
            width: 640px;
            height: 480px;
            border: 3px double gray;
            box-sizing: border-box;
            background-image: url(‘../img/1.jpeg‘);
            transition: all linear .5s;
        

        #leftPo 
            display: inline-block;
            width: 30px;
            height: 30px;
            background-image: url(‘../img/left.png‘);
            position: absolute;
            top: 225px;
            left: 20px;
            z-index: 2;
            cursor: pointer;
            opacity: 0;
            transition: all linear .5s
        

        #rightPo 
            display: inline-block;
            width: 30px;
            height: 30px;
            background-image: url(‘../img/right_03.png‘);
            position: absolute;
            top: 225px;
            right: 20px;
            z-index: 2;
            cursor: pointer;
            opacity: 0;
            transition: all linear .2s
        

        #line 
            width: 640px;
            border-bottom: 6px solid red;
            position: absolute;
            left: -640px;
        

        .thumbnail 
            width: 100%;
            display: flex;
            justify-content: space-around;
            margin-top: 10px;
        

        .thumbnail>img 
            width: 120px;
            height: 100px;
            cursor: pointer;
        
    </style>

    然后,将所有图片都装进数组里存放起来,之后通过索引调用图片即可。

    js代码如下:

        let line = document.getElementById(‘line‘);
            let imgArr = [‘../img/1.jpeg‘, ‘../img/2.jpeg‘, ‘../img/3.jpeg‘, ‘../img/4.jpeg‘, ‘../img/5.jpeg‘];
            let imgs = document.getElementById(‘imgs‘);
            let leftPo = document.getElementById(‘leftPo‘);
            let rightPo = document.getElementById(‘rightPo‘);
            let thumbnail = document.getElementById(‘thumbnail‘);
            let thumbnails = document.getElementsByTagName(‘IMG‘);
            // 第一张图片的缩略图初始化
            thumbnails[0].style.border = "4px solid gray";
            // stopTimerLine表示红线的定时器,stopTimerAll表示整体动画的定时器,index表示缩略图的索引。
            let stopTimerLine, stopTimerAll, index = 0;
            // 红线移动调用函数  同时在这个函数里要设置return lineMove,即返回本身函数,不然就只能执行一次
            let lineMove = function () 
                stopTimerLine = setInterval(function () 
                    if (line.offsetLeft < 0) 
                        line.style.left = line.offsetLeft + 2 + ‘px‘;
                     else 
                        clearInterval(stopTimerLine);
                    
                , 10);
                rightPo.onclick();
                return lineMove;
            
            // 改变图片,改变缩略图样式,同时红线恢复初始位置
            let changeStyle = function (index) 
                imgs.style.backgroundImage = `url(‘../img/$index.jpeg‘)`;
                for (let j = 0; j < thumbnails.length; j++) 
                    if (thumbnails[j].style.border != ‘‘) 
                        thumbnails[j].style.border = ‘‘;
                        break;
                    
                
                thumbnails[index - 1].style.border = "4px solid gray";
                line.style.left = -640 + ‘px‘;
            
            // 右箭头按钮点击更换图片
            rightPo.onclick = function () 
                if (index == 5) 
                    index = 1;
                 else 
                    index++;
                
                changeStyle(index);

            
            // 左箭头按钮点击更换图片
            leftPo.onclick = function () 
                if (index == 0 || index == 1) 
                    index = 5;
                 else 
                    index--;
                
                changeStyle(index);
            
            // 缩略图点击更换图片
            thumbnail.onclick = function (event) 
                for (let i = 0; i < thumbnails.length; i++) 
                    if (thumbnails[i] == event.target)
                        index = i + 1;
                
                changeStyle(index);
            
            // 鼠标移入图片框就显示左右箭头,移出时隐藏
            container.onmousemove = function () 
                leftPo.style.opacity = ‘0.8‘;
                rightPo.style.opacity = ‘0.8‘;
            
            container.onmouseout = function () 
                leftPo.style.opacity = ‘0‘;
                rightPo.style.opacity = ‘0‘;
            
            // 红线移动判断图片的改变   在此计时器中 用lineMove()先调用一次函数(同时在这个函数里要设置return lineMove,即返回本身函数,不然就只能执行一次),这样就刷新页面即执行一次
            let imgMove = function () 
                clearInterval(stopTimerAll);
                stopTimerAll = setInterval(lineMove(), 5000);
            
            imgMove();

  这里有一个小技巧,一般情况下设置setinterval的定时器,当我们刷新页面的时,会等待1个间隔时间后才开始运动。那么该如何解决?这里我在设置定时器时,直接先调用了一次函数,即  stopTimerAll = setInterval(lineMove(), 5000);    这样刷新页面立即调用,不用等待。

  不过这样也存在一个问题,就是这样写就该函数就只能调用一次了,所以我在lineMove这个函数里的最后面加了一个return lineMove;即返回函数本身,这样在第一次调用之后,就会返回这个函数到定时器里,之后就可以不断的调用了。

焦点轮播图效果实现

  焦点轮播图相对前面讲的逐帧轮播图实现多了两个功能,1、图片轮播可以手动滚动(新增左右箭头),这里重点是实现向左滚动的无缝连接。2、多了下方小圆点,指示图片播放位置,并可以点击小圆点跳转。  那么如何... 查看详情

jquey实现轮播图效果(代码片段)

再平常的浏览器页面,轮播图都是必不可缺少的一个板块,在这总结了一下轮播图基本的一些样式首先介绍一下,本文实现的轮播图的基本效果:    1.3s自动切换图片,图片切换时提示点跟随切换   2.鼠标划到图片上,自... 查看详情

原生js-实现轮播图效果(代码片段)

前言:原生js实现轮播图,效果虽丑,但是达到了想要的效果。js代码放在本页面,全部的代码点击链接下载https://download.csdn.net/download/TroyeSivanlp/43150377实现轮播图效果效果js代码效果js代码window.addEventListener('load... 查看详情

3d轮播图的效果实现

  最近工程比较松,所以自己研究了一下3d轮播图的实现原理,其实说白了也不是很难就是在x,y,z轴上的平移和整个平面的旋转变换达到的效果, 下面是实现代码html部分<divclass="stage"><divclass="contains"><divstyle="t... 查看详情

css轮播图的实现(纯css,连续滑动无倒滑效果)

参考技术A简单demo:使用HTML+CSS实现轮播图(三张图为例,分别为:红、绿、蓝)的效果。不能发视频,截图来代替吧1.显示轮播图1(实际轮播的第2个元素li)2.显示轮播图2(实际轮播的第3个元素li)3.显示轮播图3(实际轮播的... 查看详情

javascript学习——实现首页轮播图效果

...操作:setInterval(“changeImg()”,3000);2、步骤分析(此案例轮播图效果是基于HTML&CSS——使用DIV和CSS完成网站首页重构实现的)事先准备三张一样大小的图片(img1、img2、img3)放在文件夹Img下。第一步:确定事件(onload)并为其绑 查看详情

js原生javascript轮播图渐变淡入淡出效果实现(附代码)(代码片段)

目录前言轮播图的组成以及实现思想左右按钮的隐藏与显示核心思想 代码实现 动态生成底部小圆圈核心思想代码实现     右左按钮实现核心思想代码实现实现自动播放核心思想代码实现整体代码(复制可用)总结前... 查看详情

jquery实现轮播图效果(代码片段)

任务实现:用jQuery实现轮播图。来自瓶子啊之小白,欢迎来访,欢迎指导。相信大家从事前端的开发者初级就是轮播图,首先我用jquery写了一个,第二篇我会用原生JavaScript给大家展示。其原理是一样的,只不过jquery封住好了一... 查看详情

unslider插件实现轮播图效果

unslider插件下载地址(含有用法):http://www.bootcss.com/p/unslider/可以  下载unslider.js文件(http://pan.baidu.com/s/1dFlemi9)  查看详情

前端javascript+jquery实现旋转木马效果轮播图slider

...avascript+jQuery+html+css实现步骤://0.获取元素//1.鼠标放置到轮播图上,显示两侧的控制按钮,移开后隐藏//2.为两侧控制按钮绑定事件(调用同一个方法,只有一个参数,true为正向旋转,false为反向旋转) 实现代码: <!DOC... 查看详情

实现比较简单的轮播图效果

实现简单的轮播图效果。废话不多说,我们开始。HTML和CSS较为简单,不在这里做赘述。简单的给大家一个HTML代码。<divclass="carousel"><divid="goLeft"></div><ul><li><imgsrc=""/></li><li><imgsrc=""/>< 查看详情

js实现轮播图效果(附源码)--原生js的应用

1.js实现轮播图效果<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="Author"content="奇客艺术"><metaname="keyword"content="关键字"><metaname="description"conte 查看详情

js实现效果:循环轮播图

参考技术A跟普通的左右切换轮播图类似,但是它看起来是首尾相连的。首先来讲一下我的思路:我们要想无缝切换图片,必须要在所有图片的最后添加一张第一张图片,因为要实现从最后一张切换到第一张时有过渡效果;之后... 查看详情

jquery实现轮播图效果

通过改变背景色来达到效果,有下角标和左右箭头,都已经实现。html部分:<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>淡入淡出</title><linkrel="stylesheet"type="text/css"href="css/5---.css"/> 查看详情

js实现轮播图效果(代码片段)

...片在一行中平铺,然后计算偏移量再利用定时器实现定时轮播。 步骤一:建立html基本布局如下所示:<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>轮播图</title></head><body><divclass 查看详情

jquery教程:实现轮播图效果

  轮播图说起来非常简单,就是几张图片一直不停的轮流播放,但是要想写好代码,也要考虑下性能问题,下面我们来简单的实现一下。首先,页面代码:<!DOCTYPEhtml><html><head><metacharset="utf-8"/><title>&l... 查看详情

js实现左右切换轮播图思路

参考技术A我们在CSS阶段就已经接触到轮播图。通过轮播图我们可以达到一些好玩的特效,但使用CSS做出来的轮播图只有左右切换,渐变切换和简单的点击切换。局限性较大,观看效果也不佳。但当我们接触js之后,你就发现使用... 查看详情

wpf特效-实现弧形旋转轮播图

原文:WPF特效-实现弧形旋转轮播图 ????项目遇到,琢磨并实现了循环算法,主要处理循环替换显示问题???(如:12张图组成一个圆弧,但总共有120张图需要呈现,如何在滑动中进行显示块的替换,并毫无卡顿)????处理的自己感... 查看详情