html - float 元素旁边的列表样式

标签 html css

看看我的示例,第二个列表样式完全关闭,因为它紧挨着 float 元素(除非您添加 inline-block 样式)。

问题是我无法知道它何时在 float 元素旁边并且它必须像正常情况一样在没有它的情况下工作(即必须是 block)。

如何修复第二个列表样式?


它是富文本编辑器内容,我不能将图像和第二个列表包装到 div 中并使用 flexbox 或其他东西,它必须自然流动。

编辑:即使是浏览器也会感到困惑 - 如果您按“运行”的次数足够多,公告有时会出现在文本旁边,有时会出现在左侧图像上方。

.wrapper {
  padding: 20px;
  border: 2px dashed #ec6161;
}

.wrapper::after {
  content: "";
  clear: both;
  display: table;
}

ul {
  /* display: inline-block; */
}

img {
  margin-right: 20px;
  max-width: 50%;
  float: left;
}
<div class="wrapper">
  <ul>
    <li>
      <div>Item 1</div>
      <ul>
        <li>
          <div>Subitem 1</div>
        </li>

        <li>
          <div>Subitem 2</div>
        </li>
      </ul>
    </li>

    <li>
      <div>Item 2</div>
    </li>
  </ul>

  <img src="http://www.pethealthnetwork.com/sites/default/files/content/images/how-introduce-new-cat-home-2-179981446.jpg" />

  <ul>
    <li>
      <div>Item 1</div>
      <ul>
        <li>
          <div>Subitem 1</div>
        </li>

        <li>
          <div>Subitem 2</div>
        </li>
      </ul>
    </li>

    <li>
      <div>Item 2</div>
    </li>
  </ul>
</div>

最佳答案

您需要清除 float 。使用 clear:bothUL

这是更新后的 fiddle :

.wrapper {
  padding: 20px;
  border: 2px dashed #ec6161;
}

.wrapper::after {
  content: "";
  clear: both;
  display: table;
}

ul {
  /* display: inline-block; */
  clear:both;
}

img {
  margin-right: 20px;
  max-width: 50%;
  float: left;
}
<div class="wrapper">
  <ul>
    <li>
      <div>Item 1</div>
      <ul>
        <li>
          <div>Subitem 1</div>
        </li>

        <li>
          <div>Subitem 2</div>
        </li>
      </ul>
    </li>

    <li>
      <div>Item 2</div>
    </li>
  </ul>

  <img src="http://www.pethealthnetwork.com/sites/default/files/content/images/how-introduce-new-cat-home-2-179981446.jpg" />

  <ul>
    <li>
      <div>Item 1</div>
      <ul>
        <li>
          <div>Subitem 1</div>
        </li>

        <li>
          <div>Subitem 2</div>
        </li>
      </ul>
    </li>

    <li>
      <div>Item 2</div>
    </li>
  </ul>
</div>

关于html - float 元素旁边的列表样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55336744/

相关文章:

html - 打印出 html5 Canvas ?

javascript - 在 javascript 中设置时捕获 HTML 错误输入验证(显示警告)或之前检查验证

javascript - 使用带有 html css 和 js 的 jqplot 在 ios xcode 上创建饼图的问题

css - 按钮对齐在 FF 中不正确?

javascript - 如何将 'Prevent this page from creating additional dialogs' 默认为 "OK"选项

html - 如何考虑html anchor 上的主体边距

html - 使用 Bootstrap 动态居中水平图像

html - ASP.net CSS 最大宽度在 IE8 中不起作用

html - 激活时在文本框周围制作发光效果

HTML 如何使表格的每一行都可滚动?