CSS position: relative 会导致 DOM 里排在前面位置的元素无法被碰撞测试?

2017-05-28 01:30:20 +08:00
 geelaw

JSFiddle 在 这里

你会发现第一个 div.test > a 是可以点击的,第二个不能( Microsoft Edge ),区别在于第二个 div.test > a 后面的 div.test > div#relative 具有 position: relative,即使设置了相反的 z-order 也不能。

很诡异的现象,有人知道为啥么?标准怎么规定的?


我是在设置我的 blog 的样式表的时候发现的这个问题。我本来是用 ::before 来显示那个“大号的引号”的,然后对 ::before 设置背景,再加上 position 放置位置。这是因为一开始我是成对显示引号的,还会有一个 ::after 用来显示另一个引号。因为 blockquote 具有 position: relative,导致右边 float: right 的链接点不到,于是用户将无法显示全部歌词。

现在不这样做了,我直接用 blockquotebackground 显示那个“大号引号”。

1759 次点击
所在节点    问与答
6 条回复
nlysh007
2017-05-28 08:58:00 +08:00
css 里不应该是 z-index 么
geelaw
2017-05-28 09:20:59 +08:00
@nlysh007 感谢提醒,这里是新的 JSFiddle: https://jsfiddle.net/augkvwb2/

不过这并不影响问题,改成 z-index 仍然是无法点击的状态。
nlysh007
2017-05-28 09:30:30 +08:00
@geelaw
#relative
{
position: relative;
zindex:-1;
}

relative 好像是后来居上的。。。
nlysh007
2017-05-28 09:31:48 +08:00
@nlysh007
写错了
#relative
{
position: relative;
z-index:-1;
}
P233
2017-05-28 09:31:50 +08:00
`div.test > a` 默认 `position: static`,`z-index` 无效,加上 `position: relative` 就可以了
geelaw
2017-05-28 10:24:40 +08:00
@nlysh007 原因是 relative 之后建立了新的 stacking context ……

@P233 谢谢您提供的原因😀😁

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/364372

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX