- 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"
最近我点亮了 an interesting article about the CSS z-index property .我找到它是因为我正在寻找一个答案,说明为什么前一个 div 的溢出文本显示在后一个 div 的背景之上,但不显示在后一个 div 的跨度背景之上,就像这里 ( jsfiddle ):
#overflowed {
background-color: green;
width: 300px;
height: 100px;
}
#non-floated {
background-color: pink;
width: 300px;
}
#non-floated span {
background-color: yellow;
}
对此的解释是浏览器以特定顺序绘制元素,这基于所谓的堆叠顺序:
因此对于布局中的根元素和每个定位元素,浏览器创建这样的堆叠顺序,然后绘制所有这些顺序,抱歉双关语,各自的顺序。
所以这就是为什么内联元素和文本(那些创建内联框的元素)被绘制在 block 级元素之上,即使这些 block 元素出现在文档的后面,就像在我上面的 jsfiddle 中一样。
所以问题本身。
我仍然找不到答案,为什么这些内联框,如果它们被创建,内联元素和 float 元素内的文本没有根据 float 元素之外的其他内联框绘制上面堆叠顺序的方案,就像这里 ( jsfiddle ):
#overflowed {
background-color: green;
width: 300px;
height: 100px;
}
#floated {
background-color: pink;
width: 300px;
float: left;
}
#floated span {
background-color: yellow;
}
在这里你可以清楚地看到,文档中第一个 div 的文本,它不是 float 的,绘制在 span 的黄色背景之上(之后),而 span 是一个内联元素,并且根据上面的堆叠顺序应该在 float 容器(它的背景和边框)之后绘制。
那么有人对此有可靠的解释吗?我想 float 元素会创建一些类似它们自己的堆叠顺序的东西,就像定位元素一样,但我还没有在网络上找到任何提及这一点的内容。
最佳答案
CSS2.1指定元素的绘制顺序如下:
Within each stacking context, the following layers are painted in back-to-front order:
- the background and borders of the element forming the stacking context.
- the child stacking contexts with negative stack levels (most negative first).
- the in-flow, non-inline-level, non-positioned descendants.
- the non-positioned floats.
- the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.
- the child stacking contexts with stack level 0 and the positioned descendants with stack level 0.
- the child stacking contexts with positive stack levels (least positive first).
float 不会自行建立堆叠上下文。只有当它们位于 并且 的 z-index 不是自动的(不包括 any of the numerous other ways an element may do so )时,它们才会这样做。否则,它们将与其他元素(包括内联元素)参与相同的堆栈上下文,但需要注意以下事项(来自上面的同一链接):
Within each stacking context, positioned elements with stack level 0 (in layer 6), non-positioned floats (layer 4), inline blocks (layer 5), and inline tables (layer 5), are painted as if those elements themselves generated new stacking contexts, except that their positioned descendants and any would-be child stacking contexts take part in the current stacking context.
由于您的 fiddle 中的所有元素都参与相同的堆叠上下文,并且您的 float 元素未定位(#4),因此溢出 div 的内联内容(#5)绘制在上方 float 元素 和 它的后代元素,即使 float 元素在源代码顺序中出现得较晚。
不过,溢出的 div (#1) 的 background 绘制在 float 的下方,因为根据上面的第二个引用,float 的背景被认为是 float 本身的一部分.你可以通过giving the float a negative margin看到这个:
#floated {
background-color: pink;
width: 300px;
float: left;
margin-top: -50px;
}
关于html - float 元素是否像定位元素一样创建单独的堆叠上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34586972/
我必须从我的网站中删除()一些iem,然后将它们追加()回来,但是当我追加它们时,它们出现在不同的地方,而我希望它们完全显示在它们以前的同一个地方是。 有什么解决办法吗? 这是一个沙箱,请随意更新(注
一个。图片 (960x7)b. div(宽度:960,填充:10) 我想定位 (a),使其距顶部 50 像素,居中。我想将 (b) 放置在 (a) 的正下方,没有空格。 我的 CSS 如下: @cha
放置某物的正确方法是什么?我有一个在中心显示博客文章的 div。 "" rel="bookmark"> BY LOUIS MOORE ON " pubdate>
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭1
我已经成功地使用了 position:fixed 设置 CSS/CSS3 并且工作得很好! 我几天前看到了这个,想知道他们是如何实现向下滚动时发生的效果的,菜单栏在滚动前处于一个位置,然后转到顶部并自
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improv
接口定义 能够对于文字、段落乃至任何元素的精准定位 并做出增删改查,都是在开发一款富文本编辑器时一项最基本也是最重要的功能之一。让我们先来看看Slate中对于如何在文档树中定位元素是怎么定义的
例如,使用 WPF 在选项卡控件的最左上角定位三个 tabitem 和在最右上角定位一个 tabitem 的正确方法是什么? 我尝试通过更改边距将第四个 tabitem 向右移动,但这并没有产生好的结
我正在尝试使用 Javascript 创建一个跟随鼠标在页面上移动的东西。我希望它是米老鼠,我希望他的眼睛跟随鼠标移动他的眼球...这是我到目前为止的代码(从网络上的各个地方收集,因此归功于编写该部分
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 9 年前。 Improve
我试图将两个按钮放置在左上角。但它们始终位于顶部中心。 我已经尝试过这个: jp = new JPanel(); jp.setLayout(new GridBagLayout()); GridBagC
我在使用 JQuery 向下滑动功能时遇到问题。我可以让它正常工作,但是我向下滑动的元素的位置会根据视口(viewport)的大小而变化。我想做的是将它与它滑动的元素联系起来。 This JSfidd
我正在尝试创建一个棋盘,并将其放置在屏幕中间,但到目前为止我无法将它直接放在中间。我不想将位置硬编码到屏幕上,因为我要处理不同的屏幕尺寸。 var winsize = cc.director.
我正在尝试从 mysql 中的 2 个字符串点之间提取数据,我的示例脚本是 'otherdata&p1=textneeded&otherdata' 我需要拉出“textneeded”位,“P1=”是起
如何在 JavaFX 中设置按钮的位置?我的代码: bZero = new Button(); bZero.setPrefSize(45, 20); mainPane.getChildren().ad
我有一个 iPhone 应用程序,我可以在其中显示一系列图像。当用户点击图像时,我需要将该图像带到第一个位置,表明它是所选图像。我可以通过子类化实现 uiscrollview 中的点击。但是我无法将
在下图中,它显示了一个image、textbox 和一个css menu image 我的 CSS 菜单非常完美。我终于按照我需要的方式得到了它。我的问题是我需要导航栏中央的文本框,然后我需要我的图像
我必须创建一个看起来像这样的 div id为2的div应该出现在图片的右下角,图片的大小不固定id=2的div应该应用什么css id =1 的 div 没有定义位置,所以使用默认值,图像也是
如何将我的文本和图像对齐在同一行? 每当我使用 padding 或 margins 时,它就会崩溃到我正在使用的圆形图像中。 #alignPhoto { padding-right: 50px;
简单的问题,如何定位具有整个页面引用的元素? 在我的例子中,我在标题中得到了一个 float 图像,然后是 2 组标题。当我使用时: text-align: center; 它使用图像宽度端和页面其余
我是一名优秀的程序员,十分优秀!