我又来了,同志们。老想你们了

捕获小可爱一枚。

下面进入正题:用JavaScript原生代码写轮播图效果。

具体效果就不多说了,网站上面的轮播效果我们都知晓。下面是展示代码

html代码:

 <div class="main">
<ul>
<li style="display: block;"> <img src="img/a1 (1).jpg" /></li>
<li> <img src="img/a1 (2).jpg" /> </li>
<li> <img src="img/a1 (3).jpg" /> </li>
<li> <img src="img/a1 (4).jpg" /> </li>
<li> <img src="img/a1 (5).jpg" /> </li>
</ul>
<div class="ctrl">
<span>&lt;</span>
<span>&gt;</span>
</div>
<div class="ditto">
<p class="active">1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
</div> </div>

css代码:

 * {
padding:;
margin:;
} .main {
height: 400px;
width: 600px;
margin: 0 auto;
position: relative;
} .main ul li {
height: 400px;
width: 600px;
list-style: none;
position: absolute;
display: none;
} .main ul li img {
height: 400px;
width: 600px;
cursor: pointer;
} .ctrl {
height: 40px;
width: 100%;
position: absolute;
bottom: 50%;
text-align: center;
} .ctrl span {
width: 40px;
height: 40px;
border-radius: 100%;
line-height: 40px;
font-size: 32px;
color: #ffffff;
background-color: rgba(0, 0, 0, 0.2);
cursor: pointer;
} .ctrl span:nth-child(1) {
float: left;
} .ctrl span:nth-child(2) {
float: right;
} .ditto {
position: absolute;
width: 200px;
height: 20px;
bottom: 30px;
left: 38%;
} .ditto p {
height: 20px;
width: 20px;
line-height: 20px;
background: #efefef;
text-align: center;
width: 20px;
height: 20px;
float: left;
border-radius: 100%;
margin-left: 10px;
cursor: pointer;
} .ditto .active {
background: #ff9000;
box-shadow: 0 0 10px #FF9000;
}

css代码

js代码:

 <script type="text/javascript">
//获取节点
var box_v = document.querySelector('.main');
var li_v = document.querySelectorAll('.main ul li');
var p_v = document.querySelectorAll('.ditto>p');
var ctrl_v = document.querySelectorAll('.ctrl>span');
console.log(li_v);
//声明全局变量
var current = 0;
var timer = null;
var pre = null;
var nex = null;
//开启自动循环轮播,封装函数move
function move() {
//首先清除当前current以外的li_v的样式显示和伪圆标p_v的效果, 以下的同上
for (let i = 0; i < li_v.length; i++) {
li_v[i].style.display = "none";
p_v[i].className = "";
}
//鼠标移入的时候获取当前的索引,也就是变量current
current = (current + 1) % li_v.length;
console.log(current); //然后一个一个实现轮播和图标效果
li_v[current].style.display = "block";
p_v[current].className = "active";
};
timer = setInterval(move, 1500); for (let i = 0; i < li_v.length; i++) {
//鼠标划入图片区域时清除定时器,暂停于当前页面
li_v[i].onmouseover = function() {
clearInterval(timer);
}
//鼠标移出图片区域时继续向下轮播
li_v[i].onmouseout = function() {
timer = setInterval(move, 1500);
}
}
// 当鼠标放在小圆标的时候清除定时器,暂停于当前图片页面和圆标实现效果
for (var i = 0; i < p_v.length; i++) {
p_v[i].index = i;
p_v[i].onmouseover = function() {
clearInterval(timer);
for (var i = 0; i < li_v.length; i++) {
p_v[i].className = "";
li_v[i].style.display = "none";
}
this.className = "active";
// console.log(this.index);
//实现当鼠标移出小圆标的时候继续轮播图片页面和圆标实现效果,此时current为this.index
current = this.index;
li_v[this.index].style.display = "block";
}
} //左按钮事件
ctrl_v[0].onclick = function() {
clearInterval(timer);
clearInterval(pre);
pre = setTimeout(preclick, 10)
timer = setInterval(move, 1500);
}
//封装点击左按钮实现上个一个图片
function preclick() {
for (var i = 0; i < li_v.length; i++) {
li_v[i].style.display = "none";
p_v[i].className = "";
}
current = (current - 1 + li_v.length) % li_v.length;
// console.log(current);
li_v[current].style.display = "block";
p_v[current].className = "active";
};
// 右边按钮事件实现下一张图片
ctrl_v[1].onclick = function() {
clearInterval(timer);
clearInterval(nex);
nex = setTimeout(move, 10)
timer = setInterval(move, 1500);
}
</script>

