首页
学习
活动
专区
工具
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
  • 【愚公系列】《AIGC辅助软件开发》031-AI辅助解决各种疑难杂症:警惕小众场景下的误导性回答

    本文将探讨AI在小众场景下可能出现的误导性回答的原因与表现,并分享如何利用AI工具和技术提高回答的准确性和可靠性。我们将结合实例分析,帮助读者识别潜在的风险,提升对AI输出内容的判断力。...作为前端工程师,我在这里举两个前端兼容性问题,演示我如何在面对误导性问题时找到真正的解决思路。 1.特定版本的渲染引擎下的纹理坐标范围 我在业务中使用 Pixi JS 4.x 版本的渲染引擎。...由于业务效果的需求,我需要使用 shade 实现一个特殊效果,并对纹理坐标进行一定的转换计算。在这个过程中,我发现入参的纹理坐标值和计算出的效果总是对不上。...这是因为浏览器并没有完全禁用滚动,尤其是在具有触摸屏幕的设备上。...并在必要时通过 JavaScript 禁用触摸滚动事件。

    11300

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

    注意: 1.尽可能少的使用无语义的标签div和span; 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) 可以从一个列表拖动到另一个列表或在同一列表内 支持拖动手柄和可选文本(比voidberg的html5sortable更好) 智能自动滚动 高级交换检测 流畅的动画...最重要的是,Fallback始终会生成该DOM元素的副本,并附加fallbackClass在选项中定义的类。此行为控制此“拖动”元素的外观 和本机拖动事件。默认情况下为false,但是Sortable仅在将元素插入父Sortable或可以插入父Sortable时才停止冒泡事件,但不在特定时间(由于动画等) 。...上可滚动元素的边缘附近拖动时(或在启用回退时)自动滚动,并且还增强了大多数浏览器的本机拖放自动滚动。

    7.1K10

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

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

    4.2K00

    利用 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], //画板父元素

    12410

    移动开发实用

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

    6.5K30

    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.3K11

    前端成神之路-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

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

    目前市面上主流的移动设备一般都使用触摸屏,触摸屏所使用的触摸事件模型与传统网页的鼠标事件模型有所区别,这种差异往往使初涉移动端的开发工程师陷入困境,事件穿透问题便是其中一个,本文将带你了解事件穿透及如何在实际项目中选择合适的方案解决事件穿透问题...在很多情况下,触摸事件和鼠标事件会同时被触发(目的是让没有对触摸设备优化的代码仍然可以在触摸设备上正常工作)。...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事件,无需分别监听其 touchstart和mousedown事件。...其中有一个和点击延迟直接相关的实现 —— 一个名为 touch-action的新 CSS 属性。根据规范,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标签 使用伪元素改变表单元素默认外观 //1.禁用 select 默认箭头,::-ms-expand 修改表单控件下拉箭头,设置隐藏并使用背景图片来修饰 select::-ms-expand...{display:none;} //2.禁用 radio 和 checkbox 默认样式,::-ms-check 修改表单复选框或单选框默认图标,设置隐藏并使用背景图片来修饰 input[type=

    3.5K30
    领券