検索

CSS3グリッドの解析

Jun 21, 2018 pm 05:45 PM
css3新機能グリッド

この記事では、HTML と CSS でグリッドの操作を容易にするためのいくつかの新しい CSS3 プロパティを見ていきます。まず、HTML と CSS グリッドの歴史について少し説明し、なぜ以前はそれほど難しかったのかを理解しましょう。 1. グリッドの簡単な歴史

かつて、私たちのレイアウトは混乱していました。テーブルとフレームは、複数列のレイアウトを作成するための主要なツールです。彼らは仕事をやり遂げますが(実際にはかなり下手です)。

今日に照準を合わせてください。 HTML と CSS は非常に複雑になり、Web デザインの人気と洗練度は日々高まっています。私たちが使用していた古いレイアウト方法は明らかにアウトです。ただし、複数列レイアウトという従来の問題が表面化しました。

さらに状況を複雑にしているのは、ページ幅が静的ではなくなったことです。応答性が大流行しているため、パーセンテージベースの列幅を好む傾向があります。 960 ピクセルの固定幅に基づく単純なグリッドはもう機能しません。流動的なグリッドが必要です。

CSS2仕様のfloatを使用して列を解決する方法には問題があります。親要素がレイアウトを壊さないようにするには、clearfix を追加する必要があります。この方法により、親要素の高さの崩壊の問題が修正されます (フローティング要素が標準フローから外れ、親要素はフローティング リソースが存在しないと認識します)。私たちはこのアプローチをほとんど受け入れていますが、多くの人は依然としてこれをハッキングだと考えています。

インラインボックスを介した方法はそれほど一般的ではありませんが、依然として存在します。インライン要素は 1 行に留まり、自然な順序になります。行がいっぱいになると、後続の要素は自然に次の行に折り畳まれます。ただし、テキストのように動作するため、テキストのように動作します。これは、HTML 要素間に空白要素 (スペース、タブ、改行など) を避ける必要があることを意味します。インラインブロックはこのために設計されていないため、あまりうまく機能しません。

これら 2 つの方法のうち、フローティング方法がより信頼性があります。そのため、より人気があり、1位にランクされています。ただし、複数の列を作成した後、ある程度のパディング距離が必要になるため、コンテンツを再度圧縮する必要があることがわかります。これは最後の質問になります: ボックス モデルとは何ですか? 簡単に言うと、要素の実際のサイズには高さ/幅 + パディング + 横幅が含まれます。外側の境界線はボックスを大きくするのではなく、ボックス自体と他の要素の間にスペースを追加するだけです。したがって、幅をたとえば 25% に設定すると、ボックスの実際の幅はそれよりもはるかに大きくなり、1 行に 4 つの要素を入れるのに十分なスペースがないことを意味します。

この厄介な問題にはさまざまな解決策があります。負のマージン、ネストされた要素、私が知っているのはこれだけです。これらはすべて追加の CSS または DOM 要素を必要とし、ハックとしてカウントされます。正直に言うと、CSS2 ではグリッドを解決する良い方法はありません。

しかし現在、CSS3 は優れたサポートを提供しており、仕様にはグリッドに特化したいくつかの新機能が追加されています。これらの特徴は何でしょうか?どのように使用するのでしょうか?見てみましょう。

2. box-sizing: border-box

解決された問題の 1 つは、拡張ボックス モデルの性質です。この問題は、box-sizing の値を border-box に設定することで解決できます。コンテンツの幅を減らすと、サイドとパディングの間の距離も width 属性に計算されます。

HTML

<p class="row">
  <p class="column">Col one</p>
  <p class="column">Col two</p>
  <p class="column">Col three</p>
  <p class="column">Col four</p>
</p>

CSS

