简介这篇文章主要介绍了JavaScript:100%原生js实现左右切换的轮播图(无延迟加载)以及相关的经验技巧,文章约11114字,浏览量505,点赞数3,值得参考!

*{

margin:0;

padding:0;

list-style: none;

}

.box{

width: 1000px;

height: 300px;

position: relative;

margin:30px auto;

overflow: hidden;

}

.box .boxInner{

width: 4000px;

position: absolute;

left: 0;

top:0;

}

.box .boxInner div{

width: 1000px;

height: 300px;

float: left;

}

.box .boxInner div img{

width: 100%;

height: 100%;

}

.box ul{

position: absolute;

right:10px;

bottom:10px;

}

.box ul li{

width: 18px;

height: 18px;

background: #ccc;

border-radius: 50%;

margin-left: 10px;

float: left;

cursor: pointer;

}

.box ul li.on{

background: lightblue;

}

.box a{

width: 30px;

height: 30px;

position: absolute;

top:127px;

border: 10px solid red;

border-left: none;

border-bottom: none;

opacity: 0.3;

filter:alpha(opacity=30);

display: none;

}

.box a:hover{

opacity: 1;

filter:alpha(opacity=100);

}

.box .btnLeft{

transform: rotate(-135deg);

left:30px;

}

.box .btnRight{

transform: rotate(45deg);

right:30px;

}

function getCss(curEle,attr){

var val=null;

var reg=null;

if(getComputedStyle){//标准

val=getComputedStyle(curEle,false)[attr];

}else{//非标准

if(attr===‘opacity‘){

val=curEle.currentStyle.filter; //‘alpha(opacity=10)‘

reg=/^alpha\(opacity[=:](\d+)\)$/i;

return reg.test(val)?reg.exec(val)[1]/100:1;

}

val=curEle.currentStyle[attr];

}

reg=/^[+-]?((\d|([1-9]\d+))(\.\d+)?)(px|pt|rem|em)$/i;

return reg.test(val)?parseInt(val):val;

}

function setCss(curEle,attr,value){

if(attr===‘float‘){

curEle.style.cssFloat=value;

curEle.style.styleFloat=value;

return;

}

if(attr===‘opacity‘){

curEle.style.opacity=value;

curEle.style.filter=‘alpha(opacity=‘+(value*100)+‘)‘;

return;

}

//对单位的处理

var reg=/^(width|height|top|right|bottom|left|((margin|padding)(top|right|bottom|left)?))$/i;

if(reg.test(attr)){

if(!(value===‘auto‘ || value.toString().indexOf(‘%‘)!==-1)){

value=parseFloat(value)+‘px‘;

}

}

curEle.style[attr]=value;

}

function setGroupCss(curEle,opt){

if(opt.toString()!==‘[object Object]‘) return;

for(var attr in opt){

this.setCss(curEle,attr,opt[attr]);

}

}

function css(curEle){

var arg2=arguments[1];

if(typeof arg2===‘string‘){

var arg3=arguments[2];

if(typeof arg3===‘undefined‘){ //当第三个参数不存在,是获取;

return this.getCss(curEle,arg2);

}else{

this.setCss(curEle,arg2,arg3);

}

}

if(arg2.toString()===‘[object Object]‘){ //获取一组元素

this.setGroupCss(curEle,arg2);

}

}

function animate(curEle,target,duration){

function tmpEffect(t, b, c, d) {

return c * t / d + b;

}

//1.为公式的每个参数做准备

var begin={};

var change={};

for(var attr in target){

begin[attr]=css(curEle,attr);

change[attr]=target[attr]-begin[attr];

}

duration=duration||700;

var time=0;

//2.开启一个定时器,让时间不断累加;根据时间和公式,求出最新的位置;

clearInterval(curEle.timer); //开起一个定时器前,先关闭没用的定时器

curEle.timer=setInterval(function(){

time+=10;

//3.停止运动的条件(time>=duration)

if(time>=duration){

css(curEle,target);

clearInterval(curEle.timer);

return;

}

//拿到每个属性的最新值,并且赋值给元素对应的属性;

for(var attr in target){

var curPos=tmpEffect(time,begin[attr],change[attr],duration);

css(curEle,attr,curPos);

}

},10)

}

