为什么这个 css z-index 在我的 XUL 应用程序中不起作用?

发布于 2024-09-26 17:36:25 字数 815 浏览 6 评论 0原文

我有这个 Xul 文件:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://greenfox/content/mycss.css" type="text/css"?>

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    <image class="Front" src="images/loading.gif"/>
    <image class="Back" src="images/plasma.jpg"/>

</window>

使用这个 CSS (更新)

.Back {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:0;
}

.Front {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:1;
}

并且由于某种原因,图像垂直地一个在另一个之上,而不是在我的 CSS 指定的 z-index 中。知道如何修复它吗?

解决方法

暂时,我使用一个没有背景和边框的新窗口,并且“正在加载”位于中心。

I have this Xul file:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://greenfox/content/mycss.css" type="text/css"?>

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    <image class="Front" src="images/loading.gif"/>
    <image class="Back" src="images/plasma.jpg"/>

</window>

with this CSS (updated):

.Back {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:0;
}

.Front {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:1;
}

and, for some reason, the images are vertically one above another, not in z-index as specified by my CSS. Any idea how to fix it?

workaround

For while, I'm using a new window with no background and no borders, and the "loading" in the center.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

池木 2024-10-03 17:36:25

编辑:明白了:D,没有丑陋的边距黑客

<bulletinboard>
    <image src="images/loading.gif" style="top:0px; left:0px; z-index:1"/>
    <image src="images/plasma.jpg" style="top:0px; left:0px; z-index:0"/>
</bulletinboard>

——下面的旧解决方案

——这似乎有效:

.Front {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:1;
    width: 200px;
    height: 200px;
    margin-bottom: -200px;
}

.Back {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:0;
    width: 200px;
    height: 200px;
}

edit: got it :D without ugly margin hacks

<bulletinboard>
    <image src="images/loading.gif" style="top:0px; left:0px; z-index:1"/>
    <image src="images/plasma.jpg" style="top:0px; left:0px; z-index:0"/>
</bulletinboard>

--old solution below--

this seems to work:

.Front {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:1;
    width: 200px;
    height: 200px;
    margin-bottom: -200px;
}

.Back {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:0;
    width: 200px;
    height: 200px;
}
陌路终见情 2024-10-03 17:36:25

这些元素仍然相对于彼此定位,您需要绝对定位

.Back {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:0;
}

.Front {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:1;
}

The elements are still positioned relatively to one another you need to position absoutely

.Back {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:0;
}

.Front {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:1;
}
来日方长 2024-10-03 17:36:25

通常,对于CSS绝对定位,元素的容器也必须有一个不设置为静态的位置;我认为 xul 没有什么不同,所以我建议将窗口元素设计为具有相对位置。

usually, for css absolute positioning, an element's container also has to have a position not set to static; i'd assume xul is no different, so i suggest styling the window element to have a relative position.

云仙小弟 2024-10-03 17:36:25

布局引擎的某些实现仅处理 z-index 的严格正值。

只需尝试将每个值增加 1。

.Back {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:1;
}

.Front {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:2;
}

另一个尝试应该是将窗口元素设置为position:relative(这是另一个 CSS 陷阱,因为一个元素应该相对于相对元素绝对定位。我知道这很令人困惑,但值得快速了解一下)尝试)。

编辑:

window {
position: relative;
}

.Back {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:1;
}

.Front {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:2;
}

Some implementations of layout engines just deal with strict positive values for z-index.

Just try incrementing each value by 1.

.Back {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:1;
}

.Front {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:2;
}

Another try should be setting your window element to position:relative (this is another CSS gotcha, because one element should be absolutely positioned relatively to a relative element. I know it is confusing, but worth a quick try).

EDIT:

window {
position: relative;
}

.Back {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:1;
}

.Front {
    position: absolute;
    left: 0px;
    top:0px;
    z-index:2;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文