.row:after {
  clear: both;
  content: &#39;&#39;;
  display: block;
}
.column {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  float: left;
  min-height: 8em;
  overflow: hidden;
  padding: 2em;
  width: 25%;
}
.column:nth-child(1) { background-color: #9df5ba; }
.column:nth-child(2) { background-color: #9df5d7; }
.column:nth-child(3) { background-color: #9df5f5; }
.column:nth-child(4) { background-color: #9dd7f5; }

Effects

これはうまく機能しますが、フロートを使用する必要があり、フロートをクリアする必要もあります。さらに、パディングは要素のスペースとしてのみ使用でき、マージンは役割を果たしません。これは、高速要素間に実際のスペースはなく、そのコンテンツが存在することを意味します。これは多くのデザインにとって非常に便利ですが、それでも小さな間違いのように感じられます。
1.Firefox 1

2.Chrome 1

3.IE 8

4.Opera 7

5.Safari 3

3. width: calc (パーセント – 距離)

もう 1 つの優れたオプションは、calc( ) 関数。これにより、JavaScript に依存せずに要素の実際の幅をさまざまな単位で計算できるようになります。

HTML

<p class="row">
  <p class="column">Col one</p>
  <p class="column">Col two</p>
  <p class="column">Col three</p>
  <p class="column">Col four</p>
</p>

CSS


.row { margin-left: -1em; }</p> <p>.row:after {
 clear: both;
 content: &#39;&#39;;
 display: block;
}
.column {
 float: left;
 margin-left: 1em;
 min-height: 8em;
 padding: 1em;
 width: -webkit-calc(25% - 3em);
 width: -moz-calc(25% - 3em);
 width: calc(25% - 3em);
}
.column:nth-child(1) { background-color: #9df5ba; }
.column:nth-child(2) { background-color: #9df5d7; }
.column:nth-child(3) { background-color: #9df5f5; }
.column:nth-child(4) { background-color: #9dd7f5; }

効果:


実際のサイズを再計算する機能は素晴らしいオプションですが、残念ながらまだ浮動小数点が必要であり、列のコンテナの外側のエッジの距離が負である必要もあります。同様に、素晴らしい選択ですが、まだ多少の欠陥があります。
1.Firefox 4

2.Chrome 19

3.IE 9

4.Opera ?

5.Safari 6 (少しバグがあるようです)

4. Flexbox

格納式レイアウト ボックスには特定の構成動作があります 要素- テーブルのようなもの。これは本当ですか?はい、そうです。テーブルの動作は、その内容に基づいて表示が変化するため、実際には非常に優れています。ただし、テーブル レイアウトは使用されなくなったため、テーブル タグはオプションではありません。

最初、伸縮ボックスは少し複雑に見えました。特に英語で話すのが苦手な私にとっては、理解するのが難しい属性がたくさんあります。幸運なことに、Chris Coyier が格納式ボックスに関する素晴らしいガイドを書いてくれたので、言及しておきます。

HTML

<p class="row">
  <p class="column">Col one</p>
  <p class="column">Col two</p>
  <p class="column">Col three</p>
  <p class="column">Col four</p>
</p>

CSS

.row {
    display: -webkit-flex;
    -webkit-flex-direction: row;
    -webkit-flex-wrap: nowrap;
    -webkit-justify-content: space-between;</p>
<p>    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: space-between;
}
.column {
    margin: 0.5em;
    min-height: 8em;
    padding: 1em;
    width: 25%;
}
.column:nth-child(1) { background-color: #9df5ba; }
.column:nth-child(2) { background-color: #9df5d7; }
.column:nth-child(3) { background-color: #9df5f5; }
.column:nth-child(4) { background-color: #9dd7f5; }

効果:


5.

CSS3 は多くの新機能をもたらし、いくつかの従来の問題を修正していますが、私の意見では、フレックス ボックス レイアウトは CSS で柔軟なグリッドを作成するハック以外の唯一の方法です。ただし、残念なことに、ブラウザのサポートは平凡です。それにもかかわらず、他の方法はプレゼンテーションを豊かにするため、改善されており、ブラウザーのサポートも良好です。

以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

div模倣チェックボックスフォームスタイルの美化と機能

CSSページの左、中、右の列レイアウトの実装

以上がCSS3グリッドの解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
cohost.orgの失われたCSSトリックcohost.orgの失われたCSSトリックApr 25, 2025 am 09:51 AM

この投稿では、Blackle Moriは、CohostのHTMLサポートの限界を押し広げようとしている間に見つかったハックのいくつかを示します。あえてこれらを使用してください、あなたもCSS犯罪者とラベル付けされないようにしてください。

カーソルの次のレベルCSSスタイリングカーソルの次のレベルCSSスタイリングApr 23, 2025 am 11:04 AM

CSSを備えたカスタムカーソルは素晴らしいですが、JavaScriptを使用して次のレベルに物事を引き出すことができます。 JavaScriptを使用して、カーソル状態間で移行し、カーソル内に動的テキストを配置し、複雑なアニメーションを適用し、フィルターを適用できます。

Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Apr 23, 2025 am 10:42 AM

2025年には、互いに互いに跳ね返る要素を伴うインタラクティブなCSSアニメーションは、CSSにPongを実装する必要はありませんが、CSSの柔軟性とパワーの増加はLee&#039;の疑いを補強します。

UI効果にCSSバックドロップフィルターを使用しますUI効果にCSSバックドロップフィルターを使用しますApr 23, 2025 am 10:20 AM

CSSバックドロップフィルタープロパティを使用してユーザーインターフェイスをスタイルするためのヒントとコツ。バックドロップフィルターを複数の要素間でレイヤー化する方法を学び、それらを他のCSSグラフィカル効果と統合して、精巧なデザインを作成します。

微笑んでいますか?微笑んでいますか?Apr 23, 2025 am 09:57 AM

まあ、SVG&#039;の組み込みのアニメーション機能は、計画どおりに非推奨されることはありませんでした。確かに、CSSとJavaScriptは負荷を運ぶことができる以上のものですが、以前のようにSmilが水中で死んでいないことを知っておくのは良いことです

「かわいい」は見る人の目にあります「かわいい」は見る人の目にありますApr 23, 2025 am 09:40 AM

イェーイ、テキストワラップのジャンプを見てみましょう:サファリテクノロジーのプレビューにかなり着陸してください!しかし、それがChromiumブラウザーでの仕組みとは異なることに注意してください。

CSS-Tricks XLIIIを記録しますCSS-Tricks XLIIIを記録しますApr 23, 2025 am 09:35 AM

このCSS-Tricksアップデートは、アルマナック、最近のポッドキャスト出演、新しいCSSカウンターガイド、および貴重なコンテンツを提供するいくつかの新しい著者の追加の大幅な進歩を強調しています。

Tailwind&#039;の@Apply機能は、響きよりも優れていますTailwind&#039;の@Apply機能は、響きよりも優れていますApr 23, 2025 am 09:23 AM

ほとんどの場合、人々はTailwind&#039;の@Apply機能を紹介します。このように展示されたとき、@Applyはまったく有望な音をしません。だからobvio

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター