《11 things I learned reading the flexbox spec》 簡摘

原文進行簡單的翻譯、摘入,有興趣的部分可以到原文中進行查閱。

1.margin在flex中有特殊用法

將一個Sign in按鈕靠右。下面兩個CSS實現的效果是相同的。但使用margin-left:auto則顯得更為了輕巧。

1.png
.header {
  display: flex;
}
.header .logo {
  /* nothing needed! */
}
.header .title {
  flex: 1;
}
.header .sign-in {
  /* nothing needed! */
}

2.png

.header {
  display: flex;
}
.header .logo {
  /* nothing needed! */
}
.header .sign-in {
  margin-left: auto;
}

2.min-width的問題

3.png
.book {
  display: flex;
}
.book .description {
  font-size: 30px;
}
.book .buy {
  margin-left: auto;
  width: 80px;
  text-align: center;
  align-self: center;
}

使用CSS完成圖中的布局時,一切都顯得很完美,但是當內部文字更長時,就會出現很糟糕的一幕。

4.png

這是因為,min-width默認值為auto,此時將與長單詞的長度相同。就導致了如上問題。要解決這個問題,只要設置min-width: 0,也就是告訴flexbox允許該元素寬度比其內容窄。

在實際中處理flex元素中文本問題時,我建議采取如下的方法將文字包括起來。

.book {
  display: flex;
}
.book .description {
  font-size: 30px;
  min-width: 0;
  word-wrap: break-word;
}
.book .buy {
  margin-left: auto;
  width: 80px;
  text-align: center;
  align-self: center;
}

結果如下:


5.png

3.flexbox作者的獨門秘籍

我們都知道flex是flex-grow,flex-shrink和flex-basis的集合。但在實際使用中,我們往往要試上幾次才能達到預期效果。

在此,將終結這個問題:

  • flex: 0 1 autoflex:initial 因為空間不足,需要擠壓一個元素,同時不讓該元素進行伸縮
  • flex: 1 1 autoflex:auto 既需要元素伸縮填補有效空間,同時又需要
  • flex: 0 0 autoflex:none不想讓元素flex

4.inline-flex

恩,就是有這么一個屬性,他創造的flex容器是個行內元素。

5.vertical-align

flex中,vertical-align和float一樣,不生效!

6.不要使用百分比的margin和padding

沒有為什么,用就是了。規范說的。

7.flex中外邊距不合并。

8.flex布局中,z-index works even if position: static

9.Flex-basis細微但重要

flex-basis是為元素設置自由空間未分配前的初始長度。
在這里有個小技巧,設置flex-basis:0,這樣就可以把容器的所有空間都拿來分配了。

6.png

10. align-items: baseline

垂直校準時,往往使用align-items: center。但是如果字體大小不同的話,我們就需要用到align-items: baseline,讓字根據基線對齊。

11. 沒看懂。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • H5移動端知識點總結 閱讀目錄 移動開發基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,625評論 0 26
  • 移動開發基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,514評論 0 6
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 1,805評論 0 2
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,805評論 1 92
  • 碰到一個界面上控件上的子控件位置顯示錯誤的問題。仔細查了代碼,發現在添加子控件并設置其位置的地方不存在問題,那么結...
    碼上說閱讀 109評論 0 0