表格上的 Flexbox 在 Firefox 中不起作用

2023-11-27

使用 flexbox 控制表格的布局在 webkit 浏览器中有效,但在 Firefox 中,<td>s 仅渲染与其自身内容一样宽的内容。

示范:http://codepen.io/afraser/pen/wMgbzr?editors=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;
}
<table>
  <tbody>
    <tr>
      <td>Ted</td>
      <td>1</td>
      <td>100%</td>
    </tr>
    <tr>
      <td>Turd Ferguson</td>
      <td>2</td>
      <td>65%</td>
    </tr>
    <tr>
      <td>Hingle McKringleberry</td>
      <td>3</td>
      <td>99%</td>
    </tr>
  </tbody>
</table>

我尝试了几种变体,包括:

  • Using flex-grow, flex-shrink, and flex-basis单独。
  • 使用像素flex-basis而不是百分比。
  • Using table-layout: fixed.

我在这里没有看到任何记录:https://github.com/philipwalton/flexbugs并且在其他地方已经干涸了。有谁知道发生了什么事吗?


这是因为,根据 CSS 表,匿名表对象当表格元素不是表格的子元素时应该生成:

enter image description here

根据Flexbox 最后通话工作草案,正是那个匿名表格成为了弹性项目,而不是表格单元格:

的一些值display触发匿名框的创建 围绕原来的盒子。它是最外面的盒子 - 的直接子代 这柔性集装箱盒——那就变成了弹性项目。为了 例如,给定两个连续的子元素display: table-cell, the 周围生成的匿名表包装盒 他们 [CSS21]成为弹性项目.

由于表格单元格不是弹性项目,因此它们忽略了flex财产。它适用于匿名表,但 CSS 选择器无法选择匿名元素。

然而,Chrome 不同意该规范,并决定屏蔽表格单元格。

然后是CSS工作组decided标准化 Chrome 的行为:

如果您有一个弹性容器并在其中放置了两个表格单元格,它们 不会独立成为弹性项目。他们会用匿名的方式包装 表,这将是灵活的。

然而,Chrome 已经实现了它,以便每个项目都是独立的 一个弹性项目。 [...] 因此它将表格单元格变成块。

我在一次会议上至少看过一次他们的演讲 利用这一点为 Flex 创建后备行为。 [...] 如果你是 不想触发回退,我不知道为什么你要放一堆 Flex 中的表格单元格并将其包裹在匿名内容中。 [...]

已解决:只需块化 Flex 和网格容器的子级即可。 不要修复匿名框

The 第一个 Flexbox 候选推荐与该新决议一起发布:

的一些值display通常会触发创建 原始盒子周围的匿名盒子。如果这样的盒子是一个柔性 物品,它首先被阻止,因此匿名框创建将 不会发生。例如,两个连续的弹性项目 with 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;
}
<table>
  <tbody>
    <tr>
      <td>Ted</td>
      <td>1</td>
      <td>100%</td>
    </tr>
    <tr>
      <td>Turd Ferguson</td>
      <td>2</td>
      <td>65%</td>
     </tr>
    <tr>
      <td>Hingle McKringleberry</td>
      <td>3</td>
      <td>99%</td>
     </tr>
  </tbody>
</table>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

