这几天一直在练习原生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);

原生js实现多组图片切换的更多相关文章

  1. 初学js之多组图片切换实例

    需求是以上效果展示.话不多说,直接代码显示,不涉及代码优化.已实现功能为目的. 先看html部分: <body> <div class="dream" id=&q ...

  2. 极简的js点击组图切换效果

    程序员进行前端开发时,时常要用到点击切换组图的动画效果,网上确实有很多此类插件,但是都很麻烦,乌糟糟无数代码,有那个看的时间,自己都能把功能写完了.在这里我提供一段极简的js点击组图切换效果代码,包含 ...

  3. js鼠标滚轮滚动图片切换效果

    效果体验网址:http://keleyi.com/keleyi/phtml/image/12.htm HTML文件代码: <!DOCTYPE html PUBLIC "-//W3C// ...

  4. 原生Js页面滚动延迟加载图片

    原理和过程1.页面滚动加载事件2.获取元素在页面里的top值 根据滚动条的位置 判断何时显示图片3.获取元素集合 加载过的图片从集合里删除 效果预览:http://jsfiddle.net/dtdxr ...

  5. js基础练习--控制多组图片切换

    js基础练习题,一个按钮控制两组图片的切换,做这题的时候我忽然想到了将num1.mun2……都存放在一个数组中,根据索引值匹配到对应相应组的图片,这样不管有多少组图片都简单的搞定切换,可惜js基础都没 ...

  6. 原生js和jquery实现图片轮播特效

    本文给大家分享的是使用原生JS和JQ两种方法分别实现相同的图片轮播特效,十分的实用,也非常方便大家对比学习原生js和jQuery,有需要的小伙伴可以参考下. 1)首先是页面的结构部分对于我这种左右切换 ...

  7. 原生js和jquery实现图片轮播特效(转)

    本文给大家分享的是使用原生JS和JQ两种方法分别实现相同的图片轮播特效,十分的实用,也非常方便大家对比学习原生js和jQuery,有需要的小伙伴可以参考下. 1)首先是页面的结构部分对于我这种左右切换 ...

  8. 原生js实现淘宝图片切换

    这个淘宝图片切换具体效果就是:鼠标移上底部一行中的小图片,上面大图片区域就会显示对应的图片. gif图片看起来还挺酷的,其实实现很简单,用原生js绑定事件改变大图片区域的src. 上代码,html部分 ...

  9. 原生Js封装的产品图片360度展示

    挺简单的一段程序,但是效果不错: 1.把需要展示的36张图片先预加载到浏览器缓存里 2.给展示图片的div添加方法 3.通过鼠标左右移动的像素转换图片 在线效果预览:http://jsfiddle.n ...

随机推荐

  1. maven跳过单元测试-maven.test.skip和skipTests的区别以及部分常用命令

    -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下. -Dmaven.test.skip=true,不执行测试用例,也不编译测试 ...

  2. CentOS 7.2 (mini) 里iptables防火墙怎么关闭?

    centos从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的.所以你只要停止firewalld服务即可:sudo ...

  3. C#-反射知识点

    1.反射是基于Sytem.Type的,里面的很多方法是system.reflection里面的 MethodInfo[] tt= t.GetType().GetMethods(); //t是strin ...

  4. 洛谷 P1193 洛谷团队训练VS传统团队训练

    P1193 洛谷团队训练VS传统团队训练 题目背景 “在中学的信息学教育领域,洛谷无疑是一个相当受欢迎的辅助网站.同时有百余所学校正在通过洛谷进行信息学竞赛(以后简称OI)的教育.洛谷之所以如此受欢迎 ...

  5. DBCA创建数据库ORA-01034 ORACLE not available

    SYMPTOMS 在利用dbca创建数据库时,当设置完毕全部參数.開始装时 跑到2% 就报错 ORA-01034 ORACLE not available, 例如以下图 watermark/2/tex ...

  6. filezilla server配置为 passive mode

    首先要配置filezilla的setting里面的Passive mode setting选项 (2)关键部分,打开win8.1下的防火墙,新建入站规则 注意,要打开80,443端口.已经passiv ...

  7. 关于webpack插件

    1.HtmlWebpackPlugin 插件 这个插件的作用是依据一个简单的index.html模板,生成一个自动引用你打包后的JS文件的新index.html.这在每次生成的js文件名称不同时非常有 ...

  8. java 类和对象10

    创建一个Point类,有成员变量x,y,方法getX(),setX(),还有一个构造方法初始化x和y.创建类主类A来测试它. public class Print { private int x; p ...

  9. 使用tinyxml2库解析xml

    tinyxml2简介 tinyxml2是c++编写的轻量级的xml解析器,而且是开放源代码的,在一些开源的游戏引擎中用的比较多.源码托管在github上. 源码地址:https://github.co ...

  10. java 通过httpclient调用https 的webapi

    java如何通过httpclient 调用采用https方式的webapi?如何验证证书.示例:https://devdata.osisoft.com/p...需要通过httpclient调用该接口, ...