首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用css和js禁用对父元素的触摸并启用对子元素的触摸

要使用CSS和JavaScript禁用对父元素的触摸并启用对子元素的触摸,可以通过以下步骤实现:

CSS部分

首先,你可以使用CSS来禁用父元素的触摸事件。这可以通过设置touch-action属性来实现。例如,如果你想禁用父元素的所有触摸操作,可以这样写:

代码语言:txt
复制
.parent-element {
    touch-action: none;
}

JavaScript部分

然后,你可以使用JavaScript来确保子元素仍然可以接收触摸事件。这通常涉及到阻止事件冒泡,这样触摸事件就不会传递到父元素。以下是一个示例代码:

代码语言:txt
复制
// 获取父元素和子元素的引用
var parentElement = document.querySelector('.parent-element');
var childElement = document.querySelector('.child-element');

// 为子元素添加触摸事件监听器
childElement.addEventListener('touchstart', function(event) {
    // 阻止事件冒泡到父元素
    event.stopPropagation();
}, false);

// 可以为其他触摸事件(如touchmove和touchend)添加类似的监听器

应用场景

这种技术通常用于实现复杂的用户界面交互,例如,在一个可滚动的容器内有一个需要响应触摸的元素。在这种情况下,你可能希望禁用容器的滚动,但仍然允许用户与容器内的特定元素交互。

可能遇到的问题及解决方法

如果你发现即使设置了touch-action: none;,父元素仍然可以接收到触摸事件,可能是因为:

  1. 子元素的样式覆盖了父元素的样式:确保没有其他CSS规则覆盖了你设置的touch-action属性。
  2. JavaScript事件监听器没有正确设置:确保你已经正确地为子元素添加了事件监听器,并且事件类型(如touchstart)是正确的。
  3. 浏览器兼容性问题:不同的浏览器可能对touch-action属性的支持程度不同。确保测试你的代码在不同浏览器中的表现,并根据需要进行调整。

参考链接

通过上述方法,你可以有效地禁用父元素的触摸事件,同时允许子元素响应触摸。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

