支持移動(dòng)端原生js輪播圖
更新時(shí)間:2017年02月16日 08:30:14 作者:死垃圾
這篇文章主要介紹了支持移動(dòng)端原生js輪播圖的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
直接上代碼,自行復(fù)制粘貼,本人是新手,歡迎指正。
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>輪播圖</title>
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />
<style type="text/css">
.container{
width: 500px;
height: 400px;
overflow: hidden;
margin: 50px auto;
position: relative;
}
.list{
width: 2500px;
height: 400px;
position: absolute;
left: 0px;
}
.list img{
float: left;
height: 400px;
width: 500px;
}
.buttons{
position: absolute;
width: 75px;
height: 20px;
bottom: 10px;
left: 50%;
margin-left: -38px;
z-index: 2;
}
.buttons span{
width: 10px;
height: 10px;
margin-right: 5px;
display: inline-block;
border-radius: 5px;
background-color: gray;
opacity: 0.5;
cursor: pointer;
}
.buttons .on{
background-color: rgb(255,50,50);
opacity: 0.8;
}
.arrow{
position: absolute;
background-color: gray;
opacity: 0.5;
height: 40px;
width: 40px;
color: #fff;
text-decoration: none;
line-height: 40px;
font-size: 28px;
font-weight: 800;
text-align: center;
}
#prev{
top:50%;
left: 10px;
margin-top:-20px;
}
#next{
top:50%;
right: 10px;
margin-top:-20px;
}
</style>
</head>
<body>
<div id="container" class="container">
<div id="list" class="list">
<img src="1.jpg">
<img src="2.jpg">
<img src="3.jpg">
<img src="4.jpg">
<img src="5.jpg">
</div>
<div id="buttons" class="buttons">
<span index="0" class="on"></span><!--
--><span index="1"></span><!--
--><span index="2"></span><!--
--><span index="3"></span><!--
--><span index="4"></span>
</div>
<a href="javascript:;" rel="external nofollow" rel="external nofollow" id="prev" class="arrow"><</a>
<a href="javascript:;" rel="external nofollow" rel="external nofollow" id="next" class="arrow">></a>
</div>
<script type="text/javascript">
window.onload = function(){
var container = document.getElementById('container');
var list = document.getElementById('list');
var buttons = document.getElementById('buttons');
var buttonsItem = buttons.getElementsByTagName('span');
var prev = document.getElementById('prev');
var next = document.getElementById('next');
var index = 0;
var startX = 0;
var endX = 0;
container.addEventListener('touchend',function(event){
if(event.changedTouches.length==1&&this.getAttribute('disabled')!='disabled'){
var touch = event.changedTouches[0];
endX = touch.pageX;
var offset = endX-startX;
console.log(offset);
if(Math.abs(offset)>=50){
if(offset<0){// 右滑
nextMethod();
}else{
prevMethod();
}
}
}
});
container.addEventListener('touchmove',function(){
event.preventDefault();
})
container.addEventListener('touchstart',function(event){
if(event.targetTouches.length==1&&this.getAttribute('disabled')!='disabled'){
var touch = event.targetTouches[0];
startX = touch.pageX;
}
})
prev.addEventListener('click',function(){
if (this.getAttribute('disabled')=='disabled') {
return false;
}
prevMethod();
});
next.addEventListener('click',function(){
if (this.getAttribute('disabled')=='disabled') {
return false;
}
nextMethod();
});
for(var i=0;i<buttonsItem.length;i++){
buttonsItem[i].onclick = function(){
if (this.getAttribute('disabled')=='disabled') {
return false;
}
var i = this.getAttribute('index');
var length = Math.abs((i-index)*500);
var direction = 'right';
if (length<0) {
direction = 'left';
}
index = i;
document.getElementsByClassName('on')[0].setAttribute('class','');
buttonsItem[index].className = 'on';
animate(direction,1,length);
}
}
function prevMethod(){
if(index==0){
index = 4;
animate('right',40,2000);
}else{
index--;
animate('left',1,500);
}
document.getElementsByClassName('on')[0].setAttribute('class','');
// buttonsItem[index].setAttribute('class','on');
buttonsItem[index].className = 'on';
}
function nextMethod(){
if(index==4){
index = 0;
animate('left',40,2000);
}else{
index++;
animate('right',1,500);
}
document.getElementsByClassName('on')[0].setAttribute('class','');
buttonsItem[index].className = 'on';
}
function animate(direction,speed,length){
var end = length/speed;
var count = 0;
for(var i=0;i<end;i++){
setTimeout(function(){
count++;
var left = list.offsetLeft;
if (direction=='right') {
left -= speed;
}else{
left += speed;
}
list.style.left = left+'px';
if(count<end-1){
disabledButtons();
}else{
resumeButtons();
}
},speed*i);
}
}
function disabledButtons(){
for(var i=0;i<5;i++){
buttonsItem[i].setAttribute('disabled','disabled');
}
prev.setAttribute('disabled','disabled');
next.setAttribute('disabled','disabled');
container.setAttribute('disabled','disabled');
}
function resumeButtons(){
for(var i=0;i<5;i++){
buttonsItem[i].removeAttribute('disabled');
}
prev.removeAttribute('disabled');
next.removeAttribute('disabled');
container.removeAttribute('disabled');
}
}
</script>
</body>
</html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- js實(shí)現(xiàn)移動(dòng)端輪播圖滑動(dòng)切換
- javascript實(shí)現(xiàn)移動(dòng)端輪播圖
- 原生js實(shí)現(xiàn)移動(dòng)端Touch輪播圖的方法步驟
- js實(shí)現(xiàn)移動(dòng)端輪播圖
- JS實(shí)現(xiàn)點(diǎn)擊拉拽輪播圖pc端移動(dòng)端適配
- js原生實(shí)現(xiàn)移動(dòng)端手指滑動(dòng)輪播圖效果的示例
- 利用純js + transition動(dòng)畫(huà)實(shí)現(xiàn)移動(dòng)端web輪播圖詳解
- js實(shí)現(xiàn)移動(dòng)端輪播圖效果
- JS仿京東移動(dòng)端手指撥動(dòng)切換輪播圖效果
- 基于javascript實(shí)現(xiàn)移動(dòng)端輪播圖效果
相關(guān)文章
JS驗(yàn)證輸入的是否是數(shù)字及保留幾位小數(shù)問(wèn)題
這篇文章主要介紹了JS驗(yàn)證輸入的是否是數(shù)字及保留幾位小數(shù)問(wèn)題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05
JavaScript的9個(gè)陷阱及評(píng)點(diǎn)分析
以下是JavaScript容易犯錯(cuò)的九個(gè)陷阱。雖然不是什么很高深的技術(shù)問(wèn)題,但注意一下,會(huì)使您的編程輕松些,即所謂make life easier. 筆者對(duì)某些陷阱會(huì)混雜一些評(píng)點(diǎn)。2008-05-05
Javascript中 帶名 匿名 箭頭函數(shù)的重要區(qū)別(推薦)
這篇文章主要介紹了Javascript中 帶名 匿名 箭頭函數(shù)的重要區(qū)別,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-01-01
javascript實(shí)現(xiàn)狀態(tài)欄中文字動(dòng)態(tài)顯示的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)狀態(tài)欄中文字動(dòng)態(tài)顯示的方法,涉及JavaScript基于時(shí)間函數(shù)動(dòng)態(tài)操作頁(yè)面元素屬性的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10

