css
  • firefox
  • 2011-07-26 2 views 8 likes 
    8

    IEとWebKitのブラウザでは、 "display:inline-block"(またはIE7の場合、 "hasLayout"が設定された単純な "inline"要素)に適用されたときの "position:absolute"インラインに配置される。それはで、次のとおりです。"display:inline-block"と "position:absolute"を組み合わせるとどうなりますか?

    Hello there <label style='position: absolute; display: inline-block'>sir</label> 
    

    これらのブラウザが表示されます:

    Hello theresir 
    

    または

    Hello there sir 
    

    をしかし、Firefoxの(3とアップ、私は思うが)、この与える:

    Hello there 
    sir 
    

    つまり、「インラインブロック」eを作成します新しい行の開始。さて、それは明らかに "インラインブロック"がでなく、は "position:absolute"と組み合わされず、また "position:absolute"は "display:inline-block"なしではありません。これはバグか、悪い(あいまいな)仕様ですか?

    Hereは非常に単純です。

    +2

    'position:absolute'は' display:block'を強制します。 2番の[ここ](http://www.w3.org/TR/CSS21/visuren.html#dis-pos-flo)を参照してください。私はここに何が起こっているのか分かりません。 – thirtydot

    +0

    うーん... Firefoxは正しいと誰もが間違っていることを示唆しています... – Pointy

    +0

    OperaはFirefoxと同じように動作するので、私はあなたに同意するつもりです。 WebKitのバグとIEのバグ? – thirtydot

    答えて

    4

    ここで右の挙動が実際の仕様で定義されていません。

    (なし「表示」設定... 編集 —多分ことFirefoxは「絶対位置」と何です)。垂直位置は、「位置が絶対的でないように、並べ替え」でなければなりません。より正確には、http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-heightのこの部分が関連している:

    しかし、ではなく、実際にその 仮定ボックスの大きさを計算し、ユーザーエージェントは、その可能性 位置で推測を行うことは自由です。

    これは、Geckoのインラインブロック実装よりも前に実装されているGeckoコードでは、元の表示が「インライン」であるかどうかを確認するだけです。私はhttps://bugzilla.mozilla.org/show_bug.cgi?id=674435を提出してGeckoでこれを変更しました。

    +0

    あなたは実際に物事を知っているようですが、それはかなり涼しいです:-) – Pointy

    +0

    また、私の疑惑と一致する実装について:-) – Pointy

    +0

    @Pointyこの事を知っていることは私の日の仕事のようです。 ;) –

    関連する問題