2011-06-21 16 views
2

柔軟な/流体レイアウトの要素の背景画像のみでIEに問題があります。バックグラウンドポジションのIE(バグ)パーセンテージ

基本的には、背景画像(1pxで1px)を縦に並べる必要があります。レイアウトが全幅である場合、背景画像は、左から70.56367%676px divide by it's container of 958px)に等しいとき、左から676pxにあります。

このしかしIE年代のいずれかの動作しません Firefoxの、 ChromeとSafariので正常に動作します(6,7および8)。バックグラウンドの位置は、パーセンテージが完全な数であって小数ではない場合にのみ有効です。 70%または71%などに設定すると背景の位置が変わります。ここで

は私が持っているもので、どのようにそれがブラウザに表示されます。

background:url(link/to/image.gif) repeat-y 70.6680584551148% 0;/*676px/958px*/ 

私はまた別のXとYの値(ただし、同じ結果)としてバックグラウンド位置を設定してみました:

background-position-x:70.6680584551148%;/*676px/958px*/ 
background-position-y: 0; 

Firefoxの(v3.6.3):

enter image description here

クロム(12.0.742.100):

enter image description here

サファリ(5.0.2):

enter image description here

のInternet Explorer(6、7、8 - 全て同じ結果):

enter image description here

So 私の質問はです。これはブラウザが全体ではないパーセンテージを計算できないIE問題ですか?あるいは、私は行方不明の修正や何かがありますか?

答えて

3

私が最近作って周りいじるましたemを使用してパーセンテージ幅に基づくスケーラブルなサイトデザイン。私にとっては幸運なことに、プロトタイプ作成だけでした。なぜなら、判明したように、IEは小数点第2位の後に何も無視するからです。 IE8をロードし、F12を押して開発コンソールをプルアップすることで、自分自身で確認できます。パーセンテージであなたのCSSを見つけ、それが何を言うかを見てください。

念のために、私のem測定が代わりに0.70になっているだろう(私のテストで)この70.56367%のこの0.7056367のようにされていると思います。 IEが最も近いパーセンテージポイント(70%)またはパーセントの最も近い百分位(70.56%)に丸めていることは、私にとっては非常に現実的なようです。

+0

残念ながら、これはそうであるようです。 IEは、パーセンテージを最も近い整数に丸めているように見えます。 IEのデベロッパーコンソールでは70.56%と言っていますが、.56%を適用しているようではなく、ちょうど70%を適用しています。 – Dan

+0

@ダン:うん。それを修正する限り、おそらく '70%'を代わりに使うことができます。 '958px'から' 670.6px'になります。各ブラウザが10進数ではなく、半分のピクセルを処理する方法で、より良い運を得られる可能性があります。 –

+0

私はそれが簡単だったと思う - 残念ながら、幅はかなり正確です。しかし、私はサイトを敷設する新しい方法として、http://matthewjamestaylor.com/blog/perfect-multi-column-liquid-layoutsを簡単に見ていきます。ご意見をいただきありがとうございます。誰かがフィードバック/解決策を持っているかどうかを確認するために、私はもう数時間待つ。何も表示されない場合、私はあなたの答えを正しいものとして記入して喜んでくれるでしょう。乾杯=) – Dan

0

私たちは常にもっと多くの仕事をしてくれます。 は多分異なるCSSスタイルを使用すると答え

<!--[if gte IE]> 
<link rel="stylesheet" type="text/css" href="iespecific.css" /> 
<![endif]--> 
+0

既に@Ziaが1つあります。別のスタイルシートは答えではありません。これはブラウザがパーセンテージに基づいて幅をレンダリングすることと関係があります。そして、パーセンテージが全体ではない場合、IEの能力の欠如。 – Dan

+0

ええと、私は参照してください。申し訳ありませんが、私はあなたの質問と異なる理解を持っていた – zia

0

ある背景画像は、コンテナDIVの幅に合わせなければならないので、あなたのコードは次のようになります。

background:url(link/to/image.gif) scroll repeat-y 0 0; 
+0

それは、柔軟な流体のレイアウトです。ブラウザウィンドウが縮小されると、背景画像は、区切りとして動作しているコンテナと同じ幅になるように移動しなければなりません。したがって、背景の画像をコンテナと同じ幅にすることで問題が解決されるわけではありません。なぜなら、ユーザーがブラウザの幅を小さくするとすぐに画像が整列しなくなるからです。 – Dan

関連する問題