当浮动元素占用一些空间时,"普通"文本就会腾出空间来容纳浮动元素.但普通文本周围的边界不与浮动元素相交,而是与浮动元素相交.

在下面的例子中,如何在蓝色框开始之前使第一个红色框结束,并且没有重叠?而让不需要与浮动元素共享空间的第二个红框仍然占据100%?

div#toc {
  float: right;
  width: 300px;
  padding: 20px;
  border: 1px solid blue;
}

div.warn {
  padding: 20px;
  border: 1px solid red;
}
<div id="toc">
  <h2>Table of contents</h2>
  <ol>
    <li>Chapter 1</li>
    <li>Chapter 2</li>
    <li>Chapter 3</li>
  </ol>
</div>
<div id="main">
  <h1>Chapter 1</h1>
  <p>In the beginning ...</p>
  <div class="warn">
    Fairy tale, watch out!
  </div>
  <p>... and were married happily ever after.</p>
  <div class="warn">
    Don't retell!
  </div>
</div>

推荐答案

建立独立格式上下文的块级框会缩小以避免浮动.让盒子建立块格式化上下文(在这种情况下是最合适的独立格式化上下文类型)的最直接方法是赋予它display: flow-root.

在浮动上使用margin来创建间隙.

div#toc {
  float: right;
  width: 300px;
  padding: 20px;
  border: 1px solid blue;
  margin-left: 10px;
}

div.warn {
  padding: 20px;
  border: 1px solid red;
  display: flow-root;
}
<div id="toc">
  <h2>Table of contents</h2>
  <ol>
    <li>Chapter 1</li>
    <li>Chapter 2</li>
    <li>Chapter 3</li>
  </ol>
</div>
<div id="main">
  <h1>Chapter 1</h1>
  <p>In the beginning ...</p>
  <div class="warn">
    Fairy tale, watch out!
  </div>
  <p>... and were married happily ever after.</p>
  <div class="warn">
    Don't retell!
  </div>
</div>

Html相关问答推荐

springBoot + Thymeleaf:基于Locale设置页面语言

输入宽度在表格显示上不起作用FLEX溢出隐藏Firefox

我怎样才能在我的网站上制作花哨的角落

OnChange函数未在下拉列表中使用一个选项触发

使用CSS和Slick Carcass使图像适合屏幕

Chrome浏览器错误:上的主题验证判断https://pagead2.googlesyndication.com/失败

如何删除FONT创建的文本下方的空格

如何使用css创建六边形棋盘?

带有数据 URI 的音频在 Chrome 中失败

在HTML使用link标签导入外部CSS时出现元素link不允许使用尾斜杠错误

Github上部署需要花费几小时时间:等待github pages部署批准

Flex布局中,当父元素高度较高时,交叉轴上出现额外的空白问题.

如何将元素均匀分布到容器的边缘?

将 HTML 元素粘贴到容器底部,而不剪裁其顶部

子 div 在父 div 中溢出

Mediawiki css/html 信息框创建空白行

我用 ejs 修复了一个奇怪的语法错误,我想知道问题出在哪里

Tailwind CSS 复选框样式不起作用

使用 bootstrap-icons 的未排序图标堆栈

如何使列表的第一个元素比 css 中的其他元素大?