【发布时间】:2020-09-17 14:59:20
【问题描述】:
我在 Safari 中遇到了这个奇怪的错误,这真的很烦人,因为我找不到解决方案。我在 StackOverflow 和互联网上查看过类似的问题,但没有一个能解决我的问题。
有问题的示例位于http://jsfiddle.net/WQnVu/5/。所以基本上我有一个图像(这里它是一个固定大小的)和两个容器:一个内部和一个外部。图像相对于外部容器绝对定位。要相对于外部容器的宽度重新定位图像,然后我执行负百分比 margin-top。代码如下。
<div class="outer">
<div class="inner">
<div class="image"></div>
</div>
</div>
.outer {
height: 510px;
width: 1024px;
background-color: red;
position: relative;
}
.inner {
height: 100%;
width: 100%;
background-color: blue;
}
.image {
width: 550px;
height: 380px;
position: absolute;
top: 65%;
right: 0;
margin-top: -26%;
background-color: green;
}
边距百分比应该是相对于图像的包含块的宽度(在本例中为内部容器)。 Firefox 和 Chrome 确实是这种情况。然而,在 Safari 中,它计算的边距是相对于块本身的高度,因此相对于图像的高度!
我不知道如何解决这个问题。我真的需要保证金百分比,因为该网站是响应式的。容器的宽度会相应变化,但高度保持不变。这就是为什么我需要一些与容器宽度相关的东西。如果有专门针对 Safari 的黑客攻击,我很乐意使用它,但据我所知,没有这样的东西。
如果有人能想办法解决这个问题,那就太好了。
亲切的问候,
约兰
【问题讨论】:
-
您说宽度经常变化,但您将它们设置为 px。他们是如何变化的?这只是说明问题的一个例子吗?
-
看起来 safari 不喜欢将
%用于margin-top之类的东西,您可以使用一些 jquery 在px中解决它,这样它就可以使用 @ 放置在您想要的位置987654326@ -
这只是一个例子,实际上外容器的宽度确实是一个百分比。有没有办法在 Javascript 中只针对 Safari?
-
是的,有!请参阅下面的答案。
标签: css cross-browser safari