s只能呈现与其自己的内容一样宽.
演示:http://codepen.io/afraser/pen/wMgbzr? edit =
010
* {
box-sizing: border-box;
}
table {
border: 1px solid #ddd;
width: 100%;
}
tbody {
background: #fff;
}
tr {
display: flex;
}
td:first-child {
flex: 1 1 80%;
background: mistyrose;
}
td:nth-child(2) {
flex: 0 0 10%;
background: Aquamarine;
}
td:nth-child(3) {
flex: 0 0 10%;
background: pink;
}
Ted |
1 |
100% |
Turd Ferguson |
2 |
65% |
Hingle McKringleberry |
3 |
99% |
我尝试了几种变体,包括:
使用flex-grow ,flex-shrink 和flex-basis 个别.
使用像素flex-basis 代替百分比.
用table-layout: fixed .
我在这里看到没有记录这个:https://github.com/philipwalton/flexbugs并在其他地方干了.有谁知道发生了什么?
1> Oriol..:
这是因为,根据CSS表,当表格元素不是表的子元素时,应该生成匿名表对象:
根据Flexbox Last Call Working Draft,匿名表是什么成为flex项,而不是表单元格:
某些值会display 触发在原始框周围创建匿名框.它是最外层的盒子 - 灵活容器盒的直接子盒 - 成为一个弹性项目.例如,给定两个连续的子元素display: table-cell ,围绕它们生成 的匿名表包装盒[CSS21]成为弹性项.
由于表格单元格不是弹性项目,因此忽略了该flex 属性.它将应用于匿名表,但CSS选择器无法选择匿名元素.
但是,Chrome不同意该规范并决定封锁表格单元格.
然后CSS工作组决定标准化Chrome的行为:
如果您有一个Flex容器,并且在其中放置了两个表格单元格,则它们不会独立地成为弹性项目.他们将包装在一个匿名表中,这将是flex.
但是,Chrome已经实现了它,因此每个项目都是独立的灵活项目.[...]因此它将表格单元格变成了块.
我在会议上看到过至少一个演示文稿,他们利用这个演示文稿为flex创建了后备行为.[...]如果你不是试图触发回退,我不知道你为什么要把一堆表格单元放在flex中并用匿名的东西包裹起来.[...]
解决:只是阻止flex和grid容器的子代.不要做匿名的盒子修复
在第一Flexbox的候选推荐标准发布与新决议:
某些值display 通常会触发在原始框周围创建匿名框.如果这样的框是弹性项,则它首先被阻塞,因此不会发生匿名框创建.例如,两个连续的柔性物品与
display: table-cell 将成为两个独立的柔性物品,而不是被包裹成一个单一的匿名表.display: block
然后Firefox实现了从版本47开始的新行为(错误1185140).
对于旧版本,您可以手动将单元格设置为块:
.flex-container > td {
display: block;
}
* {
box-sizing: border-box;
}
table{
border: 1px solid #ddd;
width: 100%;
}
tbody {
background: #fff;
}
tr {
display: flex;
}
td {
display: block;
}
td:first-child {
flex: 1 1 80%;
background: mistyrose;
}
td:nth-child(2){
flex: 0 0 10%;
background: Aquamarine;
}
td:nth-child(3){
flex: 0 0 10%;
background: pink;
}
Ted |
1 |
100% |
Turd Ferguson |
2 |
65% |
Hingle McKringleberry |
3 |
99% |
2> Michael_B..:
我认为该问题涉及display 您的弹性项目的默认值.
如果您覆盖它,display: flex 布局应该在浏览器中按预期工作.
进行以下调整:
td:first-child { display: flex; }
td:nth-child(2) { display: flex; }
td:nth-child(3) { display: flex; }
修改了Codepen
我的第一个想法是确保每个人td 都display 适用了适当的价值 - 这就像是display: flex-item .但是,flex-item 不存在,所以我用过display: flex .
编辑
上面的解决方案.此编辑与解释有关.
在检查规范时,似乎flex项目甚至没有默认display 值.基本上,一旦您将父级设置为弹性容器,子级就会成为弹性项目,并接受弹性属性,无论display 应用何种规则.因此,display 不需要默认规则.
在这种情况下,似乎必须display: flex 在flex项目上声明是使Firefox和IE工作所必需的怪癖.
推荐阅读
-
如何解决《如何创建响应式(变化列数)Angular-Material卡网格》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《NodeJS/Express4端点生成损坏的xlsx文件》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《排列,但有一些数字保持在一个顺序》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《如何获取桌面位置?》经验,为你挑选了3个好方法。 ...
[详细]
-
如何解决《字符串格式:将"%0%1%2"替换为带有0,1,2索引的元组》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《我可以安全地更改SharedPreferences变量的类型吗?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《如何使用JQuery更改拖动事件上光标的图像侧》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《无法使用ApplicationLoader上传应用内购买的托管内容》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《如何使用ES6中的所有默认值来构造选项参数?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《反序列化后,Boolean字段始终返回false(Newtonsoft)》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《如何将键盘按键连接到操作》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《为什么要用QT编译OpenCV?》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《如果我使用hashMap.values().remove()从HashMap中删除一个值,它会从地图中删除完整的键/值记录吗?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Fortran的参数语句是否类似于C/C++的#define语句?》经验,为你挑选了2个好方法。 ...
[详细]
-
如何解决《如何在android中的视图上方添加阴影》经验,为你挑选了2个好方法。 ...
[详细]
-
如何解决《比较Go中的指针》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《将Google地图徽标移到底部的自定义界面上方.JavaScript的》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《对于类似于GIS细化算法(egrthin,GRASSGIS)的栅格对象,R中是否存在细化或骨架化算法?》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《AttributeError:'module'对象没有属性'MutableMapping'》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Javainteger++我没有改变这个值》经验,为你挑选了4个好方法。 ...
[详细]
|