JavaScript-移动端网页特效
touchstart 手指摸到一个DOM元素时触发
touchmove 手指在一个DOM元素上滑动时触发
touchend 手指摸到一个DOM元素上移开时触发
touches 正在触摸屏幕的所有手指的列表
targetTouches 正在触摸当前DOM元素的手指列表
changedTouches 手指状态发生了改变的列表,从无到有,从有到无变化
3、classList
classList 返回元素类名
1、添加类名 是在后面追加类名不会覆盖以前的类名 前面不需要加。
div.classList.add('three')
2、删除类名
div.classList.remove('one')
3、切换类
div.classList.toggle('one')
4、移动端轮播图及返回顶部
window.addEventListener('load',function () {
// 1、获取元素
let focus = document.querySelector('.focus');
let ul = focus.children[0];
let ol = focus.children[1];
// 获得focus的宽度
let focusWidth = focus.offsetWidth;
// 2、利用定时器自动轮播图片
let index = 0;
let timer = setInterval(function () {
index++;
let translatex = - index * focusWidth;
ul.style.transition = 'all .3s';
ul.style.transform = 'translateX('+translatex+'px)'
},2000);
// 判断是否过渡完,监听过渡完的事件 transitionend
ul.addEventListener('transitionend',function () {
// 无缝滚动
if (index >= 3){
index = 0;
// 去掉过渡效果
ul.style.transition = 'none';
// 利用最新的索引乘以宽度 去滚动图片
let translatex = - index * focusWidth;
ul.style.transform = 'translateX('+translatex+'px)';
}else if (index < 0){
index = 2;
// 去掉过渡效果
ul.style.transition = 'none';
// 利用最新的索引乘以宽度 去滚动图片
let translatex = - index * focusWidth;
ul.style.transform = 'translateX('+translatex+'px)';
}
// 3、小圆点跟随变化
// 把ol里面li带有current类名的选出来去掉类名 remove
ol.querySelector('.current').classList.remove('current');
// 给当前索引号的 li 加上current add
ol.children[index].classList.add('current');
});
// 4、手指滑动轮播图
// 触摸元素 touchstart 获取手指初始坐标
let startx = 0;
let movex = 0;
let flag = false; // 如果用户手指移动过我们再去判断,否则不做判断效果
ul.addEventListener('touchstart',function (e) {
startx = e.targetTouches[0].pageX;
// 手指触摸的时候就停止定时器
clearInterval(timer);
})
// 移动手指touchmove:计算手指的滑动距离,并且移动盒子
ul.addEventListener('touchmove',function (e) {
// 计算移动距离
movex = e.targetTouches[0].pageX - startx;