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

普通选项卡+自动播放功能+向前/向后按钮 原生js

今天做了幻灯片,主要功能包括:普通选项卡,向前/向后播放按钮,向前?向后播放功能,自动播放功能

要实现简单选项卡功能是没有问题的,但是添加功能就出现各种各样的问题了

遇到的问题:
1 下标问题
2普通选项卡与向前/向后功能结合的时候冲突,可以向前/向后播放,但是再想实现普通选项卡就出问题了
3 添加向前/向后按钮后,html布局下移
4 添加向前/向后按钮的时候,我用img标签,显然这个不适用,不能很好的调节垂直居中
5 当鼠标放在向前/向后按钮上的时候,闪烁,点击的时候也闪烁,而且还点击失效

解决方法:
1 封闭空间
2 普通选项卡让ul下的li,先className='';然后再让className='on';但是我想让普通选项卡与向前/向后功能结合,使用oUl.style.left=-now*640+'px';这时候就不能让className='';然后再让className='on'了,而是让改css中的ul li为block,然后用oUl.style.left=-now*640+'px',(img图片的宽度)普通选项卡是让li单个显示的,我的是让ul移动显示
3 主要原因是我用了float,后来改成用定位实现了按钮的左浮动和居中,然后调高层级
4 将img标签改为背景图,很好的解决了垂直居中的问题
5 原先我还以为是事件冒泡,后来我改为,当鼠标移入div时显示向前/向后按钮,并且添加鼠标移入向前/向后按钮事件,ok

代码:
<!--HTML-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>幻灯片</title>
<link type="text/css" rel="stylesheet" href="../css/幻灯片.css" />
<script src="../js/幻灯片.js"></script>
<script src="../js/move.js"></script>
</head>
<body>
<div id="div1">
<a href="javascript:;" id="prev"></a>
<a href="javascript:;" id="next" ></a>
<ul id="ul1">
<li class="on"><a href="#"><img src="../image/1.jpg" /></a></li>
<li><a href="#"><img src="../image/2.jpg" /></a></li>
<li><a href="#"><img src="../image/3.jpg" /></a></li>
<li><a href="#"><img src="../image/4.jpg" /></a></li>
<li><a href="#"><img src="../image/5.jpg" /></a></li>
<li><a href="#"><img src="../image/6.jpg" /></a></li>
</ul>
<ol id="ol1">
<li class="on"><a href="javascript:;">1</a></li>
<li><a href="javascript:;">2</a></li>
<li><a href="javascript:;">3</a></li>
<li><a href="javascript:;">4</a></li>
<li><a href="javascript:;">5</a></li>
<li><a href="javascript:;">6</a></li>
</ol>
</div>
</body>
</html>

/* CSS Document */
*{margin:0;padding:0;list-style:none;}
#div1{ position:relative; overflow:hidden; width:640px; height:270px; margin:50px auto; }
#div1 ul{ position:relative; left:0; float:left;width:3840px; height:100%;}
#div1 ul li{ float:left;}
#div1 ol{ position:absolute; bottom:20px; left:40%;}
#div1 ol li{ float:left; width:20px; height:20px; background:red; margin-left:10px; text-align:center; cursor:pointer;}
#div1 ol li a{ text-decoration:none; color:#fff;}
#div1 ol li.on{ background:blue;}
#prev{ position:absolute; left:0; top:105px; width:45px; height:60px; display:none; z-index:100; background:#ccc url(../image/btn_l.png) no-repeat center; opacity:0.8;}
#next{position:absolute; right:0; top:105px; width:45px; height:60px; display:none; z-index:100; background: #ccc url(../image/btn_r.png) no-repeat center; opacity:0.8;}
#prev.on,#next.on{ display:block;}

