JavaScript实现轮播图效果
我又来了,同志们。老想你们了
捕获小可爱一枚。
下面进入正题:用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><</span>
<span>></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实现轮播图效果的更多相关文章
- HTML+CSS+Javascript实现轮播图效果
HTML+CSS+Javascript实现轮播图效果 注意:根据自己图片大小来更改轮播图大小. <!doctype html> <html> <head> < ...
- 云南农职《JavaScript交互式网页设计》 综合机试试卷②——实现轮播图效果
一.语言和环境 实现语言:HTML,CSS,JavaScript,JQuery. 开发环境:HBuilder. 二.题目(100分): 使用JQuery淡入淡出动画,实现轮播图效果 每隔2秒钟切换一张 ...
- JavaScript焦点轮播图
在慕课学习了JavaScript焦点轮播图特效,在此做一个整理. 首先是html结构,我用的是本地同文件夹下的三张图片,多出来的第一张(pic3副本)和最后一张图片(pic1副本)是为了实现无缝切换效 ...
- 原生javascript焦点轮播图
刚刚学会,写了一个轮播图效果,不过bug蛮多,请高手指点一下,谢谢 <!DOCTYPE html> <html> <head> <meta charset=& ...
- js实现轮播图效果(附源码)--原生js的应用
1.js实现轮播图效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- 纯CSS实现轮播图效果,你不知道的CSS3黑科技
前言 轮播图已经是一个很常见的东西,尤其是在各大App的首页顶部栏,经常会轮番显示不同的图片. 一提到轮播图如何实现时,很多人的第一反应就是使用Javascript的定时器,当然这种方法是可以实现的. ...
- 高仿阴阳师官网轮播图效果的jQuery插件
代码地址如下:http://www.demodashi.com/demo/12302.html 插件介绍 这是一个根据阴阳师官网的轮播效果所扒下来的轮播插件,主要应用于定制个性化场景,目前源码完全公开 ...
- 用html +js+css 实现页面轮播图效果
html 页面 <html lang="en"> <head> <meta charset="UTF-8"> <met ...
- 小程序实践(二):swiper组件实现轮播图效果
swiper组件类似于Android中的ViewPager,实现类似轮播图的效果,相对于Android的Viewpager,swiper实现起来更加方便,快捷. 效果图: 首先看下swiper支持的属 ...
随机推荐
- win 10 精简组件列表
轻松访问工具 操作中心 应用程序虚拟化(App-V) Telemetry Client (Asimov)(遥测) Assigned Access(按需访问) 自动播放 网络后台传输 备份 生物识别服务 ...
- 创建pandas和sqlalchemy的j交互对象,方便于日常的数据库的增删改查(原创)
#导入第三方库sqlalchemy的数据库引擎 from sqlalchemy import create_engine #导入科学计算库 import pandas as pd #导入绘图库 imp ...
- ThinkPad T400 键帽下面的X支架的安装方法
有一台古老的T400,清理键盘的时候,X支架老化断了,淘宝买了几个支架,研究一下安装方法: 1.注意支架方向:上面是横向的细支架,下面是两个小孔2.用小螺丝刀把下面的两个小孔推进键盘下面的两个金属钩里 ...
- Python3中如何解决中文乱码与编码的问题
1.解决乱码问题: pyhton中内部所有编码是Unicode,中文是gbk:正常情况下,我们输出的是utf-8: 我们可以采用sys.getdefaultencoding()查看系统默认的编码: 解 ...
- C# 使用CsvHelper读取.csv文件
1,先到包管理器下载 安装CsvHelper. 2,创建一个与csv文件字段名称相同的类 public class SurveyInfoModel { public string DIST_CD { ...
- linux下JNI开发—Hello为例
转自:https://www.cnblogs.com/snake-hand/archive/2012/05/25/2517412.html 前期准备: 1.Java JDK 2.gcc 3.g++ 确 ...
- BZOJ2339[HNOI2011]卡农——递推+组合数
题目链接: [HNOI2011]卡农 题目要求从$S=\{1,2,3……n\}$中选出$m$个子集满足以下三个条件: 1.不能选空集 2.不能选相同的两个子集 3.每种元素出现次数必须为偶数次 我们考 ...
- Python IDLE 代码高亮主题
Python IDLE 代码高亮主题 使用方法: 打开C盘我的 C:\Documents and Settings\你的用户名.idlerc文件夹 里面会有一个 config-highlight.cf ...
- 使用Portainer管理Docker
Portainer Portainer安装非常简单,只需不到一分钟.Portainer完全支持Docker 1.10及更高版本. Mac 快速安装运行: 命令行输入: docker pull port ...
- 【Linux】Jenkins安装
安装环境准备 操作系统:Linux(CentOS7) 软件:jdk,安装及配置步骤见Linux安装jdk 软件:tomcat,安装及配置见Linux安装tomcat Jenkins安装 由于Jenki ...