html - 具有宽度的常规段落下方的右浮动元素

标签 html css

HTML:

 <div id='container'>
  <p>This is some text contained within a small-ish box. I'm using it as an example of how placing your floated elements in different orders in your HTML can affect your layouts. For example, take a look at this great photo placeholder that should be sitting on the right.</p>
 <img src='image.gif'>
 </div>

CSS:

#container {
    width: 280px;
    margin: 0 auto;
    padding: 10px;
    background-color: #aaa;
    border: 1px solid #999;
}

p {
    width: 100px;
}

img {
    float: right;
}

结果:https://jsfiddle.net/y9Lqjm1f/

为什么如果段落的宽度足够小,右浮动元素不会出现在容器 div 的顶部?

最佳答案

因为 img 元素被放置在 p 元素之下,它作为一个 block 元素 遵循正常流程。

img 的单独流,是由于它应用了 float 样式而产生的,仅在 p 下方开始。

如果您在 img 下面添加另一个 p,它将遵循正常的布局流程,就好像 img 不存在一样,如下所示:https://jsfiddle.net/mkarajohn/y9Lqjm1f/1/

简而言之,为了让 img 出现在顶部,它必须放在标记的最前面,如下所示:https://jsfiddle.net/mkarajohn/y9Lqjm1f/2/

另见 this 关于 floatblock element

一般来说:

  • float 元素遵循前一个 block 元素的布局流,这意味着它们出现在前一个 block 元素的下方
  • 跟随 float 元素的 block 元素忽略 float 元素,并保持其正常布局流,就好像 float 元素不存在一样。

关于html - 具有宽度的常规段落下方的右浮动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35965750/

相关文章:

html - 为什么我的 HTML/CSS 网站顶部有空白区域?

css - float 元素 <br clear ="both"/> 以更好的 css 方式?

c# - ASP MVC 5 和 Bootstrap 中表单控件的对齐不正确

javascript - 将 Golang 变量传递到 Javascript

html - css slider ,删除不需要的空间?

javascript - 如何验证从浏览器中运行的 JS 生成的 html?

javascript - Vue 不将事件传递给 child

html - 在列表框中创建滚动条

css - 如果从 SSL 读取样式表,PDF 转换突然失败

javascript - 将包含图像标签的 li 元素的 div 转换为幻灯片