2012-02-21 17 views
2

参照のためthis jsFiddle exampleを参照してください。CSSネストされたフロート&クリアが一貫して動作しない

私たちのほとんどは1を浮動し、多くの決済技術の一つが続くマージン& width:autoを使用して上の他のプッシュが含まCSS Colunms(2つのdivのサイド・バイサイト)を取得するための簡単な技術にかなり精通しています。 (Exibit A jsFiddle Reference

この技術はかなりうまく機能し、私が個人的に知っているクリアのすべてのフォームでうまく動作します:コンテナ のコンテナ

  • Clearfix用コンテナ
  • overflow: hiddenの下部に

    • clear: bothのdiv

      しかし、左の要素の幅を知っていて、右の要素をfiにしたい場合は、この単純な暗示はうまくいきます残りの部分はコンテナにしてください。

      このテクニックは、正しくレンダリングするために、浮動小数点(右)要素を最初にコンテナに配置する必要があるという注意を払って、逆方向にもうまく機能します(float: rightおよびmargin-right)。 (Exibit B @jsFiddle Reference

      しかし、私はネストされたクリアを処理するときに問題に気付きました。 (別名は柱状体の内部にある)。

      Iが非浮上colunm (Exibit C & D)内部透明容器に入れた後、私はWebKitの&のGeckoブラウザでいくつかの奇妙な行動に気づきます。 決済要素は外側のフロートに引っ掛かるようになり、そのフロートからフロートをクリアします。

      これは、マスターフロートが左側にあるときは発生しません。 (Exibit E)

      これを回避する方法がありますが、私は、可能な場合は、1つの作品や他にはないということ、これは少し奇妙に思える知ら幅の列にfloat: rightを引き続き使用したいと思います。

      また、奇妙なことに、これはIE9では問題ではありませんが(IE 6-8にあります)。参考のため

      Windows 7の64bit版にクローム17.0.963.46によってレンダリングとして、これはjsFiddleの出力です:

      Render

      任意のアイデア?


      編集:私はoverflow: hiddenとインナーフロートをラップすることは動作するように思われることに注意しなければならないが、それは、そのようなことは基本的に相対/絶対位置のコンポーネント、DHTMLのドロップダウンで何を壊すこと自身の合併症(のしているなどと。

  • +0

    あなたは左の列に幅を追加することは何を停止するのですか? – mikos

    +0

    @mikos:私は左の幅を常に知っているとは限りません。時にはコンテナに流れる必要がありますが、浮動要素(この場合は:右)は固定幅です。 – Aren

    答えて

    0

    私はここで重要な何かを逃している可能性があります...しかし、この仕事はありますか?

    http://jsfiddle.net/mikecruz/8Hnjg/

    +0

    これはExhibit E(実際の例)です。この例では可能な限り 'float:right'を使用する必要があります。左側の部分がそのコンテナ(水平方向)を満たすために流れなければならず、幅は確定的ではないからです。この問題は、ちょうど逆のまったく同じ技術が劇的に異なる結果を生むという事実から来ている。 – Aren

    +0

    内側のフロートの幅を知っていますか?多分、あなたはそれを左に置き、浮動させることができます。 – MikeCruz13

    +0

    内部フロートは問題ではありませんが、内部のために以下の内容がOUTERフロートより下にクリアされることは明らかです。 – Aren

    関連する問題