// JavaScript Document
window.οnlοad=function(){
var oOl=document.getElementById('ol1');
var oUl=document.getElementById('ul1');
var oDiv=document.getElementById('div1');
var aUli=oUl.children;
var aOli=oOl.children;
var now=0;
var timer=null;

//点击播放选项卡
for(var i=0;i<aOli.length;i++)
{
(function(index){
aOli[index].οnclick=function(){

for(var i=0;i<aOli.length;i++)
{ now=index;
aOli[i].className='';
//aUli[i].className='';
}
aOli[index].className='on';
//aUli[index].className='on';
oUl.style.left=-now*640+'px';
};
})(i)
}

//向前/向后按钮
var oPrev=document.getElementById('prev');
var oNext=document.getElementById('next');
oUl.οnmοuseοver=oPrev.οnmοuseοver=oNext.οnmοuseοver=function(){
//如果光是oUl.onmouseover ,oPrev.οnmοuseοver=oNext.onmouseover移上/点击的时候会闪烁
oPrev.className='on';
oNext.className='on'
};
oUl.οnmοuseοut=function(){
oPrev.className='';
oNext.className=''
};

//向前播放选项卡
oPrev.οnclick=function(){
now--;
if(now==-1)now=aOli.length-1;
for(var i=0;i<aOli.length;i++)
{
aOli[i].className='';
aUli[i].className='on';
}
aOli[now].className='on';
oUl.style.left=-now*640+'px';
};

//向后播放选项卡
oNext.οnclick=function(){
now++;
if(now==aOli.length)now=0;
for(var i=0;i<aOli.length;i++)
{
aOli[i].className='';
//aUli[i].className='on';
}
aOli[now].className='on';
oUl.style.left=-now*640+'px';
};

//自动向后播放选项卡
autoPlay();
oDiv.οnmοuseοver=function(){
clearInterval(timer);
};
oDiv.οnmοuseοut=function(){
autoPlay();
};

function autoPlay()
{
timer=setInterval(function(){
now++;
if(now==aOli.length)now=0;
for(var i=0;i<aOli.length;i++)
{
aOli[i].className='';
//aUli[i].className='on';
}
aOli[now].className='on';
oUl.style.left=-now*640+'px';
},1300);
}
};

转载于:https://www.cnblogs.com/reaf/p/5154497.html

相关文章:

  • Eclipse不能自动编译 java文件的解决方案
  • 归并排序-就地排序
  • 程序设计第二次作业1
  • 作业一
  • 【数论】关于乘法逆元的证明
  • Python练习:简单停车场(栈)
  • ruby include和exclude区别
  • Javaweb Servlet出现Class xxx is not a servlet错误原因
  • ubuntu 解压
  • Atitit.面向接口的web 原理与设计重写 路由启动绑定配置url router rewriting urlpage  mvc mvp的 java c#.net php js...
  • 【B2B】2015 年B2B的春天
  • php反射方法信息
  • RedHat5.7+ice3.4.2+php5.2.17+nginx1.8.1环境配置
  • ActiveSync 在 Win7(32位) 与 WinCE7 之间使用出现的问题
  • 分别利用(代码,Xib,SB)创建空的App工程
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 77. Combinations
  • Docker入门(二) - Dockerfile
  • Effective Java 笔记(一)
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • java概述
  • rc-form之最单纯情况
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 小而合理的前端理论:rscss和rsjs
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • puppet连载22:define用法
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​​​​​​​​​​​​​​Γ函数
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #QT(智能家居界面-界面切换)
  • $.proxy和$.extend
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十三)Maven插件解析运行机制
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)IOS中获取各种文件的目录路径的方法
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .net 4.0发布后不能正常显示图片问题
  • .NET/C# 的字符串暂存池
  • .NET上SQLite的连接
  • @DataRedisTest测试redis从未如此丝滑
  • @Transactional 竟也能解决分布式事务?
  • []FET-430SIM508 研究日志 11.3.31
  • [2021 蓝帽杯] One Pointer PHP
  • [android] 练习PopupWindow实现对话框
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [C/C++]数据结构 堆的详解
  • [ESP32] 编码旋钮驱动
  • [Hibernate] - Fetching strategies
  • [Latex] Riemann 问题中的激波,接触间断,膨胀波的 Tikz 绘图
  • [leetcode 189][轮转数组]