- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
有人可以解释为什么我的 div
和 table-layout:fixed
正在改变其父元素的宽度(在本例中为 body
)将其设置为 100% 而它不应该是 100%,因为它已定位?
body {
border: 2px solid red;
height: 100vh;
margin:0;
padding: 0;
position: absolute;
}
.c{
display: table;
width: 80%; /* Any percentage value different from 0 */
table-layout:fixed;
outline: 2px solid blue;
}
<div class="c">d</div>
正如您在上面看到的,添加 table-layout:fixed
强制正文为全宽以及 div
上的百分比 width
将相对于 body
的 width
起作用!
下面的代码片段不是这种情况,其行为在某种程度上是符合逻辑和直观的:
body {
border: 2px solid red;
height: 100vh;
margin:0;
padding: 0;
position: absolute;
}
.c{
display: table;
width: 80%;
/* table-layout:fixed; */
outline: 2px solid blue;
}
<div class="c">d</div>
table-layout:fixed
如何影响在这种情况下定位的父元素?
作为旁注,使用具有 width
的像素值会产生合乎逻辑的结果:
body {
border: 2px solid red;
height: 100vh;
margin:0;
padding: 0;
position: absolute;
}
.c{
display: table;
width: 200px;
table-layout:fixed;
outline: 2px solid blue;
}
<div class="c">d</div>
我们还可以通过这种奇怪行为产生一些溢出:
body {
margin:0;
position:relative;
width:300px;
border-top:20px solid green;
}
.container {
border: 2px solid red;
height: 100vh;
position: absolute;
}
.c {
display: table;
width: 120%;
table-layout: fixed;
outline: 2px solid blue;
animation:change 2s linear infinite alternate;
}
@keyframes change {
from{width:1%;}
to {width:150%}
}
<div class="container">
<div class="c">d</div>
</div>
最佳答案
看起来像you're not the first to bring this up .不过,你可能是第二个。
需要明确的是,这是两个问题的组合:
The width of an absolutely positioned element is shrink-to-fit.不知何故,收缩以适应宽度被确定为与放弃元素的包含 block 允许的一样宽。 (绝对定位的 body
的包含 block 是初始包含 block 。)
第 2 期是 pretty easy to write off :
implementations agree not to calculate the width of either element more than once.
即body
使用 shrink-to-fit 调整大小,然后表格设置为该宽度的 80%,body
的大小为 "not computed again" .唯一的“未定义”是规范不要求或不允许,或者实际上不关心实现的作用。
因此,问题归结为为什么在 #2 中确定表的大小之前收缩以适合在 #1 中产生“尽可能宽”。以下是规范如何描述放弃元素的收缩以适合:
[...] Roughly: calculate the preferred width by formatting the content without breaking lines other than where explicit line breaks occur, and also calculate the preferred minimum width, e.g., by trying all possible line breaks. CSS 2.1 does not define the exact algorithm. Thirdly, calculate the available width: this is found by solving for 'width' after setting 'left' (in case 1) or 'right' (in case 3) to 0.
Then the shrink-to-fit width is: min(max(preferred minimum width, available width), preferred width).
但这并没有告诉我们为什么,甚至那个,固定布局表的首选宽度是“与其包含 block 允许的一样宽”。 css-sizing-3 和 css-tables-3 似乎都没有包含答案。
根据 David Baron (来自同一线程),他在 Gecko 上工作:
Fixed-layout tables report an intrinsic max-content inline size as infinite.
(请注意,“最大内容内联大小”与“首选宽度”的含义相同)
这就是我们的答案。与自动布局表相比,固定布局表的无限最大内容内联大小是导致此表的绝对定位父级被拉伸(stretch)到其自身包含 block (初始包含 block )允许的宽度的原因。
而且,至少就目前而言,这与我获得的官方消息来源一样接近,因为我无法通过阅读 css-sizing-3 得出相同的结论,而且我不确定 David 的声明是否正确仅基于 Gecko 的行为、所有实现的行为或指定的行为。
关于html - 为什么表格布局是: fixed affecting the width of the parent element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51801266/
如果我需要选择第 10 个父级,是否有更简洁的方法,然后重复 .parent() 10 次? $('#element_id').parent().parent().parent().parent().
从 angularJS 指南中的“如何创建通信指令”开始,https://docs.angularjs.org/guide/directive , 我正在尝试使用该布局来制作可导航的表单。 问题在于指
我有一个 jQuery 函数,需要获取元素父元素的位置。 它看起来像: function show(e) { //debugger; var nextTab
我正在尝试修复这个难看的代码。 RadGrid gv = (RadGrid) (((Control) e.CommandSource).Parent.Parent.Parent.Parent.Pare
我有一个 A 标签,可以触发它的曾曾曾祖 parent 的动画。以下所有方法都可以,但哪一个最有效,为什么? $(this).parent().parent().parent().parent().p
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我在尝试定位绝对定位的 div 时遇到了一些问题。我猜它的工作方式应该是这样,但是我希望它与父对象的父对象而不是父对象一起使用,因为我有一个下拉列表,当我希望它像第一个一样保持在顶部时,它会跟随父对象
我正在做一些非常基本的 jQuery 东西,真正开始,我经常通过做类似的事情来向上导航 dom $(this).parent().parent().addClass('hello'); 我只是想知道是
此 HTML 结构有一个 div#page,其中当前页面内容将通过 Ajax 加载。内容始终由 section 标记组成,这些标记可以具有动态高度(相对于浏览器的百分比)或静态高度(以像素为单位)。
在 javascript 中是否有一种简单的方法来定位父对象的父对象? 我使用 this.parentNode 作为函数的元素来选择父节点,我尝试了 this.parent.parentNode 和
当遍历 pager.Pages 对象的 foreach 循环时,$data 是 self(正如预期的那样)。但是,$parent 应该是寻呼机对象,但它返回的是 WaterQualityResultV
在架构中,我想根据父级的 sibling 调整架构。 例如:如果 toggleMonday 为真,那么 weekdays -> monday 应该有一个特定的验证模式。 现在下面的例子有效。但是,它非
我想要完成的是,当用户将焦点放在文本框上时,其中的字段集将添加一个类“active_fieldset”,以便提供用户在表单中的位置的良好视觉提示。使用以下 javascript,它确实会影响父字段集,
我创建了这个函数来保存我的taches sauverTache(tache:Tache){ this.editionEnCours = true; tache.estReelle =
所以..这是我的问题..我有以下代码(示例): var GameObject = function (posX, posY, width, height) { this.posX = posX;
所以,我是 jQuery 的新手,我正在尝试更改关于函数触发器的 2 个级别的 div: 这是我的第一次尝试:我尝试找到最接近的“.node”,它是所有其他 div 的父级并编辑子 div。 fun
我想了解为什么使用 ng-repeat在repeat 的item 上有某个controller,那个item 的parent 和那个item 的祖父是同一个controller。我期待祖父成为父 Co
我想从我的组件 Controller 之一将 jsonModel 设置为我的 SAPUI5 组件。在组件内,我使用应用程序或 splitapp。 我想避免通过 ID 获取元素。从组件内的某个位置获取层
我不确定如何在标题上准确地表达出来,因为问题在我的场景中太具体了,但无论如何基本上我有两个类似于下面的外部类: class Config { public level: number = 1;
在我正在编写的这个脚本中,我发现自己连续使用 .parent() 最多七次来获取元素。虽然这有效,但似乎可以/应该有一种更简单的方法来完成我不知道的这个/功能。除了更多元素上更具体的类/ID 之外,还
我是一名优秀的程序员,十分优秀!