(function(){

//获取元素

var oBox=document.getElementById("box");

var oBoxInner=oBox.getElementsByTagName(‘div‘)[0];

var aDiv=oBoxInner.getElementsByTagName(‘div‘);

var oUl=oBox.getElementsByTagName(‘ul‘)[0];

var aLi=oUl.getElementsByTagName(‘li‘);

var oBtnLeft=oBox.getElementsByTagName(‘a‘)[0];

var oBtnRight=oBox.getElementsByTagName(‘a‘)[1];

var data=null;

var timer=null;

var step=0;

//1.获取并解析数据

getData();

function getData(){

var xml=new XMLHttpRequest;

xml.open(‘get‘,‘json/data.txt‘,false);

xml.onreadystatechange=function(){

if(xml.readyState==4 && /^2\d{2}$/.test(xml.status)){

data=JSON.parse(xml.responseText);

}

};

xml.send();

}

//2.绑定数据

bind();

function bind(){

var strDiv=‘‘;

var strLi=‘‘;

for(var i=0; i

strDiv+=‘

‘;

strLi+=i===0?‘

‘:‘‘;

}

strDiv+=‘

‘;

oBoxInner.innerHTML+=strDiv;

oBoxInner.style.width=aDiv.length*aDiv[0].offsetWidth+‘px‘;

oUl.innerHTML+=strLi;

}

//3.图片自动轮播

timer=setInterval(autoMove,1400);

function autoMove(){

if(step>=aDiv.length-1){

step=0;

css(oBoxInner,‘left‘,0)

}

step++;

animate(oBoxInner,{left:-step*1000});

bannerTip();

}

//4.焦点自动轮播

function bannerTip(){

var tmpStep=step>=aLi.length?0:step;

for(var i=0; i

aLi[i].className=i==tmpStep?‘on‘:null;

}

}

//5.鼠标移入停止,移出继续

oBox.οnmοuseοver=function(){

clearInterval(timer);

oBtnLeft.style.display=‘block‘;

oBtnRight.style.display=‘block‘;

};

oBox.οnmοuseοut=function(){

timer=setInterval(autoMove,1400);

oBtnLeft.style.display=‘none‘;

oBtnRight.style.display=‘none‘;

};

//6.点击焦点手动切换

handleChange();

function handleChange(){

for(var i=0; i

aLi[i].index=i;

aLi[i].οnclick=function(){

step=this.index;

animate(oBoxInner,{left:-step*1000});

bannerTip();

}

}

}

//7.点击左右按钮手动切换

oBtnRight.οnclick=autoMove;

oBtnLeft.οnclick=function(){

if(step<=0){

step=aDiv.length-1;

css(oBoxInner,‘left‘,-step*1000);

}

step--;

animate(oBoxInner,{left:-step*1000});

bannerTip();

}

})();

