【问题标题】:Image being drawn under a button despite z-index and position relative尽管 z-index 和相对位置,图像仍被绘制在按钮下
【发布时间】:2014-12-11 10:22:45
【问题描述】:

我正在使用 html 和 jquery 将 img 定位到另一个容器中。 现在我遇到了与此类似的问题: set Z index not working. button behind a container (HTML - CSS)

唯一的问题是:那里提到的解决方案不起作用。我的图像仍然显示在按钮下方(这是一个提交类型的输入字段和一个重置类型的字段)。

图像本身的 z-index 为 2400,而两个按钮(以及按钮的父级)的位置:relative 和 z-index 为 1。

现在我的问题是那里还有哪些可用的选项?

根据要求提供附加信息(图片均为 20 x 20 像素)

var x = (pictureToWhichToPlace.left + 20).toString() + "px";
var y = (pictureToWhichToPlace.top + 20).toString() + "px";

$(document).find(".myInsertImageContainer").first().appendTo($(document).find(".subimg").first().parent());
$(document).find(".myInsertImageContainer").first().css({
    'top': y, 'left': x,  'width': 24, 'height': 24, 'z-index': 2300, 'position': 'absolute'
});

    $(document).find(".subimg").first().parent().css({ 
        'z-index': 2200, 'position': 'relative'
    });

我插入的位置是一个 div,里面有多个图像:

<div>
    <img class = "subimg" />
    <img class = "subimg" />
    <img class = "subimg" />
</div>

<div style="z-index: 1; position: relative">
    <input type="submit"> value="mysubmit" />
</div>

<div class="myInsertImageContainer">
    <img class = "myInsertImage" style="z-index: 2500; width:20;height:20 "/>
</div>

正如评论中提到的,整个页面是 nintex 表单的一部分,因此我将以上内容放在一起以尽可能接近原始情况,而不发布 10 页文本。

【问题讨论】:

  • 你能展示一些你的css吗?但总的来说,为了产生这种效果,我会让元素的父容器具有位置:'relative',并且所有子元素都具有位置:'absolute'。但是,没有一些代码,我可以知道是否是这种情况。
  • 我们很难在没有看到代码的情况下调试这个并帮助您。我猜这仍然是 z-index 问题,很可能是堆叠上下文/堆叠顺序问题。看看这篇文章:philipwalton.com/articles/what-no-one-told-you-about-z-index
  • 代码显示为共享点页面/ nintext 形式有点复杂(因此有相当多的 css,... 代码)。但其他:我将 img 移动到的容器没有明确说明的位置。图像本身具有绝对位置(我手动确定)。我测试的按钮和按钮的容器在两者中都具有相对位置
  • 一个绝对定位的元素将在其最近定位的(除了静态的)父容器的堆叠上下文中
  • 您是否尝试过在展位按钮和图像中使用绝对位置?正如 lee_gladding 所说,具有绝对位置的元素将相对于最近的父级而不是静态定位。如果您将父级设置为相对位置,那就是您需要的情况。混合子元素的相对位置和绝对位置似乎不是解决方案。

标签: jquery html css


【解决方案1】:

我真的不知道这是否是您要查找的内容,但是,如 cmets 中所述,您需要将所有元素的父级设置为 position:relative。 按钮和图像应具有属性 position:absolute,因此它们将相对于父 div 定位。 这样,z-index 就会起作用。

在下面的示例中,按钮位于图像下方。如果你将他的 z-index 设置为 3,它将被放置在图像上方。

#container{
    position: relative;
}
.buttons{
    position: absolute;
    z-index:1;
}
.myInsertImage{
    position: absolute;
    z-index:2;
}
<div id="container">
    <div>
        <img class = "subimg" />
        <img class = "subimg" />
        <img class = "subimg" />
    </div>
    
    <div class="buttons" >
        <input type="submit" value="mysubmit" />
    </div>
    
    <div class="myInsertImageContainer">
        <img src="http://4.bp.blogspot.com/-2exPcbRhYtA/UQNlZELLW8I/AAAAAAAAW80/xE4EeqWUyts/s1600/js.png" width="100px" height="100px" class = "myInsertImage" />
    </div>
</div>

如果这不是您要找的,请告诉我,我可以通过其他方式提供帮助。

【讨论】:

  • 好吧,这很有趣。你的例子就像我想要的那样工作,让我觉得我的问题只是因为我有 div in div in div 但这也有效。 jsfiddle.net/0rv3v0gw 所以我认为我的问题来自共享点页面 setup/css/whatever 因此来自我没有的东西(也不能感谢该代码是 10 页长生成的 nintex 公式代码)在这里发布。该代码中的解决方案是将最外围的父级(parent1)的 z-index 设置为高于 parent2s 的值,以便它以某种方式作为 z-index g
  • 当涉及到父级的层次结构 lvl(在包含的 div 内,z-index 正常工作)时,“重置”(仅在系统考虑到它的情况下)。当您的问题回答了我在问题中提出的内容时,我会将其标记为已接受的答案(它也让我了解了在 nintex 生成的表单代码中查看的内容)。 tnx.
猜你喜欢
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多