- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
CSS2.1 规范 mandates that overflow
other than visible
establish a new "block formatting context" .这让我觉得很奇怪,一个明显目的是 overflow hidden 而不影响布局的属性实际上确实在很大程度上影响了布局。
似乎是 visible
以外的溢出值结合两个完全不相关的特征:是否创建了 BFC 以及是否隐藏了溢出。如果没有 BFC,"overflow:hidden"并不是完全没有意义,因为 float 历史上可以溢出其父元素,hiding the overflow without changing the layout似乎很明智。
这个决定背后的原因是什么,假设他们是已知的?制定规范的人是否描述了为什么要这样做?
最佳答案
我代表您在邮件列表中询问了这个问题;可以找到线程 here .总之,this has to do with scrolling content for the most part :
Fundamentally, because if the spec didn't say this, then having floats intersect with something that's scrollable would require the browser to rewrap (around intruding floats) the contents of the scrollable element every time it scrolls. This is technically what CSS 2.0 required, but it was never implemented, and it would have been a huge problem for speed of scrolling.
-David
overflow: visible
的盒子的场景。 (默认),其中第一个包含一个超出其父级高度的浮点数:
<div>
<p>...</p>
</div>
<div>
<p>...</p>
<p>...</p>
</div>
/* Presentational properties omitted */
div {
height: 80px;
}
div:first-child:before {
float: left;
height: 100px;
margin: 10px;
content: 'Float';
}
overflow
设置为除
visible
以外的其他内容,这会导致内容不仅被框的边界剪裁,而且变得可滚动。如果第二个盒子有
overflow: auto
,这就是浏览器实现原始 CSS2 规范的样子:
overflow: auto
有意义和
overflow: scroll
,但是
overflow: hidden
呢? ?
overflow: hidden
只是通过剪切隐藏内容,不能滚动。
This is not completely true :
While scrolling UI is not provided, the content is still scrollable programmatically, and a number of pages perform just such scrolling (e.g. by setting
scrollTop
on the relevant element).-Boris
overflow: hidden
,这就是它的样子。然后使用以下 JavaScript 滚动到底部:
var div = document.getElementsByTagName('div')[1];
div.scrollTop = div.scrollHeight;
overflow
的框。除
visible
以外的值生成一个新的 BFC 主要是为了一致性。
overflow
除
visible
以外的值仅对于第二个框,浏览器所做的是将整个框推到一边为 float 让位,因为该框现在创建了一个新的块格式上下文来包含其内容,而不是围绕 float 流动。此特定行为在以下
paragraph 中指定:
The border box of a table, a block-level replaced element, or an element in the normal flow that establishes a new block formatting context (such as an element with 'overflow' other than 'visible') must not overlap the margin box of any floats in the same block formatting context as the element itself. If necessary, implementations should clear the said element by placing it below any preceding floats, but may place it adjacent to such floats if there is sufficient space. They may even make the border box of said element narrower than defined by section 10.3.3. CSS2 does not define when a UA may put said element next to the float or by how much said element may become narrower.
overflow: auto
的样子例如:
clear: left
或
clear: both
无论它是否建立了自己的 BFC,它都会被推下,而不是被推到一边。
overflow: auto
相反,到第一个框时,由于其固定高度(设置为
80px
),浮点数与其余内容一起被剪切到其包含框内。在上面给出的示例代码中:
height: auto
(默认值),通过覆盖或删除
height: 80px
从上面声明,它然后延伸到 float 的高度:
height: auto
生成一个新的块格式化上下文(即块格式化上下文根)将垂直延伸到其 float 的高度,与常规框不同,它不仅足以包含其流入内容。更改已记录在案
here和
here .导致缩小盒子以使其不与浮点相交的副作用的更改被记录在案
here .
关于overflow - 为什么 CSS2.1 定义了 "visible"以外的溢出值来建立新的 block 格式化上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9943503/
我的 blockly.js 文件中有以下代码 Blockly.Blocks['account_number'] = { // Other type. init: function() {
首先抱歉我的英语不好,我正在开发 Image Splitter 应用程序并且已经完成,但是现在的要求是当图像被分割(分成几 block /chunks)那么图像 block 的每一 block (ch
#value: 消息的返回值,当发送到一个 block 时,是该 block 中最后一句话的值。所以 [ 1 + 2. 3 + 4. ] value 计算结果为 7。我发现有时很难使用。有没有办法显式
我想构建一个包含 3 div 的响应式导航栏相同的 width和 height . 我申请了 inline-block到每个 block ,我得到一个我不理解的行为。 问题是,第三 block 由 2
我希望使用 Blockly 来允许非技术人员用户指定测试脚本。 它的一部分需要一个文件选择器,但是,我看不到 Blockly 有一个。是吗? 实际上,我找不到完整的标准 block 列表。谁有网址?
仅当您位于父 block 内部时,父 block 的 props.isSelected 才为 true,但当您在该 block 的 innerBlocks 内进行编辑时则不然。 如何从父 block
仅当您位于父 block 内部时,父 block 的 props.isSelected 才为 true,但当您在该 block 的 innerBlocks 内进行编辑时则不然。 如何从父 block
我想创建一个具有不同背景颜色 block 和不同悬停颜色 block 的导航栏 block 。我可以分别创建不同的悬停颜色 block 或不同的背景颜色 block ,但不能一起创建。所以请告诉我如何
我正在使用看到的代码 here定期执行代码: #define DELAY_IN_MS 1000 __block dispatch_time_t next = dispatch_time(DISPATC
为什么 block 必须被复制而不是保留?两者在引擎盖下有什么区别?在什么情况下不需要复制 block (如果有)? 最佳答案 通常,当您分配一个类的实例时,它会进入堆并一直存在,直到它被释放。但是,
我想弄清楚我这样做是否正确: 如果我有一个 block ,我会这样做: __weak MyClass *weakSelf = self; [self performBlock:^{
我想制作一个 4 block 导航菜单,虽然我已经显示了一个 block ,然后单击打开第二个 block ,从第二个开始选择并再次单击出现第三个 block ,第四个 block 相同...这是我的
例如,这样更好吗? try { synchronized (bean) { // Write something } } catch (Int
我想让一只乌龟检查前方小块的颜色并决定移动到哪里。如果前面的补丁不是白色的,那么乌龟向左或向右旋转并移动。我的 If 决策结构中出现错误,显示“此处应为 TRUE?FALSE,而不是 block 列表
我想创建一个 block 对角矩阵,其中对角 block 重复一定次数,非对角 block 都是零矩阵。例如,假设我们从一个矩阵开始: > diag.matrix [,1] [,2] [
我是区 block 链新手。突然我有一个问题,我们是否可以通过区 block 号来访问以太坊区 block 链上之前的区 block 数据。 例如我创建了一个block1、block2。 block
我是区 block 链新手。突然我有一个问题,我们是否可以通过区 block 号来访问以太坊区 block 链上之前的区 block 数据。 例如我创建了一个block1、block2。 block
我创建了一个等距环境,全部使用 Javascript 和 HTML5 (2D Canvas),大部分情况下工作正常。我面临的问题是使用不同高度的图 block ,然后对图 block 上的对象索引进行
这是令我困惑的代码: public Integer getInteger(BlockingQueue queue) { boolean interrupted = false; try
我有一个基于 TPL 数据流的应用程序,它仅使用批处理 block 和操作 block 就可以正常工作。 我已经添加了一个 TransformBlock 以尝试在发布到批处理 block 之前从源中转
我是一名优秀的程序员,十分优秀!