html js轮播图无白链接,JavaScript:100%原生js实现左右切换的轮播图(无延迟加载)...相关推荐

  1. js事件里面套事件怎么不管用_原生js利用localstorage实现简易TODO list应用

    前言:小生不才,只懂得一些皮毛,我努力以最简单的语言将心中的想法表述出来,让更多人能够很轻松的弄明白.文章里面有不足之处望各位大牛指出,使得后面的文章能够朝着更好的方向发展.另外,大家记得点赞哟! 欢 ...

  2. JavaScript:原生JS实现Facebook实时消息抓捕

    基础知识准备: HTML5给我们提供了一个新的对象叫作:MutationObserver.为了兼容,还有WebKitMutationObserver.MozMutationObserver,挂靠在wi ...

  3. 静态HTML网页设计作品 电影网站设计——电影我不是药神响应式页播(4页) HTML+CSS+JavaScript HTML+CSS+JS网页设计期末课程大作业 web前端开发技术 web课程设计

    HTML5期末大作业:在线电影网站设计--电影我不是药神响应式页播(4页) 文章目录 HTML5期末大作业:在线电影网站设计--电影我不是药神响应式页播(4页) 一.作品展示 二.文件目录 三.代码实 ...

  4. 如何更改html广告,js 动态改变广告代码DIV的位置_原生JS通过innerHTML改变div位置...

    在实际的广告应用中时不时会出现这个需求,就是我投放的广告位距离用户经常点击的翻页太远了,网站主不愿意为了这个需求去把整站的内容生成一遍,那会耗费很长时间,而且不确定有没有错误,这个时候就需要广告代码中 ...

  5. JavaScript:原生js写的一个多按钮Popover 弹出框

    效果如图 需求:点击按钮弹出,如果不进行其他操作则弹出层延时消失,点击另一个按钮时清楚其他弹窗 思路:先完成一个具有弹出层的按钮的样式,使用伪元素定位到按钮上方,加入定时器使其自动消失,当点击另一个按 ...

  6. javascript - 封装原生js实现ajax

    1 /* 2 * ajax方法 3 */ 4 var Ajax = function() { 5 var that = this; 6 //创建异步请求对象方法 7 that.createXHR = ...

  7. js从服务器获取word文档,javascript - 使用Office.js API将Word文档(.docx)保存到后端服务器 - 堆栈内存溢出...

    我在将byte数组(使用Office.js从Microsoft Office的任务窗格中获取)保存到Word文档文件(在服务器端)时遇到了一些麻烦. 这就是我在做什么: 我正在使用此库获取Word文档 ...

  8. js判断类型为数字的方法实现总汇——原生js判断isNumber()

    方法一[推荐]: 最容易想到的是用typeof来判断是否是number类型 ,但是如果为NaN会被认为也是number类型,因此我们需要使用isNaN来排除NaN的情况. function isNum ...

  9. 【JavaScript】原生js阻止事件的三种方式

    三种阻止事件执行的方式 event.preventDefault() event.stopPropagation() return false 1.event.preventDefault() 阻止特 ...

最新文章

  1. 5G NGC — 关键技术 — 网络切片 — 底层技术支撑
  2. 内联函数的声明和定义
  3. java读写注册表的两种方式,Preferences与jRegistry
  4. 一窥 ARM 的 AI 处理器
  5. PCL_OpenNI安装报错 解决办法
  6. 外媒:美国降雪引发事故 2天内造成3人死亡2人受伤
  7. 使用canto+w3m实现在控制台上完美阅读RSS
  8. idea配置mysql失败_IDEA配置数据库连接失败的问题
  9. UE4像素流送PixelStreaming
  10. SwiftyJSON 对网络请求来的数据进行解析或者转为modul
  11. 当马队遭遇狼群,阿里华为长篇竞合剧基情开幕
  12. 实验:windows密码破解
  13. 计算机数学英语基础,2020考研计算机数学复习四大基本方向
  14. SuperMap iObjects C++之缓冲区
  15. VVC/JEM代码学习12:transformNxN
  16. 新款macbook pro发布了,但为什么不推荐购买
  17. 如何在JavaScript中直观地设计状态
  18. 不做无用功 Google Colab掉线自动重连“助手”
  19. 微信小程序用户自动检测最新版本并更新2020年最新版亲测
  20. postgresql11.2修改分区表中复合索引字段长度遇到的BUG

热门文章

  1. Vue使用html2Canvas和canvas2Image下载二维码会模糊的问题解决方法
  2. 速成pytorch学习——4天中阶API示范
  3. 全球首发!计算机视觉Polygon Mesh Processing总结10——DEFORMATION
  4. android第三方launcher,目前Android平台最好的Launcher
  5. python窗体应用程序无阻塞_当GUI应用程序运行时,imshow阻塞线程
  6. beego模板语法循环html块,1.69 beego 模板语法指南 - Beego 中文文档
  7. mysql异机还原_MySQL innobackupex全量备份恢复
  8. 大数据在各个行业的应用_大数据的应用领域有哪些
  9. 听说你想进玩TikTok?
  10. 怎么调整矩形边框宽度_Illustrator实例教程:利用自定义画笔绘制中国风传统边框...