移动端html轮播,2020-12-09移动端可触摸滑动轮播图练习

效果展示

b8e3f88c63f8

SDGIF_Rusult_1.gif

程序设计思路

利用c3的变换,以及触摸事件进行设计

HTML框架

JavaScript部分

var ul = document.querySelector('ul');

var focus = document.querySelector('.focus');

var index = 0;

var w = focus.offsetWidth;

var ol = document.querySelector('ol');

var time = setInterval(function() {

index++;

// console.log(index);

var translatex = -index * w;

// console.log(translatex);

ul.style.transition = 'all .3s';

ul.style.transform = 'translateX(' + translatex + 'px)';

}, 2000);

//判断滑动出界怎么办

ul.addEventListener('transitionend', function() {

if (index >= 3) {

index = 0;

ul.style.transition = 'none';

var translatex = -index * w;

ul.style.transform = 'translateX(' + translatex + 'px)';

} else if (index < 0) {

index = 2;

ul.style.transition = 'none';

var translatex = -index * w;

ul.style.transform = 'translateX(' + translatex + 'px)';

}

//清除带有current类的li

ol.querySelector('.current').classList.remove('current');

//为当前的小li添加current类

ol.children[index].classList.add('current');

});

//触摸效果

var startX = 0;

var moveX = 0;

ul.addEventListener('touchstart', function(e) {

startX = e.targetTouches[0].pageX;

clearInterval(time);

// console.log(startX);

})

ul.addEventListener('touchmove', function(e) {

moveX = e.targetTouches[0].pageX - startX;

var translatex = -index * w + moveX;

ul.style.transform = 'translateX(' + translatex + 'px)';

})

ul.addEventListener('touchend', function(e) {

clearInterval(time);

time = setInterval(function() {

index++;

var translatex = -index * w;

ul.style.transition = 'all .3s';

ul.style.transform = 'translateX(' + translatex + 'px)';

}, 2000);

//回弹效果

if (Math.abs(moveX) >= 50) {

if (moveX > 0) {

index--;

var translatex = -index * w;

ul.style.transition = 'all .3s';

ul.style.transform = 'translateX(' + translatex + 'px)';

} else {

index++;

var translatex = -index * w;

ul.style.transition = 'all .3s';

ul.style.transform = 'translateX(' + translatex + 'px)';

}

} else {

var translatex = -index * w;

ul.style.transition = 'all .3s';

ul.style.transform = 'translateX(' + translatex + 'px)';

}

})

css部分

* {

margin: 0;

padding: 0;

}

.focus {

/* border: 1px solid red; */

position: relative;

width: 375px;

overflow: hidden;

}

ul {

width: 500%;

padding-left: 0;

overflow: hidden;

}

ul li {

float: left;

width: 20%;

list-style: none;

}

ul li img {

width: 100%;

}

ol {

position: absolute;

right: 10px;

bottom: 10px;

}

ol li {

float: left;

width: 5px;

height: 5px;

margin-right: 10px;

list-style: none;

transition: all .2s;

background-color: #ffffff;

}

.current {

width: 10px;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值