当前位置: 首页 > news >正文

JS实现小图放大轮播效果

JS实现小图放大轮播页面效果入下(图片为优行商旅页面照片):

 实现效果:
图片自动轮播,鼠标移入停止,移出继续轮播
点击下方小图可以实现切换

步骤一:建立HTML布局,具体如下:

 

<body>
    <div id="carousel" class="carousel" onmouseover="stop()" onmouseout="again()">
        <ul class="list" id="ulctrl">
            <li class="trans"><span></span></li>
            <li><span></span></li>
            <li><span></span></li>
            <li><span></span></li>
        </ul>
    </div>
</body>

 

 

 

  其中div为图片轮播区域,li用于放置小图

步骤二:CSS布局

 

*{
            margin:0;
            padding:0;
        }
        ul{
            list-style: none;
            height:auto;
            position: absolute;
            top:95%;
            left:32%;
        }
        #carousel{
            width:100%;
            height:400px;
            background-image: url(images/1.jpg);
            background-repeat: no-repeat;
            background-position: center;
            position: relative;
        }
        li{
            float:left;
            margin-right: 20px;
        }
        span{
            display: block;
            width:110px;
            height:41px;
            background-size: 110px 41px;
            border:none;
        }
        li:nth-child(1) span{
            background-image: url(images/1.jpg);
            border:2px solid orange;
        }
        li:nth-child(2) span{
            background-image: url(images/2.jpg);
        }
        li:nth-child(3) span{
            background-image: url(images/3.jpg);
        }
        li:nth-child(4) span{
            background-image: url(images/4.jpg);
        }

 

 

 

  通过定位使小图显示在下方,此时轮播区域显示的为第一张图片

步骤三:添加JS逻辑(其中该代码注释中的圆点是指轮播图下方小图)

let cnt=1;//计数器
let ulctrl=document.getElementById("ulctrl");//圆点控制器
let lis=ulctrl.children;//圆点们
let linow=lis[0];//初始化当前圆点为第一个
let clock;//声明计时器
var carousel=document.getElementById("carousel");//背景容器
for(let i=0;i<lis.length;i++){
    //给圆点绑定函数,点击改变圆点样式和图片
    lis[i].οnclick=function (){
        cnt=i+1;
        carousel.style.backgroundImage="url(images/"+cnt+".jpg)";
        for(let li of lis){
             li.children[0].style.border = 'none';
        }
         this.children[0].style.border = '2px solid orange';
    }
}
//改变圆点样式
function ctrl(){
    linow.children[0].style.border = 'none';
    linow=lis[cnt-1];
    linow.children[0].style.border = '2px solid orange';
}
//鼠标覆盖轮播图,停止轮播
function stop(){
    clearInterval(clock);//清除计时器
}
//鼠标离开轮播图,继续轮播
function again(){
    clock=setInterval(this.start, 2000);//创建计时器
}
//轮播函数
function start(){ 
    if(cnt==4){
        cnt=1;
    }else{
        cnt++;//更新计数器
    }
    carousel.style.backgroundImage="url(images/"+cnt+".jpg)";
    ctrl();//轮播状态下改变圆点样式
    }
(function move(){
    clock=setInterval(this.start, 2000);//创建计时器,2秒执行一次start函数
})();//自执行函数

 

转载于:https://www.cnblogs.com/web12/p/10121824.html

相关文章:

  • Javascript继承机制的设计思想
  • 在PC上测试移动端网站和模拟手机浏览器的5大方法
  • ios 推送证书 p12生成
  • Beaker:一个基于Electron的点对点Web浏览器
  • Linux查看文件内容
  • 追溯ASP.NET发展史
  • 前端MVVM框架设计及实现(一)
  • python的不定时更新
  • LumiSoft收取邮件(含邮件附件)
  • Frost Sullivan权威报告:阿里云再次领跑云WAF大中华区市场
  • Yii框架官方指南系列28——缓存:概览
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • 一个表单对应多个提交按钮,每个提交按钮对应不同的行为
  • MySQL用户中的%到底包不包括localhost?
  • tomcat集群时统计session与在线人数
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Angular2开发踩坑系列-生产环境编译
  • CODING 缺陷管理功能正式开始公测
  • Debian下无root权限使用Python访问Oracle
  • ECS应用管理最佳实践
  • Gradle 5.0 正式版发布
  • LeetCode18.四数之和 JavaScript
  • ReactNativeweexDeviceOne对比
  • SpringBoot几种定时任务的实现方式
  • 测试开发系类之接口自动化测试
  • 多线程 start 和 run 方法到底有什么区别?
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 提醒我喝水chrome插件开发指南
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 透过事物看本质的能力怎么培养?
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (ZT)薛涌:谈贫说富
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (论文阅读30/100)Convolutional Pose Machines
  • (译)2019年前端性能优化清单 — 下篇
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)http协议
  • ../depcomp: line 571: exec: g++: not found
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @Autowired 与@Resource的区别
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [AAuto]给百宝箱增加娱乐功能
  • [BZOJ] 2427: [HAOI2010]软件安装