目次
基本的な概念とプロパティ
属性
フレックスコンテナのプロパティ
flex-direction プロパティ
order 属性
flex-wrap 属性
flex -flow 属性
justify-content プロパティ
子元素属性
flex-grow属性
flex-shrink属性
flex-basis属性
flex属性
align-self属性
实例
总结
ホームページ ウェブフロントエンド htmlチュートリアル フロントエンドの基本 (2) クイック レイアウト アーティファクト Flexbox レイアウト_html/css_WEB-ITnose

フロントエンドの基本 (2) クイック レイアウト アーティファクト Flexbox レイアウト_html/css_WEB-ITnose

Jun 24, 2016 am 11:18 AM

前回の記事で、CSS レイアウトの従来のレイアウト方法は、主に表示属性 + 位置属性 + フロート属性に依存するボックス モデルに基づいていることがわかりました。このボックス モデルは、一部の複雑なレイアウトでは解決がより困難になるため、新しいレイアウト方法が登場しました。

2009 年、W3C は、さまざまなページ レイアウトを簡単、完全、レスポンシブに実現できる新しいソリューション、Flexbox レイアウト (エラスティック レイアウト) を提案しました。フレックス レイアウト モデルは、ブロック モデルとインライン モデルのレイアウト計算がブロックとインラインのフロー方向に依存するという点で、ブロック モデル レイアウトやインライン モデル レイアウトとは異なります。

そして React Native も Flex レイアウトを使用するため、Flex を学習することはクライアントの開発に大きな利益をもたらします。

基本的な概念とプロパティ

Flexbox のレイアウトはフレックスの方向に依存します。簡単に言えば、Flexbox は単純なプロパティではなく、レイアウト モジュールです。 Flex レイアウトを使用する要素は Flex コンテナ (フレックス コンテナ) と呼ばれ、そのすべての子要素 ​​(フレックス アイテム) は自動的にコンテナ メンバーになります。

Flexbox レイアウトは、Android 開発における LinearLayout レイアウトに非常に似ていますが、LinearLayout よりも強力です。 LinearLayoutと同様に、Flexboxにも主軸(メイン軸)と副軸(クロス軸)の2方向のレイアウトがあり、簡単に言うとLinearLayoutの水平レイアウトと垂直レイアウトとして理解できます。主軸の開始位置(境界線との交点)をメインスタート、終了位置をメインエンド、交差軸の開始位置をクロススタート、終了位置をクロスエンドといいます。デフォルトでは、項目は主軸に沿って配置されます。 1 つのアイテムが占める主軸のスペースをメイン サイズと呼び、1 つのアイテムが占める横軸のスペースをクロス サイズと呼びます。

属性

属性は、フレックス コンテナ属性とフレックス アイテム属性に分かれています。親コンテナと子要素に対応します。

フレックスコンテナのプロパティ

以下はフレックスコンテナのプロパティ

  • フレックスコンテナのプロパティ
  • order
  • flex-wrap
  • flex-flow
  • justify-content
  • align-content
  • align-items

flex-direction プロパティ

flex-direction プロパティは、主軸の方向 (つまり、項目の配置方向) を決定します。 LinearLayout のverticalまたはhorizo​​ntalと似ています。

flex-direction: row | row-reverse | column | column-reverse
ログイン後にコピー

4 つの値から選択できます:

  • row (デフォルト値): 主軸は水平で、開始点は左端にあります。
  • row-reverse: 主軸は水平であり、開始点は右端にあります。
  • column: 主軸は垂直であり、始点は上端にあります。
  • column-reverse: 主軸は垂直であり、開始点は下端にあります。

order 属性

デフォルトでは、サブ要素はドキュメント フローの順序で配置され、order 属性は配置の順序を制御できます。負の値が最初に、正の値が後に続きます。災害を小さいものから大きいものへと順番に並べています。フレックス ボックスが LinearLayout よりも強力である理由は、一部のプロパティの方が強力であるためであり、順序もその 1 つであるためです。

flex-wrap 属性

デフォルトでは、Flex には LinearLayout と同様に行の折り返しがありませんが、flex-wrap 属性は行の折り返しをサポートできます。これも LinearLayout より優れており、次の 3 つの値があります:

rrree

  • nowrap: 行の折り返しなし
  • wrap: 行を法線方向に折り返します
  • wrap-reverse: 行を逆方向に折り返します

flex -flow 属性

flex-flow プロパティは、flex-direction プロパティと flex-wrap プロパティの略称で、デフォルト値は row nowrap です。

flex-wrap: nowrap | wrap | wrap-reverse;
ログイン後にコピー

justify-content プロパティ

justify-content プロパティは、主軸上の項目の配置を定義します。

