代码之家  ›  专栏  ›  技术社区  ›  Justin Rudd

覆盖在IE 7中,以防止与后台控件发生冲突

  •  3
  • Justin Rudd  · 技术社区  · 17 年前

    我没有什么特别的问题,但就我的一生而言,我不知道我做错了什么。

    我有一个包含一系列部分的页面。部分章节是一个小图片。单击图像时,我想显示一个自定义控件。如果显示控件很简单,请将z索引设置得更高一点,以确保控件位于所有内容之上。

    但是用户仍然可以与控件后面的部分进行交互。

    为了阻止这种情况,我加了一条“毯子”。基本上是一个div,它是具有以下CSS的文档大小(在jQuery语法中)-

    {
      position: 'absolute',
      top: 0,
      left: 0,
      width: '100%',
      height: $(document).height(),
      display: 'none',
      zIndex: 1,
      backgroundColor: '#FF0000'
    };
    

    是的…背景是红色的,所以我可以看到它进行测试。我将不透明度设置为0.1(灯光模糊)。然后,我将自定义控件的z索引设置为2,以便它位于毛毯的顶部。

    这在FireFox、Chrome和Safari中非常有效,但在IE中却不行。

    自定义控件不是毯子的子控件。

    我们的目标是让下面的文档被毯子覆盖,并在毯子的顶部设置控件以与之交互。这是我在除IE之外的所有浏览器上都能看到的。在IE上,它是带控制的文档,两者都被覆盖在毯子里。

    scunliffe 是最接近的(在我无法链接的评论中回答)。自定义控件位于一个相对定位的div中(实际上有几个向下)。毯子只是简单地贴在尸体的末端。因此,它位于相对定位的div之外,并启动了自己的z索引堆栈(如文档所示) here ).由于IE 6/7在这方面已被破坏,因此无论我将z指数设置为什么,它都将始终低于毛毯。

    因此,我将毯子移动到相对定位的div中的第一个孩子。这还不是100%完成的,因为如果滚动(我不能用这个解决方案停止),毯子div只是可见内容的高度。我现在必须弄清楚如何获得内容的完整高度(可见和不可见)。

    6 回复  |  直到 9 年前
        1
  •  1
  •   Mike    17 年前

    养成包含更高z指数的习惯。使用以下命令:

    z-index:20000;
    

    当然,在自定义控件上增加z索引。高z指数解决了我类似的问题。

        2
  •  1
  •   Vilx-    17 年前

    我在这方面也遇到了麻烦。我发现创建不可穿透屏蔽的唯一方法是在DIV的背景中放一张图片(一张透明的GIF适合我)。然后,您仍然必须拦截键盘事件以阻止导航到控件。

        3
  •  1
  •   Community Mohan Dere    9 年前

    scunliffe 是最接近的(在我无法链接的评论中回答)。自定义控件位于一个相对定位的div中(实际上有几个向下)。毯子只是简单地贴在尸体的末端。因此,它位于相对定位的div之外,并启动了自己的z索引堆栈(如文档所示) here ).由于IE 6/7在这方面已被破坏,因此无论我将z指数设置为什么,它都将始终低于毛毯。

    因此,我将毯子移动到相对定位的div中的第一个孩子。这还不是100%完成的,因为如果滚动(我不能用这个解决方案停止),毯子div只是可见内容的高度。我现在必须弄清楚如何获得内容的完整高度(可见和不可见)。

        4
  •  0
  •   Jason Jackson    17 年前

    以下是我们如何在项目中利用Opportity:

    .SomeStyle
    {
    filter:alpha(opacity=10);
    -moz-opacity:.10;
    opacity:.10;
    }
    

    在IE6&7及FF 2&3.我相信它也适用于狩猎。

        5
  •  0
  •   redsquare    17 年前

    您需要一个iframe垫片,以防止其通过覆盖层显示。很多脚本将为您执行此操作。

    more info

    and here

        6
  •  0
  •   beardog    17 年前

    我不久前刚刚实现了这一点,我使用了:

    div#shade-box {
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0;
        left: 0;
        background: #000;
        opacity: 0.7;
        filter: Alpha(opacity=70);
    }
    

    显然,您可以更改或删除背景色。我通过Javascript将这个div添加到DOM中,所以我不需要担心z索引。

    已知在FF和IE7中工作。