目次
実装原理
仕組み
注:
は、次のようにソース コードから見つけることができます:
列偏移
列排序
列嵌套
ホームページ ウェブフロントエンド htmlチュートリアル ブートストラップ入門メモ (3) Grid System_html/css_WEB-ITnose

ブートストラップ入門メモ (3) Grid System_html/css_WEB-ITnose

Jun 24, 2016 am 11:28 AM

実装原理

グリッド システムは Bootstrap の核心です。Bootstrap がこのような強力な応答性の高いレイアウト ソリューションを実現できるのは、まさにグリッド システムの存在です。以下は公式ドキュメントからの説明です:

Bootstrap は、応答性の高いモバイルファーストの流体グリッド システムを提供します。画面またはビューポートのサイズが大きくなると、システムは自動的に最大 12 列に分割されます。シンプルなレイアウト オプション用の事前定義クラスと、よりセマンティックなレイアウトを生成するための強力なミックスイン クラスが含まれています。

この段落を理解して、最も重要な部分が モバイル デバイスの優先度 であることを理解しましょう。

Bootstrap の基本的な CSS コードは、 デフォルトで小さい画面デバイス (モバイル デバイス、タブレットなど) で開始され、その後、 メディア クエリを使用して大画面デバイス (ラップトップ、デスクトップ コンピューターなど) 上のコンポーネントやグリッドに拡張されます。

次の戦略があります:

  1. 内容: 何が最も重要かを決定します。
  2. レイアウト: 幅が狭いデザインを優先します。
  3. プログレッシブ拡張: 画面サイズが大きくなるにつれて要素が追加されます。

仕組み

  1. 適切な配置とパディング (パディング) を与えるには、データ行 ( .row ) がコンテナー .container (固定幅) または .container-fluid (100% 幅) に含まれている必要があります。 。例:

    <div class="container"><!-- 水平居中,两边有margin,最小屏幕时,充满父元素 -->    <div class="row"></div></div><!-- 或者 --><div class="container-fluid"><!-- 默认一直充满整个父元素 -->    <div class="row"></div></div>
    ログイン後にコピー

  2. データ行 (.row) に列 (列) を追加できますが、列数の合計が等しい列の合計数を超えることはできません (超えた場合、余分な部分は新しい行に表示されます)、デフォルトは 12。 (カスタマイズ設定は Less または Sass を使用して行うことができます) 例:

    <div class="container">    <div class="row">        <div class="col-md-2"></div>        <div class="col-md-6"></div>        <div class="col-md-4"></div>
    ログイン後にコピー

  3. ページ上の 特定のコンテンツ は列 (column) に配置し、列のみ (column) に配置する必要があります。データ行として使用できます。.row コンテナーの直接の子要素

  4. .row や .col-xs-4 などの事前定義されたグリッド クラスを使用して、グリッド レイアウトをすばやく作成できます。
  5. ラスター システムの列は、1 から 12 までの値を指定することによって、その範囲を表します。たとえば、3 つの .col-xs-4 を使用して、3 つの等しい幅の列を作成できます。

注:

上記のコメントセクションに示されているように、.container (固定幅) は固定幅のレイアウト方法です。ソース コードを見ると、.container クラスを見ると、その幅がレスポンシブであることがわかります: (次のように)

.container { padding-right: 15px; padding-left: 15px; margin-right: auto;margin-left: auto;}@media (min-width: 768px) {  .container { width: 750px; }}@media (min-width: 992px) {  .container { width: 970px; }}/*........*/
ログイン後にコピー

上記の CSS コードからわかるように、このクラスのデフォルトは親要素全体の幅 (最小画面) ですが、大きな画面では幅が異なり、幅が異なると左右のマージンが同時に (水平方向に中央揃えで) 増加または減少します。

.container-fluid クラスは、.container のデフォルトのケースと同じで、幅が 100% です。 (CSSコードは同じです)

さらに

ソースコードを見ると、このクラスには左右のマージンに加えて、左右のパディングがあることもわかります。

ソース コードをさらに見てみると、次のように、data row.row の各列にも左右のパディングがあることがわかります。そのような状況が起こることを想像してください。

実際には、

ダブルパディング

のため、最初と最後の列でコンテンツ

30px

に分離しました。影響を排除するにはどうすればよいでしょうか? ブートストラップは、.rows で負の margin-left: -15px;margin-right: -15px; を使用して、最初の列と最後の列の行オフセットを表します。これは、最初の列の左パディングと右パディングをオフセットするために使用されます。最後のコラム。 基本的な使い方 百聞は一見に如かず 以下の表を使用して、Bootstrap のグリッド システムがさまざまな画面デバイスでどのように動作するかを詳しく確認してください。使い方についてはもう説明するまでもないと思いますので、違いを見てみましょう。 (画像は Bootstrap 中国語公式 Web サイトから引用)

は、次のようにソース コードから見つけることができます:

.col-md-1, .col-lg-12 /*......*/{ position: relative; min-height: 1px; padding-right: 15px; padding-left: 15px;}
ログイン後にコピー

これらの CSS コードから、Bootstrap の各列の幅を見つけるのは難しくありません。列数がなぜなのか 12 を超える設定をした場合、超えた部分は改行して表示されます。