flex-flow: <flex-direction> || <flex-wrap>;
ログイン後にコピー

  • flex-start (デフォルト): 左揃え
  • flex-end: 右揃え
  • center: 中央揃え
  • space-between: 項目間の間隔が等しくなるように両端を揃えます。
  • スペースアラウンド: 各アイテムは両側に等間隔に配置されます。したがって、項目間のスペースは、項目と境界線の間のスペースの 2 倍になります。

align-items プロパティ

align-items プロパティは、項目を第 2 軸上にどのように配置するかを定義します。

justify-content: flex-start | flex-end | center | space-between | space-around;
ログイン後にコピー

    flex-start: 交差軸の開始点を揃えます。
  • flex-end: 交差軸の終点を揃えます。
  • center: 交差軸の中点を揃えます。
  • baseline: アイテムのテキストの最初の行のベースライン配置。
  • stretch (デフォルト値): アイテムの高さが設定されていない場合、または自動に設定されている場合、アイテムはコンテナーの高さ全体を占めます。

align-content プロパティ

align-content プロパティは、複数の軸の位置合わせを定義します。プロジェクトに軸が 1 つしかない場合、このプロパティは効果がありません。

りー

  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。

子元素属性

以下几个属性设置在子元素上。

  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

flex-grow属性

flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。一张图看懂。跟 LinearLayout中的 weight属性一样。

.item {  flex-grow: <number>; /* default 0 */}
ログイン後にコピー

如果所有项目的 flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的 flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

flex-shrink属性

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

.item {  flex-shrink: <number>; /* default 1 */}
ログイン後にコピー

如果所有项目的 flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的 flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

负值对该属性无效。

flex-basis属性

flex-basis属性定义了在分配多余空间之前,子元素占据的 main size主轴空间,浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为 auto,即子元素的本来大小。

.item {  flex-basis: <length> | auto; /* default auto */}
ログイン後にコピー

flex属性

flex属性是 flex-grow, flex-shrink和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

.item {  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]}
ログイン後にコピー

该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

align-self属性

align-self属性允许单个子元素有与其他子元素不一样的对齐方式,可覆盖 align-items属性。默认值为 auto,表示继承父元素的 align-items属性,如果没有父元素,则等同于 stretch。

.item {  align-self: auto | flex-start | flex-end | center | baseline | stretch;}
ログイン後にコピー

该属性可能取6个值,除了 auto,其他都与 align-items属性完全一致。

实例

属性基本都讲完了,下面进入实战。百度前端学院的其中一个任务:

  • 学习如何flex进行布局,学习如何根据屏幕宽度调整布局策略。
  • 屏幕宽度小于 640px 时,调整 Flexbox 的属性以实现第四个元素移动到最前面的效果,而不要改动第一个元素的边框颜色与高度实现效果图。

效果图

分析:

  1. 屏幕宽度小于640px时,调整主轴对齐方式justify-content属性为space-between,在副轴对齐方式align-items为center
  2. 屏幕宽度大于640px,要有换行,并且动态调整 order属性,调整第四个子元素的排列位置。并且调整align-items为flex-start;

效果图和 代码

总结

可以看到, Flex box布局方式相比传统的盒模型布局方式要快速很多,对于一些复杂的页面也可以很快速的开发。而且由于 React Native的支持并使用,相信会有跟多开发者使用这种布局方式进行开发。

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

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

HTMLは初心者のために簡単に学ぶことができますか? HTMLは初心者のために簡単に学ぶことができますか? Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLでの開始タグの例は何ですか? HTMLでの開始タグの例は何ですか? Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

HTML、CSS、およびJavaScriptの理解:初心者向けガイド HTML、CSS、およびJavaScriptの理解:初心者向けガイド Apr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

WebアノテーションにY軸位置の適応レイアウトを実装する方法は? WebアノテーションにY軸位置の適応レイアウトを実装する方法は? Apr 04, 2025 pm 11:30 PM

Y軸位置Webアノテーション機能の適応アルゴリズムこの記事では、単語文書と同様の注釈関数、特に注釈間の間隔を扱う方法を実装する方法を探ります...

Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Apr 04, 2025 pm 11:54 PM

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

HTML、CSS、およびJavaScript:Web開発者に不可欠なツール HTML、CSS、およびJavaScript:Web開発者に不可欠なツール Apr 09, 2025 am 12:12 AM

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

CSS3とJavaScriptを使用して、クリック後に周囲の写真を散乱および拡大する効果を実現する方法は? CSS3とJavaScriptを使用して、クリック後に周囲の写真を散乱および拡大する効果を実現する方法は? Apr 05, 2025 am 06:15 AM

画像をクリックした後、散乱と周囲の画像を拡大する効果を実現するには、多くのWebデザインがインタラクティブな効果を実現する必要があります。特定の画像をクリックして周囲を作成してください...

See all articles