标签: pointer-events

CSS中有`pointer-events:hoverOnly`或类似内容?

刚刚pointer-events在CSS中玩过属性.

我有一个div我希望对所有鼠标事件都不可见,除了:hover.

所以所有点击命令都会通过div它下面的命令,但是div可以报告鼠标是否在它上面.

任何人都可以告诉我是否可以这样做?

HTML:

<div class="layer" style="z-index:20; pointer-events:none;">Top layer</div>
<div class="layer" style="z-index:10;">Bottom layer</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.layer {
    position:absolute;
    top:0px;
    left:0px;
    height:400px;
    width:400px;
}
Run Code Online (Sandbox Code Playgroud)

html css pointer-events

78
推荐指数
4
解决办法
4万
查看次数

Modal上没有指针事件

有没有一种方法来设置pointerEventsnone一个Modal?我试图在父母范围之外渲染一个子视图,我能做到这一点的唯一方法是使用一个Modal.忽视pointerEvents孩子似乎不起作用.

<View>
  <View style={{flex: 1, backgroundColor: 'red'}}></View>
  <Modal
    animationType='fade'
    transparent={true}
    visible={true}
    pointerEvents='none'>
    <View style={{flex:1, alignItems: 'center', justifyContent: 'center'}} pointerEvents='none'>
    </View>
  </Modal>
</View>
Run Code Online (Sandbox Code Playgroud)

pointer-events react-native

16
推荐指数
1
解决办法
799
查看次数

CSS指针事件 - 接受拖动,拒绝单击

tldr; 我需要一个元素来注册拖放指针事件,但是将click和其他指针事件传递给它后面的元素.

我正在构建一个拖放照片上传功能react-dropzone.我希望它dropzone在整个页面上,所以如果你将文件拖到页面的任何部分,你可以删除它来上传图像.在dropzone当没有文件拖到它是透明的,所以我需要点击它后面的元素来注册.

为了实现这一点,我给了dropzone组件以下样式:

position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
pointer-events: none;
Run Code Online (Sandbox Code Playgroud)

但是,pointer-events: none;导致dropzone无法识别必要的拖放事件.有没有办法识别这些特定的指针事件,同时将其他人(如点击)传递给后面的元素dropzone

html javascript css drag-and-drop pointer-events

15
推荐指数
1
解决办法
1677
查看次数

在 iOS 15 Safari 上动态设置指针事件是不可靠且不可预测的

在 iOS 15 上的 Safari 中,已应用容器中的链接在稍后设置为动态pointer-events: none;时不会变得可点击。事实上,在某些情况下确实如此,但这是非常不可预测的。例如,当容器是 an并且链接位于元素内部时,它们确实变得可点击。或者当链接有同级时。我知道这听起来很奇怪,但这是事实。我做了一个演示,所以你可以自己尝试一下:https://stackblitz.com/edit/web-platform-mdhjqs?file =index.htmlpointer-eventsallullibutton

我错过了什么吗?这是 iOS 15 上 Safari 独有的错误吗?

css safari pointer-events ios15

14
推荐指数
1
解决办法
1680
查看次数

在悬停时显示下拉菜单,仅使用CSS关闭

有人可以帮我解释为什么当我点击它们时,下拉菜单中的链接无效吗?也许是因为指针事件?我正在尝试在单击链接或单击关闭按钮后关闭下拉菜单.我添加了一些很酷的东西,比如单击链接时隐藏父容器.

有很多选择:

  1. 使用:focus但是当使用焦点时,下一个悬停在下拉列表中不会触发下拉列表.

  2. :active在容器上使用并pointer-events仅指向活动链接,但指针事件是错误的

  3. 使用:target但具有相同的问题:焦点,不会触发第二个胡佛.

body {
    padding: 20px;
}
.container {
    border: 1px solid lime;
    padding: 10px;
    width: 200px;
}
.test1 {
    display: none;
    border: 1px dashed orange;
    background: green;
    padding: 10px;
    pointer-events: none;
}
.container:hover .test1 {
    display: inline-block;
}
.container:hover .test1:active {
    display: none;
}
a {
    pointer-events: auto;
    color: lime;
    font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)
<ul class="container">
	 Drop down menu
	<li class="test1">
	<a class="dropdown" href="#">X Close</a>
	<ul class="content">
		 CLOSE THIS CONTENT …
Run Code Online (Sandbox Code Playgroud)

html css html5 css3 pointer-events

13
推荐指数
1
解决办法
1万
查看次数

`pointermove`事件不适用于触摸.为什么不?

我有这支笔:

https://codepen.io/anon/pen/eyKeqK

如果你在触摸屏设备上尝试(fe访问手机上的笔),你会注意到当你拖动时,白光(小球体)只移动一点点然后停止工作.

移动的逻辑在pointermove事件处理程序中.它使用鼠标在桌面上工作正常,而不是触摸.