以下のすべての例では、各列の背景色と境界線の効果は次の CSS コードによって制御されます:

.col-md-1/*......*/{ float: left;}/*所有的列都是默认向左浮动的*/.col-md-1 { width: 8.33333333%;}.col-md-2 { width: 16.66666667%;}/*.....*/.col-md-12 { width: 100%;}
ログイン後にコピー

Basic

それでは、次の方法が最も重要な例をいくつか見てみましょう。基本的な使用法:

[class *= col-]{ background-color: #eee; border: 1px solid #ccc;}
ログイン後にコピー

達成される効果は次のとおりです:

Bootstrap作为一个响应式框架当然不会只有那么简单的功能,我们继续往下走吧!

列偏移

在某些情况下,我们不希望相邻的列紧靠在一起,如果你希望不通过额外的margin或其他的手段来实现的话,Bootstrap内置为我们提供了列偏移(offset),这一系列的类来帮助我们实现想要的效果。

只需要给需要偏移的列元素上添加类名 col-md-offset-* ( 星号代表要偏移的列组合数 ),那么具有这个类名的列就会向右偏移。

这些类实际是通过使用 * 选择器为当前元素增加了左侧的边距(margin)。例如:在列元素中添加 .col-md-offset-6 类将 .col-md-6 元素向右侧偏移了6个列(column)的宽度。

现在我们的代码是这样的:

<div class="container">    <div class="row">        <div class="col-md-2 ">col-md-8 </div>        <div class="col-md-3 col-md-offset-2">col-md-4 col-md-offset-2</div>        <div class="col-md-4 col-md-offset-1">col-md-4 col-md-offset-1</div>    </div>    <p><br></p>    <div class="row">        <div class="col-md-4 ">col-md-4 </div>        <div class="col-md-3 col-md-offset-4">col-md-3 col-md-offset-4</div>        <div class="col-md-4 col-md-offset-4">col-md-4 col-md-offset-4</div>    </div></div>
ログイン後にコピー

可以实现的效果如下:

从实现的效果我们就能发现一些东西,注意 第二段的显示效果与代码 ,从那里我们可以发现:使用 col-md-offset-* 对列进行向右偏移时,要保证列与偏移列的总数不超过12,不然会致列断行显示。

其实原因也很简单:因为该类是对于列设置 margin-left ,并且我们在上面的源码展示中,也可以看有每一列都有着 float:left 的属性,从这些地方我们就不难发现在(偏移+列宽)超过12时,为何会换行显示了

列排序

列排序其实就是改变列的方向(顺序),就是改变左右浮动,并且设置浮动的距离。在Bootstrap框架的网格系统中是通过添加类名 col-md-push-* 和 col-md-pull-* (和上面一样,星号代表移动的列组合数)。

Bootstrap仅通过设置left和right来实现定位效果。通过查看源码,我们可以看到基本设置比较简单,如下:

.col-md-pull-12 { right: 100%;}/*...*/.col-md-push-1 { left: 8.33333333%;}.col-md-push-0 { left: auto;}
ログイン後にコピー

还是继续看看我们的实际效果吧!代码如下

<div class="container">    <div class="row">        <div class="col-md-4 col-md-push-8">.col-md-4  col-md-push-8 </div>        <div class="col-md-8 col-md-pull-4">.col-md-8  col-md-pull-4 </div>    </div>    <div class="row">        <div class="col-md-4 ">.col-md-4  默认</div>        <div class="col-md-8 ">.col-md-8  默认</div>    </div></div>
ログイン後にコピー

我们可以发现列的位置已经发生了改变

列嵌套

Bootstrap框架的网格系统还支持列的嵌套。你可以在一个列中添加一个或者多个行( .row )容器,然后在这个行容器中插入列(像前面介绍的一样使用列)。但在列容器中的行容器( .row ),宽度为100%时,就是当前外部列的宽度。(其实就是在列中嵌套多个列,下面会有实际效果展示)

注意:被嵌套的行( .row )所包含的列(column)的个数不能超过12(其实,没有要求你必须占满12列 -_- )。

我们现在有这样一个需求:

  1. 创建一个8-4列网格。(备注:以中屏md(970px)为例)。
  2. 在第一个8列网格中插入8-4列网格。
  3. 在第二个4列网格中插入9-3列网格。

效果如下:

该如何实现呢?

<div class="container">     <div class="row">            <div class="col-md-8">                    我的里面嵌套了一个网格                    <div class="row">                            <div class="col-md-8">col-md-8</div>                            <div class="col-md-4">col-md-4</div>                    </div>            </div>            <div class="col-md-4">                    我的里面嵌套了一个网格                    <div class="row">                            <div class="col-md-9">col-md-9</div>                            <div class="col-md-3">col-md-3</div>                    </div>            </div>     </div></div>
ログイン後にコピー

是不是很简单呢?当然为了完全实现和效果图一样的展示,我们还需要对CSS进行一些添加:

[class *= col-] [class *= col-] { background-color: #f36; border:1px dashed #fff; color: #fff;}
ログイン後にコピー

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

&lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

See all articles