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

原生js实现多组图片切换

这几天一直在练习原生js写效果,需要理清自己的逻辑,做了一个切换多组图片的效果:

 

css样式:

* {
margin: 0;
padding: 0;
}
body {
background: #303030
}
#box {
width: 850px;
background: #fff;
margin: 100px auto;
padding: 50px 50px;
position: relative;
}
#box:after {
content: '';
display: block;
clear: both;
visibility: hidden;
}
#box .head {
position: absolute;
width: 100%;
height: 40px;
top: 0;
left: 0;
background: #08c37b;
text-align: center;
line-height: 40px;
color: #fff
}
#box .box-1 {
width: 450px;
height: 350px;
background: #fff;
box-shadow: black 0 0 10px;
float: left;
margin: 10px 10px;
}
#box .box-1 img {
width: 100%;
height: 100%;
cursor: pointer;
}
#box .box-2 {
width: 350px;
height: 350px;
background: #fff;
box-shadow: black 0 0 20px;
float: left;
margin: 10px 10px
}
#box .box-2 img {
width: 100%;
height: 100%;
cursor: pointer;
}
#btn {
margin: 0 10px
}
#btn input {
color: #666;
border-radius: 20px;
border: 1px solid #ddd;
padding: 0 10px;
background: transparent;
cursor: pointer;
outline: none;
}

html代码:

<div id="box" class="box">
<div class="head">控制多组图片切换</div>
<div id="btn">
<input type="button" name="" id="prev" value="上一组">
<input type="button" name="" id="next" value="下一组">
</div>
<div class="box-1">
<img src="img/c361272bf7bf2d9d8c896c1e724833c030ae5ccf1bbb6d-zz9Zcu_fw658_03.gif" index=0>
<span></span>
</div>
<div class="box-2">
<img src="img/26dab4661284b418eea0312f097e9ff35910e7dc4fe64-mCTjgV_fw658.jpg" index=0>
<span></span>
</div>
</div>

js代码:

var oBox = document.getElementById("box");
var prev = document.getElementById("prev");
var next = document.getElementById("next");
var oPic1 = document.getElementsByClassName("box-1")[0].getElementsByTagName("img")[0];
var oPic2 = document.getElementsByClassName("box-2")[0].getElementsByTagName("img")[0];
var oBox1 = document.getElementsByClassName('box-1')[0];
var oBox2 = document.getElementsByClassName("box-2")[0];
var aPic1 = ['img/c361272bf7bf2d9d8c896c1e724833c030ae5ccf1bbb6d-zz9Zcu_fw658_03.gif','img/c361272bf7bf2d9d8c896c1e724833c030ae5ccf1bbb6d-zz9Zcu_fw658_06.gif','img/c361272bf7bf2d9d8c896c1e724833c030ae5ccf1bbb6d-zz9Zcu_fw658_09.gif'];
var aPic2 = ['img/26dab4661284b418eea0312f097e9ff35910e7dc4fe64-mCTjgV_fw658.jpg','img/898704cf8eeffe62dba6e00e4a85628ba406647d124f7-oDpOPu_fw658.jpg','img/bf09a3c9b0013268450f191c36fe4661970eaea33847c-ipXKCN_fw658.jpg']
var num = 0;
//初始化
oPic1.src = aPic1[num];
oPic2.src = aPic2[num];
var oSpan1 = document.getElementsByClassName("box-1")[0].getElementsByTagName("span")[0];
var oSpan2 = document.getElementsByClassName("box-2")[0].getElementsByTagName("span")[0];
oSpan1.innerHTML = num+1+ "/" +aPic1.length;
oSpan2.innerHTML = num+1+ "/" +aPic2.length;
oPic1.index = 0;
oPic2.index = 0;
//切换下一组
function nextFun(item,pic) {
var oPic = item.getElementsByTagName("img")[0];
var oSpan = item.getElementsByTagName("span")[0];
oPic.index++;
if(oPic.index < pic.length) {
oPic.src = pic[oPic.index];
}else if(oPic.index == pic.length) {
oPic.index = 0;
oPic.src = pic[oPic.index];
}
oSpan.innerHTML = oPic.index+1+ "/" +pic.length;
}
//切换上一组
function prevFun(item,pic) {
var oPic = item.getElementsByTagName("img")[0];
var oSpan = item.getElementsByTagName("span")[0];
oPic.index--;
if(oPic.index>-1) {
oPic.src = pic[oPic.index];
}else if(oPic.index == -1) {
oPic.index = pic.length-1;
oPic.src = pic[oPic.index]
}
oSpan.innerHTML = oPic.index+1+ "/" +pic.length;
}
//点击图片切换图片
function slider(item,pic) {
var oPic = item.getElementsByTagName("img")[0];
var oSpan = item.getElementsByTagName("span")[0];
oPic.onclick = function() {
this.index++;
if(this.index<pic.length) {
this.src = pic[this.index];
}else if(this.index == pic.length) {
this.index = 0;
this.src = pic[this.index];
}
oSpan.innerHTML = this.index+1+ "/" +pic.length;
}
}
//上一组按钮
next.onclick = function() {
nextFun(oBox1,aPic1);
nextFun(oBox2,aPic2);
};
//下一组按钮
prev.onclick = function() {
prevFun(oBox1,aPic1);
prevFun(oBox2,aPic2);
}
slider(oBox1,aPic1);
slider(oBox2,aPic2);

转载于:https://www.cnblogs.com/ysyblue/p/10116355.html

相关文章:

  • js 合并两个数组对象
  • 看动画轻松理解时间复杂度(二)
  • finance1:专业词汇
  • 周末去面试,进去 5 分钟就出来了…
  • Automatic Login Using sshpass
  • 数据库3
  • oracle数据库日常维护手册
  • Bodymovin:Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画
  • veterbi
  • 数算运算符
  • Solaris 11 配置IP地址
  • javaweb数据库编程代码详细讲解
  • CSS 简介/特点/优势/给特定浏览器提供不同样
  • 使用Puppeteer进行数据抓取(五)——快速调试
  • 000. 规范类的设计(ing)
  • conda常用的命令
  • FineReport中如何实现自动滚屏效果
  • Gradle 5.0 正式版发布
  • JS函数式编程 数组部分风格 ES6版
  • MySQL QA
  • Vue 重置组件到初始状态
  • 编写高质量JavaScript代码之并发
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 将回调地狱按在地上摩擦的Promise
  • 每天一个设计模式之命令模式
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 排序算法学习笔记
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 硬币翻转问题,区间操作
  • 回归生活:清理微信公众号
  • ​configparser --- 配置文件解析器​
  • # .NET Framework中使用命名管道进行进程间通信
  • #etcd#安装时出错
  • #前后端分离# 头条发布系统
  • (2015)JS ES6 必知的十个 特性
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (七)Knockout 创建自定义绑定
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .Net 4.0并行库实用性演练
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET Micro Framework初体验(二)
  • .net 获取url的方法
  • @media screen 针对不同移动设备
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [bzoj1901]: Zju2112 Dynamic Rankings
  • [C#]DataTable常用操作总结【转】
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [C/C++随笔] char与unsigned char区别
  • [C++基础]-初识模板
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]