jimojianghu

) { // event.stopPropagation() // }) 触摸屏 要禁止触摸手指缩放,可以使用如下 CSS JS 两种方法。...js 处理 使用js代码来禁止触摸手指缩放,处理触控板类似的,这里主要是监听几个手势事件,touchstart, touchend, touchmove等。...用于设置触摸屏用户如何操纵元素区域,允许你在触控时控制滚动操作。 例如,浏览器内置缩放功能。 这样做好处还有,它可以允许你自己实现这些手势。...启用平移缩小缩放手势,但禁用其他非标准手势,例如双击以进行缩放。 禁用双击可缩放功能可减少浏览器在用户点击屏幕时延迟生成点击事件需要。...触摸动作也经常用于完全解决由支持双击缩放手势引起点击事件延迟。 pinch-zoom 启用多手指平移缩放页面。 这可以与任何平移值组合。

3.8K00

学会一行CSS即可提升页面滚动性能

顾名思义,该属性是用于设置触摸如何操纵元素区域动作,同样,touch-action 可以禁用浏览器在移动端处理手势事件,进而提高页面滚动性能,同时它还能解决移动端 点击延迟问题(很多人可能只知道viewport...不过需要注意是,虽然该属性也有 none 值,但在这里并不适用,因为"滚动"也属于手势一种,应该使用 manipulation 这个值,意为只允许进行滚动持续缩放操作,也就相当于禁用了其他页面手势...// 在需要时主动触发全局手势禁用document.documentElement.style.touchAction = 'none'// 或者独立禁用某一片区域手势操作document.getElementById...touch-action 就发挥作用了,它相当于先声明了元素可用触摸事件,这样浏览器就不会报错了,preventDefault() 也不会影响到触摸事件,这两者可以结合来使用。...- pointer-events MDN - CSS - touch-action 以上就是文章全部内容,希望你有所帮助!

3.2K30
  • touch-action导致安卓页面无法滚动

    使用css touch-action原因 在其官方说明中:是否,以及以何种方式,给定区域,可以由用户通过触摸屏操作(例如,通过平移或缩放内置浏览器功能) 但我最初并不是因为这个来使用,...能搜到方案是两种,一种是通过css方式,一种是通过js方式。...通过调用禁用浏览器处理手势preventDefault(),但也应该使用触摸动作来确保浏览器在调用任何事件侦听器之前知道应用程序意图。...当手势开始时,浏览器将触摸元素及其所有祖先触摸动作值与实现手势触摸动作值(换句话说,第一个包含滚动元素)相交。...联想到这些安卓机型,那么定位到可能是 :代码兼容部分版本过低,这些不支持;代码某部分是ios安卓有区分解释系统有关,版本无关。

    4.2K00

    2018年最全面的前端面试题都在这里了

    注意: 1.尽可能少使用无语义标签divspan; 2.在语义不明显时,既可以使用div或者p时,尽量用p, 因为p在默认情况下有上下间距,兼容特殊终端有利; 3.不要使用纯样式标签,如:b、font...不清楚浮动会发生高度塌陷:浮动元素元素高度自适应(元素不写高度时,子元素写了浮动后,元素会发生高度塌陷) clear清除浮动(添加空div法)在浮动元素下方添加空div,给该元素css样式:...中类 16 JS 如何实现继承 1.使用原型继承(既继承了模板,又继承了原型对象。...事件会先从元素最外层元素一层一层进入到触发元素, 然后在从触发元素一层一层返回到最外层元素, 从最外层一层一层进入阶段叫事件捕获阶段, 从最里层一层一层往外阶段叫事件冒泡, 移动端触摸事件...404 (未找到) 服务器找不到请求网页。 405 (方法禁用禁用请求中指定方法。 406 (不接受) 无法使用请求内容特性响应请求网页。

    7.6K71

    (长文预警) 你还在烦工作中碰到拖拽问题?一个框架jiejue

    Sortablejs 简介 Sortable —是一个JavaScript库,用于在现代浏览器触摸设备上拖放列表进行重新排序。无需jQuery。...特征 支持触摸设备现代浏览器(包括IE9) 可以从一个列表拖动到另一个列表或在同一列表内 支持拖动手柄可选文本(比voidberghtml5sortable更好) 智能自动滚动 高级交换检测 流畅动画...最重要是,Fallback始终会生成该DOM元素副本,附加fallbackClass在选项中定义类。此行为控制此“拖动”元素外观 <!...适用于后备事件本机拖动事件。默认情况下为false,但是Sortable仅在将元素插入Sortable或可以插入Sortable时才停止冒泡事件,但不在特定时间(由于动画等) 。...上可滚动元素边缘附近拖动时(或在启用回退时)自动滚动,并且还增强了大多数浏览器本机拖放自动滚动。

    7.1K10

    利用 Canvas 实现 Valine 评论画板涂鸦

    评论涂鸦 前几天在 Joe(https://ae.js.cn/)网站上留言时候发现了一个叫“画图模式”东西,点进去后自动切换文本框到画板了(类似QQ涂鸦,你画我猜那种画板),然后可以在画板上画画,...粗细),最后绑定完成画板功能事件(撤销、重做、擦除、清除) Valine 通过创建 canvas 画板加入到 valine 评论中,需要先定位到 valine.js ...color.value = lineColor; //取色框颜色 number.value = lineBold; //输入框粗细值 }; //判断 canvas 元素是否存在...,是则获取元素高宽写入 canvas,否则获取默认 canvas 高宽 if(vedit !...= null){ var cpb = document.getElementsByClassName('canvas_paint_board')[0], //画板元素

    10510

    移动开发实用

    1/2,例如视觉稿40px字体,使用样式写法为20px .css{font-size:20px} 参考《高清显示屏原理及设计方案》 ios系统中元素触摸时产生半透明灰色遮罩怎么去掉 ios用户点击一个链接...ios可以,android不行~ IE10(winphone8)表单元素默认外观如何重置 禁用 select 默认下拉箭头 ::-ms-expand 适用于表单选择控件下拉箭头修改,有多个属性值,...important;} 最好解决方案: 整个页面用rem或者百分比布局 消除transition闪屏 网络都是这么写,但我并没有测试出来 .css{ /*设置内嵌元素在 3D 空间如何呈现:...transformopacity来设计CSS3动画,不使用positionlefttop来定位 利用translate3D开启GPU加速 参考《High Performance Animations...:fixed问题》 如何阻止windows Phone默认触摸事件 winphone下默认触摸事件事件使用e.preventDefault是无效 目前解决方法是使用样式来禁用 html{-ms-touch-action

    6.5K30

    前端成神之路-WebAPIs07

    然后用盒子原来位置 + 手指移动距离 手指移动距离: 手指滑动中位置 减去 手指刚开始触摸位置 拖动元素三步曲: (1) 触摸元素 touchstart: 获取手指初始坐标,同时获得盒子原来位置...1.2.3 classList 属性 classList属性是HTML5新增一个属性,返回元素类名。但是ie10以上版本支持。 该属性用于在元素中添加,移除及切换 CSS 类。...浏览器禁用默认双击缩放行为并且去掉300ms 点击延迟。...插件使用总结 1.确认插件实现功能 2.去官网查看使用说明 3.下载插件 4.打开demo实例文件,查看需要引入相关文件,并且引入 5.复制demo实例文件中结构html,样式css以及js代码...这个时候我们可以使用插件方式来制作。 我们可以通过 JS 修改元素大小、颜色、位置等样式。 1.6. 移动端常用开发框架 1.6.1.

    3.6K10

    H5 项目实用

    //1.禁用select默认箭头,::-ms-expand修改表单控件下拉箭头,设置隐藏使用背景图片来修饰 select::-ms-expand { display:none; } //2.禁用radio...]::-ms-check { display:none; } //3.禁用pc端表单输入框默认清除按钮,::-ms-clear修改清除按钮,设置隐藏使用背景图片来修饰 input[type=text.../*说明:winphone下默认触摸事件事件使用e.preventDefault是无效,可通过样式来禁用,如:*/ html { -ms-touch-action:none; } //禁止winphone...默认触摸事件 // 阻止windows Phone默认触摸事件 /*说明:winphone下默认触摸事件事件使用e.preventDefault是无效,可通过样式来禁用,如:*/ html {...//2.禁止使用gif图片实现loading效果(降低CPU消耗,提升渲染性能) //使用CSS3代码代替JS动画; //开启GPU加速; //使用base64位编码图片(不小图而言,大图不建议使用)

    5.2K11

    移动端事件穿透原理与解决方案

    目前市面上主流移动设备一般都使用触摸屏,触摸屏所使用触摸事件模型与传统网页鼠标事件模型有所区别,这种差异往往使初涉移动端开发工程师陷入困境,事件穿透问题便是其中一个,本文将带你了解事件穿透及如何在实际项目中选择合适方案解决事件穿透问题...在很多情况下,触摸事件鼠标事件会同时被触发(目的是让没有触摸设备优化代码仍然可以在触摸设备上正常工作)。...touchstart 触摸事件并立即隐藏掉自身,之后应该按先后顺序触发 mask 元素 touchend click 事件。...使用 pointer-events 禁用 a 标签所有后代元素鼠标事件: a[href] * { pointer-events: none; } 禁用 touch 事件 这种方法是将页面内所有元素...解决点击事件延迟问题可以使用以下 CSS 代码实现: html { touch-action: manipulation; } 这样已经很完美了。然而,什么是工作?工作就是不停解决问题。

    1.4K20

    第135天:移动端开发经验总结

    二 、Box-sizing在移动端使用   在百分比定宽页面经常使用。...targetTouches 目标元素所有当前触摸 changedTouches 页面上最新更改所有触摸 touches 页面上所有触摸 clientX、clientY 相对于当前屏幕X或Y位置...那么,前端应对方案是:   设计稿切出来图片长宽保证为偶数,使用backgroud-size把图片缩小为原来1/2   //例如图片宽高为:200px*200px,那么写法如下 .css{width...:100px;height:100px;background-size:100px 100px;}   其它元素取值为原来1/2,例如视觉稿40px字体,使用样式写法为20px  .css{font-size...{-webkit-tap-highlight-color: rgba(0,0,0,0;)} 6、 webkit表单元素默认外观怎么重置 .css{-webkit-appearance:none;} 7

    1.6K30

    探究 css touch-action 属性

    See 这样bug 然后找了一通发现可以用 *{touch-action:none}这个方法 用法是禁用元素(及其不可滚动后代)上所有手势,以使用自己提供拖放缩放行为(如地图或游戏表面...使用 Touch_events 应用程序通过调用 preventDefault() 禁用浏览器处理手势,但也应使用触摸操作确保浏览器在调用任何事件侦听器之前,了解应用程序意图。...当手势开始时,浏览器与触摸元素及其所有祖先触摸动作值相交直到一个实现手势(换句话说,第一个包含滚动元素触摸动作值。...任何其它被auto值支持行为不被支持。启用平移缩小缩放手势,但禁用其他非标准手势,例如双击以进行缩放。 禁用双击可缩放功能可减少浏览器在用户点击屏幕时延迟生成点击事件需要。...示例 最常见用法是禁用元素(及其不可滚动后代)上所有手势,以使用自己提供拖放缩放行为(如地图或游戏表面) #map { touch-action: none; } 另一种常见模式是使用指针事件处理水平平移图像轮播

    1.8K10

    移动端点击事件延迟诞生消亡史

    快速反馈对于任何 UI 实现都是至关重要。研究表明,100ms 是界面让用户感到即时最大延迟。尽管如此,移动网络仍然受到一个巨大反馈问题困扰:触摸任何元素后,延迟 300 毫秒。...这项技术另一个关键在于,它仅消除了双击缩放功能,用户依然可以使用双指缩放功能。因此,不存在与禁用缩放相关可用性可访问性问题。...指针事件 指针事件是 Microsoft 提出一系列针对 Web 新事件,现已成为 W3C 规范。指针事件规范是尝试使用单个事件模型统一我们所有输入类型(鼠标,触摸,手写笔等)处理。...根据规范,CSS 属性 touch-action 用于设置触摸屏用户如何操纵元素区域(例如,浏览器内置缩放功能)。...启用平移双指缩放手势,但禁用其他非标准手势,例如双击缩放。 禁用双击缩放功能可减少浏览器在用户点击屏幕时延迟生成点击事件需要。

    2.9K20

    「JavaScript 」动画基础 - 03

    可以实现拖动元素 但是拖动元素需要当前手指坐标值 我们可以使用 targetTouches[0] 里面的pageX pageY 移动端拖动原理: 手指移动中,计算出手指移动距离。...该属性用于在元素中添加,移除及切换 CSS 类。...解决方案: 1、禁用缩放。 浏览器禁用默认双击缩放行为并且去掉300ms 点击延迟。...插件使用总结 1.确认插件实现功能 2.去官网查看使用说明 3.下载插件 4.打开demo实例文件,查看需要引入相关文件,并且引入 5.复制demo实例文件中结构html,样式css以及js代码...这个时候我们可以使用插件方式来制作。 我们可以通过 JS 修改元素大小、颜色、位置等样式。 1.6. 移动端常用开发框架 1.6.1.

    1.2K20

    移动端touch事件处理

    ,touches这三种属性之前,先TouchList对象进行一个简单了解。...,很明显,就是当每一个事件被触发时,就会获取此时每个触点相关信息,保存到touches对象中去。...这种效果肯定不是我们需要,而且我们无法确定合适会在上方出现一个支持 touch 弹出层,所以我认为最好处理方式是禁用所有元素 click 事件,相比 click 需要长达 1s 触发时间,使用...使用原生滚动事件Android 4.0 以下是不支持原生 webview 滚动,所以只能使用 iscroll 之类工具来模拟元素滚动。...启用原生滚动只需要给外层元素加上样式 -webkit-overflow-scrolling: touch; 即可,如果你监听函数比较占用资源我们可以通过一个简单 buffer 函数来限制它触发间隔

    1.7K20

    移动端click事件300ms延迟

    指针事件是一个新 web 事件系列,相应规范旨在使用一个单独事件模型,所有输入类型,包括鼠标 (mouse)、触摸 (touch)、触控 (stylus) 等,进行统一处理。...例如,你可以只去监听一个元素 pointerdown事件,无需分别监听其 touchstartmousedown事件。...其中有一个点击延迟直接相关实现 —— 一个名为 touch-actionCSS 属性。根据规范,touch-action 属性决定 “是否触摸操作会触发用户代理默认行为。...由于浏览器会忽略不被支持 CSS 属性,唯一能够检测开发者是否声明了 touch-action: none方法是使用 JavaScript 去请求解析所有的样式表。...唯一缺点可能也就是该脚本文件尺寸 (尽管它只有 10kb)。 对比总结 禁用缩放:简单,但同时也使网页无法缩放,不适用于未移动端浏览做适配优化网页。

    2.8K21

    手机端页面在项目中遇到一些问题及解决办法

    所以要想用 JS 模拟点击 A 标签事件,就得先往 A 标签中文字添加能被 JS 捕获元素,然后再用 JS 模拟点击该元素即可。但是我觉得不合理,虽然找不到原因但是解决办法还是有的。...(1) 规范中有规定:如果元素 transform 值不为 none,则该元素会生成包含块层叠上下文。CSS Transforms Module Level 1 不只在手机上,电脑上也一样。...-- IOS中禁用将数字识别为电话号码/忽略Android平台中邮箱地址识别 --> 其他meta标签 <!...二、winphone 下,使用元素改变表单元素默认外观 //1.禁用 select 默认箭头,::-ms-expand 修改表单控件下拉箭头,设置隐藏使用背景图片来修饰 select::-ms-expand...{display:none;} //2.禁用 radio checkbox 默认样式,::-ms-check 修改表单复选框或单选框默认图标,设置隐藏使用背景图片来修饰 input[type=

    3.5K30

    手势魅力-设置一个触摸菜单

    -- layout 结束 --> 由于css有点多,这里就不贴代码了,本文着重在于l理解js,但这并不代表css就不重要,只是这里权重没那么大,相信对于css还是较为容易看懂,如果你想获得该Demo...源码,复制该标题后台回复[手势魅力-设置一个触摸菜单]就可以了,我js,css代码也做了一些简要注释,其实看到命名,j在结合文章内容,就应该很容易理解各个变量是什么意思了 所有你需要了解JavaScript...在这种情况下在那里是: touchstart:当你触摸DOM元素时触发 touchmove:当你沿着DOM元素拖动手指时触发 touchend:当你从DOM元素中移除手指时触发 在这些事件中,我将使用触摸属性...,点击移动,相应地做不同事情。...为了可读性,在函数中没有太多代码行,我把它们全部分成了小一行 这个手机触摸手势最后有趣一部分 现在我触摸事件,变量函数解释已经不存在了,现在是我关注如何创建动画时候了。

    1.8K40
    领券