z-index为负值的元素无法点击到的解决方法

所属分类: 网页制作 / 应用技巧 阅读数: 516
收藏 0 赞 0 分享
最近做背投广告,因为默认页面没有设置z-index,发现如果将z-index为负值的元素无法点击到,那么解决方案就是将背投广告z-index设置为1,其它元素z-index增加。

假设有这样一个需求:



header和主区域是原来就有的,现在要在页面中加一个背景图,要求该背景图层在主区域之下,但在主区域之外的部分可点击,是一个链接。

我简单思考了下,就知道不能用背景图实现,因为背景图是无法点击的。虽然可以勉强用js监听body点击然后根据点击位置来判断是否是背景图发生了点击,但这未免太笨拙。于是决定在主区域下铺一层,设置z-index:-1.图片设置为bgImg的背景图。代码如下:

<!DOCTYPE html>
<html>
    <head>
    <style>
      .bgImg {position: absolute; z-index: -1; background: url(...) no-repeat center;}
    </style>
    </head>
    <body>
         <header></header>
         <div class="bgImg"></div>
         <div class="main"><div>
    </body>
</html>

但是事实证明这样设置后, bgImg无法被点击到,hover时也不会显示手形,因为z-index为负值的元素将被放置在body层之下,所以点击和hover事件都被body层覆盖了。

解决方案:

1. z-index设为0. 主区域设为position:relative; z-index: 1;这样能保证背景层不会影响主区域,并且在主区域外的部分也可以点击。



2.结构与1一样,只是实现方式不同。不使用position,而是使用负margin-bottom实现:

背景层 {height: 500px; margin-bottom: -500px;}

主区域不用做任何改动.

原理是负的margin-bottom会将下方的元素拉上来,背景层的高度= height + padding-top + padding-bottom + border-top-width + border-bottom-width + margin-top+ margin-bottom = 0. (没设置的属性在reset.css中一律被重置为0了).所以背景层不会占据文档流的空间, 同时还可以被点击到.
更多精彩内容其他人还在看

关于培养色感,自己的一些方法

关于培养色感,自己的一些方法
收藏 0 赞 0 分享

SSI技术—SHTML的解释(生成静态时用的最火)

SSI技术—SHTML的解释(生成静态时用的最火)
收藏 0 赞 0 分享

标签(Tag)的定义和作用精解

标签(Tag)的定义和作用精解
收藏 0 赞 0 分享

网页中防止表格被撑破的css代码

网页中防止表格被撑破的css代码
收藏 0 赞 0 分享

SSH 使用原理 与解释

SSH 使用原理 与解释
收藏 0 赞 0 分享

UTF-8编码问题BOM详细介绍

UTF-8编码问题BOM详细介绍
收藏 0 赞 0 分享

photoworks下载及象框使用教程[图文]

photoworks下载及象框使用教程[图文]
收藏 0 赞 0 分享

比较详细的一篇关于autorun.inf的讲解

比较详细的一篇关于autorun.inf的讲解
收藏 0 赞 0 分享

缩放文字,不仅仅只是缩放文字

缩放文字,不仅仅只是缩放文字
收藏 0 赞 0 分享

验证可通过正版验证的Office2007最新的两个序列号

验证可通过正版验证的Office2007最新的两个序列号
收藏 0 赞 0 分享
查看更多