我们如何解决这个问题,以便在触摸拖动时光线不断移动(不仅仅是片刻),作为奖励我们如何在拉下时防止它刷新页面?


这是笔的代码:

HTML(Slim):

/! Made with http://github.com/trusktr/infamous

script src="https://cdn.rawgit.com/trusktr/e37dbc24c51b9d3e2f9e508e75cf8f99/raw/2a3fee4ee506a05cc4ac509f592f0c3af1ddfed4/infamous-mixed-mode-3.js"
script src="https://unpkg.com/tween.js@16.6.0/src/Tween.js"

i-scene experimental-webgl="true" id="scene" TODO-perspective="800" backgroundColor="0 0 0" backgroundOpacity="0" style="perspective: 800px" shadowmap-type="pcfsoft"

    i-ambient-light color="#404040" intensity="1"

    i-dom-plane id="bg" sizeMode="proportional proportional" size="1 1 0"

        i-node id="button-container" position="0 0 6" size="600 31 0" align="0.5 0.5 0" mountPoint="0.5 0.5 0"

            - for n in (0..4)
                i-dom-plane sizeMode="literal proportional" size="100 1 0" align="#{n*0.25} 0 0" mountPoint="#{n*0.25} 0 0"
                    button button #{n+1}

        i-point-light id="light" color="white" position="300 300 120" …
Run Code Online (Sandbox Code Playgroud)

html javascript touch dom-events pointer-events

11
推荐指数
1
解决办法
3708
查看次数

在 Chrome Android 上阻止 pointcancel 事件触发而不禁用触摸滚动?

我在可滚动区域中有一堆子 div,如下所示:

<div style='overflow: scroll;'>
    <div id='a' />
    <div id='b' />
    <div id='c' />
    ...
</div>
Run Code Online (Sandbox Code Playgroud)

我监听每个子项上的pointerdown 事件,当事件触发时,我在文档上设置pointermove 处理程序。例如:

const pointerdownHandle = e => {
    e.target.releasePointerCapture(e.pointerId)
    document.addEventListener('pointermove', pointermoveHandle)
    document.addEventListener('pointerup', pointerupHandle)
}

const pointermoveHandle = e => { ... }

const pointerupHandle = {
    document.removeEventListener('pointermove', pointermoveHandle)
    document.removeEventListener('pointerup', pointerupHandle)  
}

document.getElementById('a').addEventListener('pointerdown', pointerdownHandle)
Run Code Online (Sandbox Code Playgroud)

这在桌面和 iOS Safari 上都非常有效。然而在 Android Chrome 上,pointercancel 事件几乎立即触发,从而破坏了一切。

这似乎是预期的行为: “当浏览器确定不可能再有任何指针事件时,将触发pointercancel事件,或者如果在触发pointerdown事件后,然后使用指针通过平移来操作视口,缩放或滚动。”

推荐的解决方案是将 css 属性“touch-action: none”应用于父元素。这有效。但不幸的是,这也会中断滚动,因为现在触摸操作被忽略。

我尝试在pointerdown事件触发后以编程方式应用css属性,但这不起作用。将 PreventDefault / stopPropagation 添加到pointermoveHandle 也不会。

有人能解决这个问题吗?如何在不禁用父元素滚动的情况下阻止 pointcancel 事件触发?

(我意识到我可以依靠触摸事件,但是支持pointerenter和pointerleave的指针事件使用起来更加简单和干净......)

javascript android google-chrome pointer-events

11
推荐指数
1
解决办法
2176
查看次数

10
推荐指数
1
解决办法
1万
查看次数

IE 11指针事件覆盖

我试图覆盖包含div的指针事件属性.到目前为止,除了IE 11之外,它可以工作.据说,指针事件属性被添加到IE 11.出于某种原因,它不会覆盖它.

.divstyle {
    pointer-events: none;
}
.buttonstyle {
    pointer-events: auto;
}

<div class="divstyle">
    <table>
        <tr><td>
            <input type="button" class="buttonstyle" value="test">
        </td></tr>
        <tr><td>
            <!-- A BUNCH OF CONTENT THAT I DON'T WANT TO HAVE POINTER EVENTS -->
        </td></tr>
        <tr><td>
            <!-- AND ON AND ON -->
        </td></tr>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

整个div不允许指针事件,包括按钮.我认为既然div根本没有事件,IE就支持属性指针事件,但是当我明确地设置子事件有事件时,由于某种原因它不会允许它.谢谢您的帮助!

javascript css internet-explorer-11 pointer-events

8
推荐指数
3
解决办法
1万
查看次数

是否存在相当于“单击”事件的指针事件?

“click”事件是一个鼠标事件,在 mousedown 和 mouseup 事件触发后触发。

现在指针事件有更广泛的用例,所以我想知道指针事件是否也有相应的“点击”事件?

谢谢。安迪

html javascript click mouseevent pointer-events

8
推荐指数
1
解决办法
7736
查看次数