欢迎来访,你们的瓶子。。。mua,大家晚安

JavaScript实现轮播图效果的更多相关文章

  1. HTML+CSS+Javascript实现轮播图效果

    HTML+CSS+Javascript实现轮播图效果 注意:根据自己图片大小来更改轮播图大小. <!doctype html> <html> <head> < ...

  2. 云南农职《JavaScript交互式网页设计》 综合机试试卷②——实现轮播图效果

    一.语言和环境 实现语言:HTML,CSS,JavaScript,JQuery. 开发环境:HBuilder. 二.题目(100分): 使用JQuery淡入淡出动画,实现轮播图效果 每隔2秒钟切换一张 ...

  3. JavaScript焦点轮播图

    在慕课学习了JavaScript焦点轮播图特效,在此做一个整理. 首先是html结构,我用的是本地同文件夹下的三张图片,多出来的第一张(pic3副本)和最后一张图片(pic1副本)是为了实现无缝切换效 ...

  4. 原生javascript焦点轮播图

    刚刚学会,写了一个轮播图效果,不过bug蛮多,请高手指点一下,谢谢 <!DOCTYPE html> <html> <head> <meta charset=& ...

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

    1.js实现轮播图效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  6. 纯CSS实现轮播图效果,你不知道的CSS3黑科技

    前言 轮播图已经是一个很常见的东西,尤其是在各大App的首页顶部栏,经常会轮番显示不同的图片. 一提到轮播图如何实现时,很多人的第一反应就是使用Javascript的定时器,当然这种方法是可以实现的. ...

  7. 高仿阴阳师官网轮播图效果的jQuery插件

    代码地址如下:http://www.demodashi.com/demo/12302.html 插件介绍 这是一个根据阴阳师官网的轮播效果所扒下来的轮播插件,主要应用于定制个性化场景,目前源码完全公开 ...

  8. 用html +js+css 实现页面轮播图效果

    html 页面 <html lang="en"> <head> <meta charset="UTF-8"> <met ...

  9. 小程序实践(二):swiper组件实现轮播图效果

    swiper组件类似于Android中的ViewPager,实现类似轮播图的效果,相对于Android的Viewpager,swiper实现起来更加方便,快捷. 效果图: 首先看下swiper支持的属 ...

随机推荐

  1. Spring AOP 五大通知类型

    1.前置通知 在目标方法执行之前执行执行的通知. 前置通知方法,可以没有参数,也可以额外接收一个JoinPoint,Spring会自动将该对象传入,代表当前的连接点,通过该对象可以获取目标对象 和 目 ...

  2. JSBridge的实现

    JSBridge是Native代码与JS代码的通信桥梁.目前的一种统一方案是:H5触发url scheme->Native捕获url scheme->原生分析,执行->原生调用h5. ...

  3. 逆向工程核心原理-IA-32寄存器

    IA-32由四类寄存器组成:通用寄存器,段寄存器,程序状态与控制寄存器,指令指针寄存器. 通用寄存器:用于传送和暂存数据,也可参与算数逻辑运算,并保存运算结果. EAX(0-31) 32位      ...

  4. 在比特币的OP_RETURN上,大家都干了些啥?

    我在之前的一篇文章中介绍了怎么通过C#将一句话写入到比特币的区块链网络中,最近花了好几天的时间,我终于把比特币的区块链数据载入到了SQLServer(具体做法参加我的这篇博客:http://www.c ...

  5. day10(函数定义,使用)

    一:函数 # ***** # 函数:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数 # -- 现实中:很多问题要通过一些工具进行处理 => 可以将工具提前生产出来并 ...

  6. [蓝桥杯]2015蓝桥省赛B组题目及详解

    /*——————————————————————————————————————————————————————————— [结果填空题]T1 题目:奖券数目 有些人很迷信数字,比如带“4”的数字,认 ...

  7. jmeter学习记录--04--Beanshell

    一.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanSh ...

  8. stm32串口接收发送数据处理

    /************************************************************* Function Name : Uart1_Send_Byte* Desc ...

  9. 1.promethues监控融入k8s

    文档链接地址 https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_confi ...

  10. WebSocket介绍,与Socket的区别

    WebSocket介绍与原理 WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex).一开始的握手需要借助HTTP请求完成. ——百 ...