2013-01-02 15 views
15

私はカスタムグリッドで微妙に変わっていて、他の人がグリッドシステムをどのように作成したのかを知りたかったのです。 twitterのブートストラップがとても人気が高いように見えたので、私はそのコードを見てきました。今私はなぜ浮動小数点を使用しているのだろうか?私はdisplay: inline-block;を使用します。html要素にはdisplay: inline;またはdisplay: block;のいずれかがあります。浮動小数点数を避けるようにします。しかし何らかの理由でブートストラップの作成者が浮動小数点を使用することに決めました。最初に私は彼らがbackward互換性を持っていると思っていました。ie6はdisplay: inline-block;をサポートしておらず、ie7はデフォルトでdisplay: inline;の要素でしかサポートしていないからです。しかし、ゲームの中では6倍になります。そして、彼らは* zoom:1を使用するmicro clearfix hackを使用しているので、ターゲットにie6 + IMO彼らは同じを複製することができますdisplay: inline-block;*display: inline; *zoom: 1;最後の質問浮動小数点表示のインラインブロックをなぜですか?私は上記の問題を解決しようとしましたか?なぜbootstrapはdisplay:inline-blockの代わりに.spanで浮動小数点数を使用するのですか?

答えて

-2

セマンティックウェブの用語では、<img>のようなブロックレベルの要素をテキストの行内に配置する場合は、display: inline-blockを使用する必要があります。ページのメインレイアウトを作成するために、インライン配置は使用しないでください。 display: inline-blockの要素は、親要素のfont-sizeline-heightのようなプロパティからも有効です。これにより、ページレイアウトの精度が低下します。 ページのメインレイアウトを作成するときは、inline-blockの代わりにfloatを使用する方がよいでしょう。

+0

あなたの答えはありがたいですが、確かにimgはインライン要素であり、pはブロックレベルの要素であり、その逆ではありませんか?:) – orustammanapov

+0

実際には、 'img'と' p'の両方がブロックレベルです要素。私は答えを修正した。 – Mojtaba

+2

私は申し訳ありませんが、私の間違いインラインレベル要素ではなく、レベル要素をブロックしません。 ** img **タグは**デフォルトで**インラインブロック**です。ブロックレベルの要素のように幅と高さを定義できますが、同じ行の他の要素と一緒にフローティングすることなくインラインでフローできます。 – orustammanapov

16

インラインブロックは空白対応で、実際の内容とスタックの自動幅はHTMLの順になります。フロートはclearfixメソッドを必要とせず、ブロック要素に基づいています。これらのエレメントは、使用可能なスペースに自動的に横幅を持ちます。純粋に意味論的に、インラインブロックは、ホワイトスペース認識形式と順序の重要性から、意味が少なくなります。しかし、それを純粋に機能的な方法で見ると、どちらもグリッド用ではありません。疑似CSSでない場合は、意味のないHTMLタグclearfixeも使用します。私の信じるところでは、彼らはどちらも勝者ではありません。しかし、フレックスボックスが今後数年間で必須となる時代には、もう一つの選択肢はありません。インラインブロックと

<div> 
    <div style="display:inline-block; width:30%;">col1 
    </div><div style="display:inline-block; width:70%;">col2</div> 
</div> 

タグは任意のガターを閉じ、/追加一緒に接着しなければなりません。コンテナdivは、項目を別々の行の一部にするために必要です。フロートと

<div class="clearfix"> 
    <div style="float:left; width:30%;">col1</div> 
    <div style="float:left; width:70%;">col2</div> 
</div> 

Clearfixは「行」を強制することが必要である(任意の通常の流れのアイテムの問題を却下するか、フロート後に浮かぶ)

かどうか一つを使用するか、他のは問題ですあなたの目標(と味)。浮動小数点数よりもインラインブロックが好きだと言う必要があるのは、両方の列幅を知っているか相対サイズ(%)を使用している限りです。私はそれが、どのように使用されるべきかにかかわらず、問題ではない問題に対して、clearfix、浮動小数点型の浮動小数点型よりも直感的で予測可能だと思います。インラインブロックの空白認識のみが、

皮肉なことに、表はまったく問題ありません(インラインブロックを順序どおりに配置する必要があるため、ここで議論する動機があります)。

