我的页面如下所示:
<div.ui-page>
<div.ui-content>
<a href="foo.html">
</div>
</div>
在我的页面上,我正在设置一个全屏水印,如下所示:
/* Watermark */
.ui-page:before {
background: url("../img/foo.png") no-repeat center center;
position: absolute;
content: "";
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 100%;
height: 100%;
/* transparency */
opacity: .2;
/* grayscale */
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");
filter: gray;
-webkit-filter: grayscale(100%) brightness(10%) contrast(100%);
}
哪个工作正常。问题是,我的链接不再可点击。
我尝试在:before
伪元素周围移动以及不同程度的 z-index。都行不通。奇怪的是,这似乎只与基本链接有关。包含在其他元素中的任何链接都可以正常工作(我使用的是 jQuery Mobile,所以链接在ul
作品中表示)
问题:
如果父元素或包含链接的元素使用 CSS 伪元素,我如何保持普通链接可点击/可用?
谢谢!
解决方案:
这是我的最终代码。注意,我必须切换到ui-page-active
- 否则它只适用于 jQuery Mobile 中加载的第一页。
.ui-page-active:before {
background: url("../img/foo.png") no-repeat center center;
background-attachment: fixed;
content: "";
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 100%;
height: 100%;
/* transparency */
opacity: .2;
/* grayscale */
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");
filter: gray;
-webkit-filter: grayscale(100%) brightness(10%) contrast(100%);
}
/* disable pointer events on the background... */
.ui-page.ui-page-active:before {
pointer-events: none;
}