flex:1; これはどういう意味ですか?

まえがき: 私が最初に flex レイアウトを学んだとき、flex: 1; の概念は非常に曖昧で、単に flex: 1; が 1 つのコピーを表し、flex: 2; が 2 つのコピーを表すと考えていました。その後、柔軟なレイアウトに関する一連の問題に遭遇したため、この属性を注意深く研究しました。

実際、flex:1; は 3 つの属性の略称であり、完全な記述方法は次のようになります。flex: 1 1 0%;

最初のパラメータの意味: flex-grow はアイテムの拡大率を定義します。デフォルトは 0、つまり残りのスペースがある場合は拡大されません。2 番目のパラメータの意味: flex-shrink はアイテムの縮小率を定義します
。項目のデフォルトは 1 です。つまり、スペースが不十分な場合、プロジェクトは縮小します。3
番目のパラメータは、フレックスベースが上記の 2 つのプロパティに追加スペースを割り当てる前に、プロジェクトに追加スペースがあるかどうかを計算します。デフォルト値は auto で、これはプロジェクト自体のサイズです。

アダプティブ レイアウトとしてよく使用され、コンテンツ領域は残りのスペースを埋めるために自動的に拡大または縮小されます。Chrome ブラウザでflex: 1; を直接展開して詳細を表示することもできます flex
ここに画像の説明を挿入します
: 2;
ここに画像の説明を挿入します
フレックス レイアウトの一般的なシナリオをいくつか示します:
1. 1 つの要素の幅 (または高さ) は固定されており、幅 (または高さ)他の要素の ) は自動的に変更されます。

.parent {
    
    
	display: flex;
}
// 高度/宽度固定
.son1 {
    
    
	width: 200px; //或者 height: 200px;
	flex: none; // 加不加都可 相当于flex: 0 0 auto;
}
// 高度/宽度自适应
.son2 {
    
    
	flex: 1;  // flex: 1 1 0%;
}

ここに画像の説明を挿入します

2. すべての子要素に flex を設定します: 1; 子要素ボックスは均等に分割され、親ボックスを占有します。

<div class="container">
  <div class="div">我是一个div</div>
  <div class="div">我是一个很多字div</div>
  <div class="div">我是一个更多字而且第三个div</div>
</div>
<style>
.container{
    
    
  display: flex;
}
.div{
    
    
  border: 1px solid red;
  flex: 1;
}
</style>

ここに画像の説明を挿入します

3. flex: 1 1 auto; に設定するとどうなるでしょうか? 子要素のボックスはその内容に応じて適応し、一緒にスペース全体を占めます。

<div class="container">
  <div class="div">我是一个div</div>
  <div class="div">我是一个很多字div</div>
  <div class="div">我是一个更多字而且第三个div</div>
</div>
<style>
.container{
    
    
  display: flex;
}
.div{
    
    
  border: 1px solid red;
  flex: 1 1 auto;
}
</style>

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/xiaoxiannv666/article/details/120667793