首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[分享]css3手指滑动特效

发布于 2024-11-11 15:35:38
0
22

CSS3手指滑动特效是一种炫酷的动态效果,通过CSS3技术实现手指滑动的视觉效果,可以使网页更加生动有趣。/ 创建一个触屏滑动的容器 / .container { : relative; overfl...

CSS3手指滑动特效是一种炫酷的动态效果,通过CSS3技术实现手指滑动的视觉效果,可以使网页更加生动有趣。

/* 创建一个触屏滑动的容器 */ 
.container { 
 	position: relative; 
 	overflow: hidden; 
 	width: 100%; 
 	height: 400px; 
 	touch-action: pan-y; 
} 

/* 创建一个滑动的内容 */ 
.content { 
 	position: absolute; 
 	top: 0; 
 	left: 0; 
 	transition: transform 0.3s ease-in-out; 
} 

通过设置容器的touch-action属性为pan-y,可以实现在容器中通过手指上下滑动的操作。而在容器内部,使用CSS3的transition属性来实现内容区域的滑动效果。

/* 绑定触屏事件 */ 
.container:before, 
.container:after { 
 	position: absolute; 
 	content: ''; 
 	top: 0; 
 	width: 100%; 
 	height: 60px; 
 	z-index: 1; /* 遮挡容器滑动 */ 
} 

.container:before { 
 	background: linear-gradient(transparent, rgba(0,0,0,.8)); 
}

.container:after { 
 	bottom: 0; 
 	transform: rotate(180deg); 
 	background: linear-gradient(rgba(0,0,0,.8), transparent); 
} 

var container = document.querySelector('.container'); // 获取容器 
var startX, startY, moveEndX, moveEndY, X, Y; // 定义变量 

container.addEventListener('touchstart', function(e) { 
  // 获取起始坐标 
  startX = e.touches[0].pageX; 
  startY = e.touches[0].pageY; 
}); 

container.addEventListener('touchmove', function(e) { 
  // 阻止默认事件 
  e.preventDefault(); 
  // 获取结束坐标 
  moveEndX = e.changedTouches[0].pageX; 
  moveEndY = e.changedTouches[0].pageY; 
  // 计算滑动距离 
  X = moveEndX - startX; 
  Y = moveEndY - startY; 
  // 判断滑动方向 
  if (Math.abs(X) < Math.abs(Y) && Y > 0) { 
    // 下滑 
    container.querySelector('.content').style.transform = 'translateY(' + Y + 'px)'; 
  } else if (Math.abs(X) < Math.abs(Y) && Y < 0) { 
    // 上滑 
    container.querySelector('.content').style.transform = 'translateY(' + Y + 'px)'; 
  } 
}); 

通过JavaScript绑定容器的touchstart和touchmove事件,可以获取滑动的起始坐标和结束坐标,并计算滑动的距离判断滑动方向。在滑动过程中,重新设置内容区域的transform属性,实现滑动效果。同时,为了遮挡容器滑动的区域,可以创建before和after伪类,设置它们的高度和背景渐变颜色,从而实现更加自然的视觉效果。

评论
一个月内的热帖推荐
91云脑
Lv.1普通用户

62849

帖子

14

小组

291

积分

赞助商广告
站长交流