Safari でこの奇妙なバグに遭遇しましたが、解決策が見つからないので本当に困っています。StackOverflow とインターネットで同様の質問を見てきましたが、私の質問を解決するものはありませんでした。
問題の例はhttp://jsfiddle.net/WQnVu/5/にあります。したがって、基本的には、イメージ (ここでは固定サイズ) と 2 つのコンテナー (1 つは内側、もう 1 つは外側) があります。イメージは、外側のコンテナーに対して絶対的に配置されます。外側のコンテナーの幅に合わせて画像を再配置するには、負のパーセンテージ 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 をターゲットとするハックがある場合は、喜んで使用しますが、私の知る限り、そのようなものはありません。
誰かがこれを解決する方法を考えることができれば素晴らしいでしょう。
敬具、
ヨラン