html js轮播图无白链接,JavaScript:100%原生js实现左右切换的轮播图(无延迟加载)...
简介这篇文章主要介绍了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实现左右切换的轮播图(无延迟加载)...相关推荐
- js事件里面套事件怎么不管用_原生js利用localstorage实现简易TODO list应用
前言:小生不才,只懂得一些皮毛,我努力以最简单的语言将心中的想法表述出来,让更多人能够很轻松的弄明白.文章里面有不足之处望各位大牛指出,使得后面的文章能够朝着更好的方向发展.另外,大家记得点赞哟! 欢 ...
- JavaScript:原生JS实现Facebook实时消息抓捕
基础知识准备: HTML5给我们提供了一个新的对象叫作:MutationObserver.为了兼容,还有WebKitMutationObserver.MozMutationObserver,挂靠在wi ...
- 静态HTML网页设计作品 电影网站设计——电影我不是药神响应式页播(4页) HTML+CSS+JavaScript HTML+CSS+JS网页设计期末课程大作业 web前端开发技术 web课程设计
HTML5期末大作业:在线电影网站设计--电影我不是药神响应式页播(4页) 文章目录 HTML5期末大作业:在线电影网站设计--电影我不是药神响应式页播(4页) 一.作品展示 二.文件目录 三.代码实 ...
- 如何更改html广告,js 动态改变广告代码DIV的位置_原生JS通过innerHTML改变div位置...
在实际的广告应用中时不时会出现这个需求,就是我投放的广告位距离用户经常点击的翻页太远了,网站主不愿意为了这个需求去把整站的内容生成一遍,那会耗费很长时间,而且不确定有没有错误,这个时候就需要广告代码中 ...
- JavaScript:原生js写的一个多按钮Popover 弹出框
效果如图 需求:点击按钮弹出,如果不进行其他操作则弹出层延时消失,点击另一个按钮时清楚其他弹窗 思路:先完成一个具有弹出层的按钮的样式,使用伪元素定位到按钮上方,加入定时器使其自动消失,当点击另一个按 ...
- javascript - 封装原生js实现ajax
1 /* 2 * ajax方法 3 */ 4 var Ajax = function() { 5 var that = this; 6 //创建异步请求对象方法 7 that.createXHR = ...
- js从服务器获取word文档,javascript - 使用Office.js API将Word文档(.docx)保存到后端服务器 - 堆栈内存溢出...
我在将byte数组(使用Office.js从Microsoft Office的任务窗格中获取)保存到Word文档文件(在服务器端)时遇到了一些麻烦. 这就是我在做什么: 我正在使用此库获取Word文档 ...
- js判断类型为数字的方法实现总汇——原生js判断isNumber()
方法一[推荐]: 最容易想到的是用typeof来判断是否是number类型 ,但是如果为NaN会被认为也是number类型,因此我们需要使用isNaN来排除NaN的情况. function isNum ...
- 【JavaScript】原生js阻止事件的三种方式
三种阻止事件执行的方式 event.preventDefault() event.stopPropagation() return false 1.event.preventDefault() 阻止特 ...
最新文章
- 5G NGC — 关键技术 — 网络切片 — 底层技术支撑
- 内联函数的声明和定义
- java读写注册表的两种方式,Preferences与jRegistry
- 一窥 ARM 的 AI 处理器
- PCL_OpenNI安装报错 解决办法
- 外媒:美国降雪引发事故 2天内造成3人死亡2人受伤
- 使用canto+w3m实现在控制台上完美阅读RSS
- idea配置mysql失败_IDEA配置数据库连接失败的问题
- UE4像素流送PixelStreaming
- SwiftyJSON 对网络请求来的数据进行解析或者转为modul
- 当马队遭遇狼群,阿里华为长篇竞合剧基情开幕
- 实验:windows密码破解
- 计算机数学英语基础,2020考研计算机数学复习四大基本方向
- SuperMap iObjects C++之缓冲区
- VVC/JEM代码学习12:transformNxN
- 新款macbook pro发布了,但为什么不推荐购买
- 如何在JavaScript中直观地设计状态
- 不做无用功 Google Colab掉线自动重连“助手”
- 微信小程序用户自动检测最新版本并更新2020年最新版亲测
- postgresql11.2修改分区表中复合索引字段长度遇到的BUG
热门文章
- Vue使用html2Canvas和canvas2Image下载二维码会模糊的问题解决方法
- 速成pytorch学习——4天中阶API示范
- 全球首发!计算机视觉Polygon Mesh Processing总结10——DEFORMATION
- android第三方launcher,目前Android平台最好的Launcher
- python窗体应用程序无阻塞_当GUI应用程序运行时,imshow阻塞线程
- beego模板语法循环html块,1.69 beego 模板语法指南 - Beego 中文文档
- mysql异机还原_MySQL innobackupex全量备份恢复
- 大数据在各个行业的应用_大数据的应用领域有哪些
- 听说你想进玩TikTok?
- 怎么调整矩形边框宽度_Illustrator实例教程:利用自定义画笔绘制中国风传统边框...