表格上的 Flexbox 在 Firefox 中不起作用 的相关文章

  • 如何按排序顺序显示<选择>

    我怎样才能排序
  • 使用canvas.toDataURL时如何设置crossOrigin属性?

    因此 我尝试为我正在构建的 OpenLayers 3 应用程序创建打印地图函数 我知道他们example http openlayers org en v3 8 2 examples export map html但每当我尝试使用它时 我都
  • 在 React 组件中动态创建元素

    我创建了一个辅助函数 当我单击按钮时 它可以在组件中动态创建元素 但是它没有显示我尝试附加到父 div 的 html 的一半 它正确地将标签添加为 html 但其余部分只是纯文本 谁能明白为什么吗 用于动态创建内容的函数 function
  • 将选定的日期值从 datepicker 传递到 php

    我在这里发现了类似的问题 但大多数解决方案对我不起作用 我有一个带有日期选择器的表单 我想将所选日期传递到我的 php 文件 但它似乎不起作用 我的 html 是这样的
  • 窗口缩放:网站大小问题和 html 初始缩放值被忽略

    在 Windows 10 上 缩放默认设置为 125 会导致网站大小调整问题 因此我在 Ubuntu 上复制了增加缩放的问题 我试图修复大小改变initial scale以这种方式值 document querySelector meta
  • 使 Knockout applyBindings 将选择选项视为数字

    我将 Knockout 与 html select option 结合使用 请参阅Fiddle http jsfiddle net hf5gb
  • HTMLPanel 中的 JavaScript

    我想在 HTMLPanel 元素中包含 Javascript 代码 但它不起作用 请你帮助我好吗 提前致谢 脚本 pro js alert hello 使用 HTMLPANEL 不起作用 不显示警报 我认为应该是相反的 HTMLPanel
  • 如何使用 jQuery 在悬停元素旁边显示一个 div?

    假设我有severaldiv 像这样 EDIT div class ProfilePic a href img src lib css img profile pic1 png alt class ProfilePicImg a div c
  • 隐藏加载失败的图片

    我有一个 Android 应用程序 它生成一些在本地 Webkit 视图中呈现的 HTML HTML 生成的细节实际上并不那么重要 除了 大部分来自一个地方 我无法改变它 HTML 周围的模板 包括页眉 页脚 HEAD 等 CSS 和 Ja
  • 是否有类似 jQuery 的 CSS/HTML 选择器可以在 C# 中使用?

    我想知道是否有一个类似 jQuery 的 css 选择器可以在 C 中使用 目前 我正在使用正则表达式解析一些 html 字符串 并认为在 jQuery 中使用类似 css 选择器的东西来匹配我想要的元素会更好 更新 10 18 2012
  • 为什么 Visual Studio 格式文档工具将标题标签放在两行上?

    所以如果我有一个像这样的 HTML 标题 h2 A Heading h2 我跑Edit gt Format Document它最终看起来像这样 h2 A Heading h2 为什么是这样 它不会对其他块元素执行此操作 但会对其他内联元素执
  • 从 PDF 转换为 HTML [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何选择与绝对定位 DIV 重叠的选项?

    我有一个绝对定位的 div 它的作用类似于工具提示 当鼠标悬停在某个元素上时 它会显示 然后在鼠标移开时隐藏 我有几个
  • 从右到左打印表格单元格

    我制作了一个表格 并希望第一个单元格从右侧开始 而不是默认从左侧开始 我尝试更改 CSS 中的 float 属性 但似乎没有帮助 这是代码 table border 0 width 100 cellspacing 0 align cente
  • 同时使用高度和最小高度,并且均以百分比形式表示

    有没有办法根据CSS中的百分比设置最小高度 当我同时使用高度和最小高度时 我不能同时使用百分比我正在寻找一种控制最小高度的方法 因为我的内容基于百分比并且它的高度发生了变化 我无法将高度设置为自动 因为我需要高度为 100 而最小高度也基于
  • 如何在 html5 中加载部分 html? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 询问我们的问题推荐或查找工具 库或最喜欢的场外资源与 Stack Overflow 无关 因为它们往往会吸引固执己见的答案和垃圾邮件 反而
  • CSS 特异性还是继承?

    我在这里看过类似的问题 但没有找到适合我的情况的问题 如果我正确地阅读了这篇文章 http css tricks com specials on css specificity http css tricks com specifics o
  • Svg 点击事件无法正常工作

    我试图让我的 SVG 看起来像一个 饼形 看起来一切都很好 此外 我希望它们每个都有不同的点击事件 function one alert 1 function two alert 2 function three alert 3 funct
  • 使用Delphi检查HTML代码中是否有对象属性值

    如何使用Delphi检查HTML代码中是否有输入对象属性值 there isn t value attribute
  • 如何使我的响应式网站在手机上支持“请求桌面网站”?

    我有一个响应灵敏的动态网站 Java Servlet 驱动且完全手工编码 由于它是一个返回数据表的科学站点 因此某些选项在较小的视口宽度下不可用 然而 可能有些用户更喜欢在桌面网站上挣扎才能访问这些选项 我希望适应他们 我的问题是 对于 i

随机推荐

  • 获取字典的随机样本[重复]

    这个问题在这里已经有答案了 我正在使用一本大字典 由于某种原因 我还需要处理该字典中的小随机样本 我怎样才能得到这个小样本 例如长度为2 这是一个玩具模型 dy a 1 b 2 c 3 d 4 e 5 我需要在 dy 上执行一些涉及所有条目
  • 通过 buildForm() 中的 $options 访问变量

    我想传递一个布尔值给我的DogForm dogForm new DogForm null array has cats gt this gt getUser gt hasCats form this gt createForm dogFor
  • mysql 按日期选择总和组

    快速提问 我有下表 total o date 35 01 11 2009 19 32 44 41 5 01 12 2009 22 33 49 61 5 01 23 2009 22 08 24 66 02 01 2009 22 33 57 2
  • 获取 HTML5 范围滑块手柄的偏移位置

    有什么办法可以得到pixelHTML5 范围输入的滑块手柄的位置
  • Python 3.7 安装无法在 openSUSE Leap 42.3 上运行

    在 openSUSE Leap 42 3 上从源代码构建和安装 Python 3 7 0 时 安装到 usr local 的默认 configure 会出现严重的 python 错误 openSUSE Leap 42 3 Python3 软
  • 如何在没有嵌入的情况下使用tensorflow seq2seq?

    我一直在研究使用张量流进行时间序列预测的 LSTM 现在 我想尝试序列到序列 seq2seq 在官方网站上有一个教程 展示了带有嵌入的 NMT 那么 如何在没有嵌入的情况下使用这个新的 seq2seq 模块呢 直接使用时间序列 序列 1 E
  • matplotlib轮廓可以匹配像素边缘吗?

    如何勾画像素边界matplotlib 例如 对于如下所示的半随机数据集 the code block that follows is irrelevant import numpy as np k for s in 2103 1936 22
  • 为什么我可以匿名子类化枚举而不是最终类?

    这段代码 public class Sandbox public enum E VALUE Override public String toString return I m the value Override public Strin
  • jQuery 动画透明

    block li hover function this animate backgroundColor 000 function this animate backgroundColor fff 需要改变 fff到没有颜色 动画应该发生于
  • 使用 Typescript 时,es6 Map() 不会编译为 es5

    我刚刚开始第一次在项目中使用 Typescript 我真的很想使用 Map 来组织一小组键值对 不幸的是 当打字稿被编译 使用 gulp 和 gulp typescript 为普通 ES5 JavaScript 时 Map 仍然存在 我需要
  • 在 ASP.NET 中,获取请求的基本 URl 的最快方法是什么?

    在 ASP NET 中是否有快速获取方案 主机 端口 仅当不是 80 时 和应用程序路径的方法 据我所知 我需要组装以下部分 请求 Url 方案 Request Url SchemeDelimiter Request Url Authori
  • Rails 模型调用控制器操作

    我需要从模型内部的方法调用控制器内部的操作 这是我在其他语言中经常做的事情 当使用 MVC 框架时 但是 我从未见过在 ruby on Rails 中这样做 该操作不会渲染任何内容 它只是更新会话变量 这实际上并不是您在 MVC 模式中通常
  • 检测 iOS8 中 UITextField 中的退格键

    为了检测退格键 我已经覆盖了DeleteBackward方法 适用于iOS5 var input new BackspaceTextField RectangleF Empty etc input BecomeFirstResponder
  • 只有一个锁定对象的“死锁”?

    我在 C 中遇到多线程问题 我使用一个事件从另一个线程更新表单中的标签 当然 我需要使用 Invoke 命令 该部分也工作正常 但是 用户可以关闭表单 如果在不合适的时间发送事件 程序可能会崩溃 因此 我想我只需重写表单的 Dispose
  • 将 SWF 加载到 WebView 中

    我遇到了这个问题 如果我直接在浏览器中访问 SWF 则效果很好 如果我尝试在 SWF 文件上使用 loadUrl 它会保持空白并且不加载任何内容 弄清楚了 您必须启用插件 webview getSettings setPluginsEnab
  • 您将如何实施越位规则?

    我已经编写了一个可以实现这一目的的生成器 但我想知道实现越位规则的最佳方法 不久 越位规则意味着在这种情况下 缩进被认为是一个语法元素 这是伪代码中的越位规则 用于制作以可用形式捕获缩进的分词器 我不想按语言限制答案 token NEWLI
  • 从 EC2 实例内调用 Spark-EC2:与主机的 ssh 连接被拒绝

    为了运行 Amplab 的训练练习 我创建了一个密钥对us east 1 已经安装了训练脚本 git clone git github com amplab training scripts git b ampcamp4 并创建了环境 变量
  • 窗口底部的 div 和自适应高度 div

    有没有办法让一个 div 始终位于窗口的底部 另一个 div 改变其高度以填充它留下的任何空间 并且如果该 div 的内容太长 它就会滚动 我从不希望窗口滚动 用一张图片最好地说明这一点 div 布局 http img401 imagesh
  • CSS 圆圈没有宽度或高度? : 这可以用纯 CSS 实现吗?

    我可以将 div 变成一个圆圈 如下所示 circle background color rgba 0 0139 0139 0 5 height 200px width 200px moz border radius 50 webkit b
  • 表格上的 Flexbox 在 Firefox 中不起作用

    使用 flexbox 控制表格的布局在 webkit 浏览器中有效 但在 Firefox 中 td s 仅渲染与其自身内容一样宽的内容 示范 http codepen io afraser pen wMgbzr editors 010 bo