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 までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

純粋な CSS3 で波の効果を実現するにはどうすればよいですか? (コード例) 純粋な CSS3 で波の効果を実現するにはどうすればよいですか? (コード例) Jun 28, 2022 pm 01:39 PM

純粋な CSS3 で波の効果を実現するにはどうすればよいですか?この記事ではSVGとCSSアニメーションを使って波のエフェクトを作成する方法をご紹介しますので、お役に立てれば幸いです。

正確なオブジェクト検出のためのマルチグリッド冗長境界ボックス注釈 正確なオブジェクト検出のためのマルチグリッド冗長境界ボックス注釈 Jun 01, 2024 pm 09:46 PM

1. はじめに 現在、主要なオブジェクト検出器は、深層 CNN のバックボーン分類器ネットワークを再利用した 2 段階または 1 段階のネットワークです。 YOLOv3 は、入力画像を受け取り、それを等しいサイズのグリッド マトリックスに分割する、よく知られた最先端の 1 段階検出器の 1 つです。ターゲット中心を持つグリッド セルは、特定のターゲットの検出を担当します。今日私が共有するのは、各ターゲットに複数のグリッドを割り当てて正確なタイトフィット境界ボックス予測を実現する新しい数学的手法です。研究者らはまた、ターゲット検出のための効果的なオフラインのコピー&ペーストデータの強化も提案しました。新しく提案された方法は、現在の最先端の物体検出器の一部よりも大幅に性能が優れており、より優れたパフォーマンスが期待されます。 2. バックグラウンドターゲット検出ネットワークは、次のように設計されています。

CSSを上手に使って色々な変わった形のボタンを実現(コード付き) CSSを上手に使って色々な変わった形のボタンを実現(コード付き) Jul 19, 2022 am 11:28 AM

この記事では、頻繁に登場する様々な奇妙な形のボタンをCSSを使って簡単に実現する方法を紹介しますので、ぜひ参考にしてください。

CSS3でレースボーダーを実装する方法 CSS3でレースボーダーを実装する方法 Sep 16, 2022 pm 07:11 PM

CSS では、border-image 属性を使用してレースの境界線を実現できます。 border-image 属性では、画像を使用して境界線を作成できます。つまり、境界線に背景画像を追加できます。背景画像をレース スタイルとして指定するだけで済みます。構文「border-image: url (画像パス) は、内側への画像境界線の幅。開始を繰り返すかどうか;"。

iPhoneでカメラグリッドを設定する手順 iPhoneでカメラグリッドを設定する手順 Mar 26, 2024 pm 07:21 PM

1. iPhone のデスクトップを開き、[設定] を見つけてクリックして入力します。 2. 設定ページでクリックして [カメラ] に入ります。 3. [グリッド]の右側にあるスイッチをクリックしてオンにします。

PHP 8.3 リリース: 新機能の概要 PHP 8.3 リリース: 新機能の概要 Nov 27, 2023 pm 12:52 PM

PHP8.3 リリース: 新機能の概要 テクノロジーが発展し、ニーズが変化するにつれて、プログラミング言語は常に更新され、改善されています。 Web 開発で広く使用されているスクリプト言語として、PHP は開発者により強力で効率的なツールを提供するために絶えず改良されてきました。最近リリースされた PHP 8.3 バージョンには、待望の新機能と改善点が多数含まれています。これらの新機能の概要を見てみましょう。 null 以外のプロパティの初期化 PHP の過去のバージョンでは、クラス プロパティに明示的に値が割り当てられていない場合、その値は

PHP8 の新機能を学び、最新テクノロジーを深く理解するためのガイド PHP8 の新機能を学び、最新テクノロジーを深く理解するためのガイド Dec 23, 2023 pm 01:16 PM

最新テクノロジーを習得するために役立つ、PHP8 の新機能の詳細な分析 PHP プログラミング言語は、時間の経過とともに常に進化し、改善されています。最近リリースされた PHP8 バージョンは、開発者に多くのエキサイティングな新機能と改善を提供し、開発作業にさらなる利便性と効率をもたらします。この記事では、PHP8 の新機能を詳しく分析し、これらの最新テクノロジーをよりよく習得するのに役立つ具体的なコード例を提供します。 JIT コンパイラー PHP8 では JIT (Just-In-Time) コンパイルが導入されています

CSS レイアウトのヒント: 円形グリッド アイコン レイアウトを実装するためのベスト プラクティス CSS レイアウトのヒント: 円形グリッド アイコン レイアウトを実装するためのベスト プラクティス Oct 20, 2023 am 10:46 AM

CSS レイアウトのヒント: 円形グリッド アイコン レイアウトを実装するためのベスト プラクティス グリッド レイアウトは、最新の Web デザインにおける一般的で強力なレイアウト手法です。円形のグリッド アイコン レイアウトは、よりユニークで興味深いデザインの選択です。この記事では、円形グリッド アイコン レイアウトの実装に役立ついくつかのベスト プラクティスと具体的なコード例を紹介します。 HTML 構造 まず、コンテナ要素を設定し、このコンテナにアイコンを配置する必要があります。順序なしリスト (&lt;ul&gt;) をコンテナとして使用でき、リスト項目 (&lt;l

See all articles