- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
一个 display: table-row
div with height: 75px
嵌套在一个 display: table
div with height: 100px
child 的高度是 100px
最初是 position: static
通过将子元素的定位更改为absolute
然后再返回到static
,子元素的高度从100px
永久更改为75 像素
。
只有当父元素是一个表格而子元素是一个表格行时它才会发生并且显然它只在WebKit中; firefox/IE 改回 100px 高度但 Chrome/Safari 没有。
<div id="div1">
<div id="div2">
Hello, world!
</div>
</div>
#div1
{
display: table;
height: 100px;
}
#div2
{
display: table-row;
height: 75px;
}
Here's the jsfiddle带有定位类型/高度的示例和输出。
我最初是在 Chrome 开发者工具中弄乱 CSS 属性时注意到它的,所以它不是 jsfiddle 或 jQuery 特有的东西。
为什么高度会永久改变?
最佳答案
问题的根源在于table和table-row元素指定了高度,但是table高度大于table-row高度。由于没有其他行,这将导致未定义的行为。来自spec :
CSS 2.1 does not define how extra space is distributed when the 'height' property causes the table to be taller than it otherwise would be.
以下是似乎正在发生的事情,至少根据我自己的观察:
除非我误读了它,否则每个浏览器似乎都忽略了规范中指定如何计算表格行元素高度的段落,并取而代之的是表格高度。
当您绝对定位表格行时,它的计算高度会更改为指定的 75px
,因为 absolute positioning turns it into a block box因此它的尺寸是相应计算的。
当您将元素返回到其静态位置时,它会恢复为表格行(它应该如此),但是 Chrome/Safari 出于某种原因保留了 75px
你把它做成一个 block 框,而其他浏览器根据表格重新计算高度,再次忽略它指定的高度。
由于这是技术上未定义的行为,因此是否可以说任何浏览器具有错误或不正确的行为是值得商榷的。但是,我要冒昧地说这可能与 Chrome 在回流和重绘时严重困惑的倾向有关,因为您希望浏览器在您撤消时恢复所有属性并正确重绘布局单个属性更改——这是 Chrome 出了名的不擅长的事情。
或者,如评论中所述,这可能与 anonymous table objects 有关.规范并没有说一个空表需要有一个匿名行和单元格,但看起来 Chrome 可能会创建一个来替换表行,当你第一次定位它时,但在你把它放回去后忘记删除它.
例如,如果您添加一些纯文本作为表格的子项,然后浏览器将按照规范将其包装在匿名行框中:
<div id="div1">
Anonymous row
<div id="div2">
<p>Hello World!</p>
</div>
</div>
Every browser will consistently report the height of #div2
as 75px
.想必,剩余的空间被匿名行框占用了,但不幸的是,我对 CSS 表格模型还不够熟悉,无法进一步评论。
关于html - 为什么将表行元素的位置从 'static' 更改为 'absolute' 再回到 'static' 会导致永久高度变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24152542/
猫f1.txt阿曼维沙尔阿杰贾伊维杰拉胡尔曼尼什肖比特批评塔夫林现在输出应该符合上面给定的条件 最佳答案 您可以在文件读取循环中设置一个计数器并打印它, 计数=0 读取行时做 让我们数一数++ if
我正在尝试查找文件 1 和文件 2 中的共同行。如果公共(public)行存在,我想写入文件 2 中的行,否则打印文件 1 中的非公共(public)行。fin1 和 fin2 是这里的文件句柄。它读
我有这个 SQL 脚本: CREATE TABLE `table_1` ( `IDTable_1` int(11) NOT NULL, PRIMARY KEY (`IDTable_1`) );
我有 512 行要插入到数据库中。我想知道提交多个插入内容是否比提交一个大插入内容有任何优势。例如 1x 512 行插入 -- INSERT INTO mydb.mytable (id, phonen
如何从用户中选择user_id,SUB(row, row - 1),其中user_id=@userid我的表用户,id 为 1、3、4、10、11、23...(不是++) --id---------u
我曾尝试四处寻找解决此问题的最佳方法,但我找不到此类问题的任何先前示例。 我正在构建一个基于超本地化的互联网购物中心,该区域分为大约 3000 个区域。每个区域包含大约 300 个项目。它们是相似的项
preg_match('|phpVersion = (.*)\n|',$wampConfFileContents,$result); $phpVersion = str_replace('"','',
我正在尝试创建一个正则表达式,使用“搜索并替换全部”删除 200 个 txt 文件的第一行和最后 10 行 我尝试 (\s*^(\h*\S.*)){10} 删除包含的前 10 行空白,但效果不佳。 最
下面的代码从数据库中获取我需要的信息,但没有打印出所有信息。首先,我知道它从表中获取了所有正确的信息,因为我已经在 sql Developer 中尝试过查询。 public static void m
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我试图在两个表中插入记录,但出现异常。您能帮我解决这个问题吗? 首先我尝试了下面的代码。 await _testRepository.InsertAsync(test); await _xyzRepo
这个基本的 bootstrap CSS 显示 1 行 4 列: Text Text Text
如果我想从表中检索前 10 行,我将使用以下代码: SELECT * FROM Persons LIMIT 10 我想知道的是如何检索前 10 个结果之后的 10 个结果。 如果我在下面执行这段代码,
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我正在尝试在我的网站上开发一个用户个人资料系统,其中包含用户之前发布的 3 个帖子。我可以让它选择前 3 条记录,但它只会显示其中一条。我是不是因为凌晨 2 点就想编码而变得愚蠢? query($q)
我在互联网上寻找答案,但找不到任何答案。 (我可能问错了?)我有一个看起来像这样的表: 我一直在使用查询: SELECT title, date, SUM(money) FROM payments W
我有以下查询,我想从数据库中获取 100 个项目,但 host_id 多次出现在 urls 表中,我想每个 host_id 从该表中最多获取 10 个唯一行。 select * from urls j
我的数据库表中有超过 500 行具有特定日期。 查询特定日期的行。 select * from msgtable where cdate='18/07/2012' 这将返回 500 行。 如何逐行查询
我想使用 sed 从某一行开始打印 n 行、跳过 n 行、打印 n 行等,直到文本文件结束。例如在第 4 行声明,打印 5-9,跳过 10-14,打印 15-19 等 来自文件 1 2 3 4 5 6
我目前正在执行验证过程来检查用户的旧密码,但问题是我无法理解为什么我的查询返回零行,而预期它有 1 行。另一件事是,即使我不将密码文本转换为 md5,哈希密码仍然得到正确的答案,但我不知道为什么会发生
我是一名优秀的程序员,十分优秀!