私たちが反応性について話しているなら、テーブルはインラインブロックを失います。たとえば、デスクトップに4列あり、タブレットに2列、モバイルに1列が必要です。インラインブロックでは、幅を他の幅に設定して、うまくいきなりラップします(折れたときの余白に注意してください)。テーブルでは、あなたは実際の行に拘束されています。これはかなり頑固になります。 Flexboxは長い間必要とされ、美しく見えます。特定の状況では、レイアウトを柔軟に調整できます。

私はブートストラップを使用しましたが、人々のクレジットとその態度を与えられていないことに疲れました。しかし、彼らが何かしたことを学ぶのは便利です。彼らは相対的なグリッドサイジングを使用している3.0を読んでください。ネストされたグリッドと整列に問題があります。

---- --a- ---- ---- 
---b------ 
.... ..c. 

Col aは正常な親の親である。 Col cは、bの子ネストされたcolです。パディングとボーダーボックスモデルを使用している場合を除き、ガターがコンテナに対して可変であるため、cとaを相対サイズで揃えるのは難しいです。しかし、そのようにすれば、多くの柔軟性が失われます。あなたは、いくつかの背景とパディングを持つcolをしたいときは、グリッドシステムを台無しにしているので、コードを混乱させるスタイルを設定するコンテナを使用する必要があります。彼らがこれに対する解決策を見つけたかどうかはまだ研究していません。私はまだいない。私は固定されたピクセルに行きましたが、それは応答的なデザインでは、いくつかの固定幅を持つことができ、モバイルの周りのすべてが相対的なグリッドを使用できることを意味します。

+0

すばらしい答え!私が最初に尋ねたように、私はインラインブロックレベルの要素の空白の感度を認識していませんでした。ちょうどあなたのように、浮動小数点以上のインラインブロックを使用するのが好きです。私はフレックスボックスの考え方も好きですが、私たちはまだそこにはないと思っています。ウェブキット開発者はいい仕事をしていますが、ブラウザベンダーは適切に実装するために時間を取るでしょう。 – orustammanapov

+0

IE8が時間、または誰かがそれのためのhtcユニットを書く。今日のIE10では、古いflexboxの構文がサポートされていますが、これはすでに廃止されています。そう、ええ、私たちは現在、浮動小数点/インラインブロックやテーブルに固執しています;) – Sanne

+0

これは答えとしてマークされたものよりも良い答えです。なぜインラインブロックが使用されないのかは、実際には本当の理由があります。それは不幸な理由ですが、それにはポイントがあります。もう一つの答えは、理論的で学問的なものでした。エンディング。この状況で浮動小数点を使用することによる私の唯一の問題は、スパンを使用して入力エレメントに対して浮動小数点を明示的にオフにすることで、浮動範囲がすべての入力フィールドより先に飛び越えて痛みにつながることです。 – chubbsondubs

2

Pure(以前のYahoo YUI Grid)のように、floatではなくdisplay: inline-block;を使用するグリッドシステムが優先されます。テキストの方向を右から左に変更し、レイアウトを自動的に元に戻します。浮動はこれをしません。浮動小数点数はまた、クリアと他のクロスブラウザの奇妙さの必要性を紹介します。 Pureによって示されるように、を超えるinline-blockの可能性がある不正確さは修正できます。 display: inline-block;であるという批判に関しては、display: table;の使用は、ブラウザのクロスセンタリングのために禁止されるべきであるかもしれないが、レイアウトにはを使用することを意味しない。私はまた、用語Semantic Webが本当にCSSに当てはまるかどうかという疑問は、用語が主にHTMLに関係し、その要素と属性を使用して機械可読な意味を与えているためです。 CSSの要点は、セマンティックHTMLを根本的にスタイルすることです。したがって、古典的なサイトはCSS Zen Gardenのようになります。

私は、技術がバグを悪用していない限り、ユーザーやデバイスにコンテンツを妨害するものではなく、十分サポートされていると言います。 Stu NichollsのCSSPlayのように、正統ではなくサポートされた方法でCSSを使用することはできません。

興味深いことに、Flexible Boxも最新のブラウザ(≧IE10および同等のブラウザ)に対応する優れたレイアウトシステムである純粋なグリッドに組み込まれています。

関連する問題