《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勇阅读 10,100评论 0 26
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 8,868评论 0 6
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 5,774评论 0 2
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,680评论 1 92
  • 碰到一个界面上控件上的子控件位置显示错误的问题。仔细查了代码,发现在添加子控件并设置其位置的地方不存在问题,那么结...
    码上说阅读 721评论 0 0