移动端阻止ios弹性滑动_如何阻止pc端,移动端的滚动

e097023cb7b98693f63f7c39be6453d4.png
<div id='x'>
   <p> 100 行 </p>
   ...
</div>

此处会展示出一个滚动框,那么我们应该怎么阻止滚动呢?

首先肯定是用我们的CSS来实现了

#x{
  overflow:hidden;
}

这样就直接取消了滚动条,但此时依然可以通过JS来修改scrollTop

既然这样,我们用js来解决问题,我们先对scroll事件进行阻止默认动作

x.addEventListener('scroll',(e)=>{
  e.preventDefault()
})

发现用 .preventDefault() 方法行不通。然后再试试

x.addeventListener('scroll',(e)=>{
  e.stopPropagation()
})

此时发现 .stopPropagation() 方法也行不通。

通过查询MDN发现,有些事件不能阻止默认动作。

214395935b5297321d4b09fbf9c2c955.png

Bubbles:该事件是否可以冒泡

Cancelable:该事件是否可以阻止默认事件

因此,联想一下,scroll事件是滚动触发,所以先要有滚动才有滚动事件,要阻止滚动,可以阻止滚轮滚动。阻止 wheel 事件的默认动作

x.addEventListener('wheel',(e)=>{
  e.preventDefault()
})

现在发现滚轮的默认动作以无效,但是依然会显示滚动条,而且,可以使用鼠标点击拖滚动条来实现滚动效果。

那么,用户通过滚动条来实现滚动的,我们可以让滚动条消失在视野中就好了。

::-webkit-scrollbar{
  width:0 !important;
}

这样就让滚动条消失啦,这里我们把滚动事件分解成几个步骤,进行阻止,就实现了阻止滚动功能了。

然而,当我们把该解决方法放在移动端,又是行不通了,因为手机没有 wheel 事件,但是有touchstart 事件

x.addEventListener('touchstart',(e)=>{
  e.preventDefault()
})

这样就阻止移动端的滚动了!

Document: scroll event​developer.mozilla.org
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现移动端块级标签左右滑动,可以使用CSS属性overflow-x:scroll实现横向滚动,结合JavaScript的touch事件监听用户触摸事件,实现手指滑动标签的效果。具体实现步骤如下: 1. 设置外层容器的宽度,超出部分隐藏,并设置overflow-x:scroll属性。 2. 将标签放置在内层容器中,设置宽度和display:inline-block属性,让它们成为水平排列的块级元素。 3. 监听touchstart、touchmove和touchend事件,获取手指滑动的距离,并通过修改内层容器的scrollLeft属性来实现滚动效果。 4. 在touchmove事件中阻止默认事件,避免页面整体滚动。 下面是一个简单的实现示例: HTML代码: ``` <div class="wrapper"> <div class="inner"> <div class="tab">标签1</div> <div class="tab">标签2</div> <div class="tab">标签3</div> <div class="tab">标签4</div> <div class="tab">标签5</div> <div class="tab">标签6</div> <div class="tab">标签7</div> <div class="tab">标签8</div> </div> </div> ``` CSS代码: ``` .wrapper { width: 100%; overflow-x: scroll; -webkit-overflow-scrolling: touch; /* 解决在iOS设备上的滑动卡顿问题 */ } .inner { white-space: nowrap; /* 让所有标签横向排列 */ } .tab { display: inline-block; width: 100px; height: 40px; line-height: 40px; text-align: center; background-color: #ccc; margin-right: 10px; } ``` JavaScript代码: ``` var inner = document.querySelector('.inner'); var startX, moveX, endX; inner.addEventListener('touchstart', function(e) { startX = e.touches[0].pageX; }); inner.addEventListener('touchmove', function(e) { moveX = e.touches[0].pageX; var distance = moveX - startX; // 手指滑动的距离 inner.scrollLeft -= distance; // 修改滚动距离 e.preventDefault(); // 阻止默认事件 }); inner.addEventListener('touchend', function(e) { endX = e.changedTouches[0].pageX; }); ``` ### 回答2: 在移动端,要实现块级标签的左右滑动效果,可以通过以下几种方法来实现。 1. 使用CSS属性:可以使用CSS的overflow属性和transform属性来实现左右滑动。将父容器设置为固定宽度并设置overflow:hidden,子容器设置为相对宽度并通过transform属性进行平移。通过监听用户的手势事件,利用触摸位移的距离来改变子容器的transform属性值,实现左右滑动的效果。 2. 使用JavaScript库:可以使用一些移动端专用的JavaScript库,如TouchSwipe、iScroll等来实现左右滑动效果。这些库提供了一些简化的API和事件,方便开发者快速实现移动端滑动效果。 3. 使用HTML5的touch事件:通过监听移动设备的触摸事件,如touchstart、touchmove、touchend等事件,计算手指滑动的位移和速度,根据手指滑动的方向和速度来改变块级标签的位置,从而实现左右滑动的效果。 无论使用哪种方法,都需要注意兼容性和性能优化。要确保在不同移动设备上都能正常工作,并尽量减少不必要的DOM操作和计算,提升页面的响应速度和流畅度。同时,为了提供更好的用户体验,还可以增加一些过渡效果和动画效果,使滑动更加平滑和自然。 ### 回答3: 移动端块级标签左右滑动是指在移动设备上,通过手指触摸屏幕的滑动动作,来实现块级标签(如图片、文字等)在水平方向上的左右滑动效果。 要实现这样的效果,可以借助一些移动端开发框架或者JavaScript插件,如swiper、iscroll等。 首先,需要在HTML中创建块级标签,并设置好它们的样式和内容。然后,引入相应的移动端开发框架或者JavaScript插件,并按照其提供的API进行初始化和配置。 在配置过程中,可以设置块级标签的容器元素,即它们的父级元素,使其具备可以水平滑动的特性。同时,还可以设置滑动的方向、滑动速度、滑动的边界等参数,以满足具体的需求。 接着,需要在JavaScript代码中监听用户的触摸事件,包括滑动的起始、移动中和结束,通过计算手指在屏幕上的滑动距离,调用相应的API来实现滑动效果。 在滑动的过程中,可以根据用户的操作,动态调整块级标签的位置和属性,实现更加灵活的滑动效果。同时,根据需要,还可以添加一些过渡效果、动画效果等,增强用户的体验感。 最后,在滑动结束时,可以根据滑动的距离和速度,判断用户的操作意图,并自动滚动到最近的一个块级标签位置,使界面呈现出一种用户友好的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值