JavaScript轮播图
需求:
- 鼠标移动到下标页码时,也转换到相对应的图片;
- 多张图片可以自动轮播;
- 鼠标移动至图片时,停止自动轮播;
- 可以手动左右调节;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>原生JS轮播图</title>
<style>
*{
margin: 0;
padding: 0;
}
.outer{
position: relative;
top: 20px;
cursor: pointer;
}
.outer .img-box .img-item {
display: none;
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
}
.active{
display: block !important;
}
.outer ul{
position: absolute;
top: 250px;
left: 50%;
transform: translateX(-50%);
text-align: center;
}
.outer ul li.page-number{
list-style-type: none;
display: inline-block;
color: black;
margin: 0 6px;
font-size: 12px;
width: 20px;
height: 20px;
background-color: #05dfff;
line-height: 20px;
text-align: center;
border-radius: 50%;
}
.page-active{
background-color: #0000FF !important;
}
.outer .mover{
position: absolute;
top: 110px;
left: 50%;
height: 60px;
width: 40px;
background-color: rgba(255,255,255,0.65);
line-height: 60px;
text-align: center;
font-size: 26px;
display: none;
user-select: none; /*用户点击时,内容不能被选中*/
}
.outer .leftMover{
margin-left: -260px;
}
.outer .rightMover{
margin-left: 220px;
}
</style>
</head>
<body>
<div id="outer" class="outer">
<div class="img-box">
<img src="../img/1.jpg" class="img-item active">
<img src="../img/2.jpg" class="img-item">
<img src="../img/3.jpg" class="img-item">
<img src="../img/4.jpg" class="img-item">
</div>
<ul>
<li class="page-number page-active">1</li>
<li class="page-number">2</li>
<li class="page-number">3</li>
<li class="page-number">4</li>
</ul>
<a id="leftMover" class="mover leftMover"><</a>
<a id="rightMover" class="mover rightMover">></a>
</div>
<script>
var objectImgItems = document.getElementsByClassName("img-item");
var objectRowItems = document.getElementsByClassName("page-number");
var objectOuter = document.getElementById("outer");
var objectMover = document.getElementsByClassName("mover");
var objectLeftMover = document.getElementById("leftMover");
var objectRightMover = document.getElementById("rightMover");
<!-- 获取node在nodeList中的索引值 -->
function getIndex(node, nodeList) {
for (var index=0; index<nodeList.length; index++){
if (nodeList[index] === node){
return index
}
}
}
<!-- 根据传入的页码索引值,转换图片和页码 -->
function move(numberIndex) {
for (var i=0; i<objectImgItems.length; i++){
if (i === numberIndex) {
objectImgItems[i].classList.add("active");
objectRowItems[i].classList.add("page-active");
} else {
objectImgItems[i].classList.remove("active");
objectRowItems[i].classList.remove("page-active");
}
}
}
<!-- 鼠标覆盖页码时,图片和页码进行转换 -->
for (var i=0; i<objectRowItems.length; i++){
objectRowItems[i].onmouseover = function () {
var numberIndex = getIndex(this, objectRowItems);
move(numberIndex);
pageNumber = numberIndex;
};
}
<!-- 鼠标移动到整个模块,则显示左右移动的图标,图片停止自动转换 -->
objectOuter.onmouseover = function () {
clearInterval(intervalId);
for (var i=0; i<objectMover.length; i++){
objectMover[i].classList.add("active");
}
};
<!-- 鼠标离开整个模块,则隐藏左右移动的图标,图片开始自动转换 -->
objectOuter.onmouseout = function () {
intervalId = setInterval(directionMove, 2000);
for (var i=0; i<objectMover.length; i++){
objectMover[i].classList.remove("active");
}
};
<!-- 添加页码变量,通过自增、自减,实现左右转换 -->
var pageNumber = 0;
function directionMove(isLeft) {
if (isLeft){
if (pageNumber === 0) {
pageNumber = 4;
}
pageNumber--;
} else {
if (pageNumber === 3) {
pageNumber = -1;
}
pageNumber++;
}
move(pageNumber);
}
<!-- 添加定时器,实现自动转换 -->
var intervalId = setInterval(directionMove, 2000);
<!-- 右转换 -->
objectRightMover.onclick = function () {
directionMove();
};
<!-- 左转换 -->
objectLeftMover.onclick = function () {
directionMove(true);
}
</script>
</body>
</html>
JavaScript轮播图的更多相关文章
- JavaScript 轮播图
这是我自己做的一个轮播图,大家可以看看 ,我还没进行优化.有改进的地方可以私聊 布局什么的你们自己搞定吧 <div class="slider" id="circl ...
- 练习:javascript轮播图效果
javascript轮播自动播放切换滑过停止,上一页/下一页 <!DOCTYPE html> <html lang="en"> <head> & ...
- 超详细的原生JavaScript轮播图(幻灯片)的制作
本次轮播图的制作主要分为3个部分,分别是:设置定时器自动轮播:点击左右切换按钮轮播:下方点击按钮轮播.具体实现步骤如下: (效果图) html部分代码如下: <div class="s ...
- JavaScript 轮播图实例
HTML代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...
- JavaScript 自适应轮播图
代码 话不多说,先上代码,方便复制粘贴.演示 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- 带轮播图、导航栏、商品的简单html,以及轮播图下边数字随轮播图的改变而改变
---恢复内容开始--- 在做这个的时候,最不会的是中间轮播图下边的数字是如何实现转变的,后来加入了jQuery就能实现了. css部分: <style type="text/css& ...
- 自己用原生JS写的轮播图,支持移动端触摸滑动,分页器圆点可以支持mouseover鼠标移入和click点击,高手看了勿喷哈
自己用原生JavaScript写的轮播图,分页器圆点按钮可支持click点击,也可支持mouseover鼠标悬浮触发,同时支持移动端触摸滑动,有兴趣的友友可以试试哈,菜鸟一枚,高手看了勿喷,请多多指正 ...
- jquery 广告轮播图
轮播图 /*轮播图基本功能: * 1图片切换 * 1.1图片在中间显示 * 1.2图片淡入淡出 * 2左右各有一个按钮 * 2.1点击左按钮,图片切换上一张 * 2.2点击右按钮,图片切换下一张 * ...
- 【JavaScript】固定布局轮播图特效
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- jmeter+jenkins+ant部署持续集成测试
原文地址:http://blog.csdn.net/kaluman/article/details/74535495 开头的注意事项: 1.所有的环境变量和代码,都需要使用英文的符号,变量之间都需要英 ...
- HBase之四--(2):spring hadoop 访问hbase
1. 环境准备: Maven Eclipse Java Spring 2. Maven pom.xml配置 <dependency> <groupId>org.apache ...
- 148D
概率dp+记忆化搜索 dp[i][j][0]表示当前公主走公主赢的概率,dp[i][j][1]表示当前龙走公主赢的概率,然后剩下的就是一些细节的讨论,记忆化搜索很方便 #include<bits ...
- C++实现合并两个已经排序的链表
/* * 合并两个已经排序的链表.cpp * * Created on: 2018年4月11日 * Author: soyo */ #include<iostream> using nam ...
- 在Entity Framework 中实现继承关系映射到数据库表
继承关系映射到数据库表中有多种方式: 第一种:TPH(table-per-hiaerachy) 每一层次一张表 (只有一张表) 仅使用名为父类的类型名的一张表,它包含了各个子类的所有属性信息,使用区分 ...
- 洛谷 - P1426 - 小鱼会有危险吗 - 模拟
https://www.luogu.org/problemnew/show/P1426 题目说的是小鱼进入探测器一秒后就会有危险,所以不应该让小鱼先游,而是先检测探测器. #include<bi ...
- AssetDatabase文档翻译
AssetDatabase是一个能获取工程资源的API,它提供一些方法比如:查找.加载.创建.删除和修改.Unity需要了解工程文件夹里的所有改变,假如想要获取或修改资源文件,就使用 AssetDat ...
- (二)SpringBoot整合常用框架Druid连接池
一,在Pom.xml文件加入依赖 找到<dependencies></dependencies>标签,在标签中添加Druid依赖 <dependency> < ...
- TCP协议深度刨析
这篇文章主要是详细说明TCP的拥塞控制,因为它对于我们理解整个TCP/IP协议栈非常重要,但我个人能力有限,其中引用了很多网上其他博主的文章,在下文引用处都有说明,主要是让整篇文章能够连贯,不至于让所 ...
- Flexbox布局的基本概念
flex container(flex容器 或 弹性容器) flex容器是flex元素的的父元素. 通过设置display 属性的值为flex 或 inline-flex定义. 注旧版本的属性值: b ...