【问题标题】:How to write this styling in latest implementation of CSS3's Flexbox如何在 CSS3 的 Flexbox 的最新实现中编写此样式
【发布时间】:2013-05-08 23:42:22
【问题描述】:

我想出了如何使用 2009 年的 flexbox 实现来实现样式,但还有另外两个实现。短暂的 2011 年和 2012 年的部分语法,然后是当前和最终的语法。

如何在当前和最终实现中编写此代码?

如果你也能做 2011 年的实施,那就太好了!

我正在寻找供应商前缀。

display:-moz-box;
display:-webkit-box;
display:box;
-moz-box-align:center;
-webkit-box-align:center;
box-align:center;
-moz-box-orient:horizontal;
-webkit-box-orient:horizontal;
box-orient:horizontal;
-moz-box-pack:center;
-webkit-box-pack:center;
box-pack:center;

【问题讨论】:

  • 如果您要查找每个草稿中所有属性名称/值的图表,可以在此处找到:gist.github.com/cimmanon/727c9d558b374d27c5b6。下一个 Compass (for Sass) 版本将推出一组新的 Flexbox mixin,为您完成所有工作。
  • @cimmanon 谢谢。该链接应该有所帮助。我不使用 Sass,但谢谢。

标签: css flexbox


【解决方案1】:

完整的属性集如下所示:

.foo {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;

  -webkit-box-pack: center;
  -moz-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;

  -webkit-box-align: center;
  -moz-box-align: center;
  -ms-flex-line-pack: center;
  -webkit-align-content: center;
  align-content: center;

  -webkit-box-orient: horizontal;
  -moz-box-orient: horizontal;
  -webkit-box-direction: normal;
  -moz-box-direction: normal;
  -webkit-flex-direction: row;
  -ms-flex-direction: row;
  flex-direction: row;
}

请注意,row/horizontal 是默认方向,除非您从之前的 column/vertical 声明中覆盖它,否则无需添加它。

将 flex 容器设置为 inline 遵循与其他 inline 属性(例如 inline-block、inline-table 等)相同的命名约定:

.foo {
  display: -webkit-inline-box;
  display: -moz-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  display: inline-flex;
}

如果您专门为垂直居中执行此操作,则 2009 年实施的 Firefox 有时可能会出现问题,因为它并不总是正确换行。我的建议是对 2009 年的房产使用与现代房产不同的房产,如下所示:

http://codepen.io/cimmanon/pen/mxuFa

li {
  text-align: center;
  vertical-align: middle;
  display: inline-block;
  display: -webkit-inline-box;
  display: -moz-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  display: inline-flex;
  /* vertical centering for legacy, horizontal centering for modern */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
  /* modern Flexbox only */
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  /* legacy Flexbox only */
  -webkit-box-orient: vertical;
  -moz-box-orient: vertical;
  -webkit-box-direction: normal;
  -moz-box-direction: normal;
}

【讨论】:

  • 我知道我没有使用 inline-flex。但是,您能否在您的答案中添加第二组样式,以使用 inline-flex 的完整属性集实现相同的效果?在我使用 inline-flex 的情况下,我可以在将来参考这个。我想要达到的效果是水平和垂直居中。
  • 我试过了,#topBar 里面的段落仍然是顶部对齐的,而不是水平和垂直居中的。奇怪的是,当我只尝试 2009 版本时,就像我的问题一样,它是居中的。这是页面:dl.dropboxusercontent.com/u/270523/help/setup/setup.html 知道为什么 #topBar 中的 p 没有居中吗?
  • 是的,2009 年草案的行为与现代草案相比存在细微差别。您忽略的是align-items 属性,它默认为stretch(如拉伸以填充沿横轴的可用空间,或在我们的示例中为垂直),并且在2009 年草案中不存在。我的答案末尾的代码是为所有草稿的单个或匿名弹性项目的垂直对齐编写的最有效方法。代码演示:codepen.io/cimmanon/pen/knJcB
  • 另外,rgb(R, G, B) 颜色格式不需要十六进制后备,它一直存在。只有 rgba(R, G, B, A) 需要后备。
  • 非常感谢您的帮助!您能否为我再做一件事,在您的答案中添加一个如何水平和垂直居中 inline-flex 项目?如果可以,请将其与上面的 flex-box 版本分开,但答案相同?
猜你喜欢
  • 2012-10-24
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
相关资源
最近更新 更多