css - 为什么我的图标在 DIV 布局中从上到下排列而不是从左到右排列?

标签 css html

我将这 3 个图标封装在单独的 DIV 中,所有这些都封装在一个 DIV 中:

<div id="icons">

  <div id="divtxt" class="divicon">
    <img src="/icons/text.png" id="icontxt" class="icon"/>
  </div>

  <div id="divpdf" class="divicon">
    <img src="/icons/pdf.png" id="icondoc" class="icon"/>
  </div>

  <div id="divrtf" class="divicon">
    <img src="/icons/rtf.png" id="iconrtf" class="icon"/>
  </div>
</div>

我设置了一些简单的样式,但无法弄清楚为什么这些图像是从上到下而不是从左到右排列的:

  div#icons
  {
    width:200px;
    height: 100px;
  }

  div.divicon
  {
    margin: 0 0 0 0;
    padding: 0 0 0 0;
    border: 0 0 0 0;
  }

如有任何建议,我们将不胜感激。

最佳答案

现在更全面一些:

您看起来只想要一排图标。使用您的 HTML,您需要 float 包含图标的 div,以便它们彼此相邻。您需要 float 的原因是因为 div 是 block 级元素(与内联相反),这意味着它旁边的水平空间中不能存在任何内容。

您可以通过将 float: left; 规则添加到 div.divicon 来实现此效果

float 有两件事:它将 block 元素从页面流中移出,允许其他元素存在于它旁边(或围绕它流动),它减小框的宽度以适应内容。就父元素而言, float 元素没有高度。为了说明这一点,只需尝试为 #icons 提供背景颜色或边框。您会注意到它不会显示 - 或显示为 1px 线。

为了让父级识别 float 元素的高度,您需要告诉父级应使用此规则 overflow hidden :

#icons { overflow:hidden; }

这在 IE 中也有效,但并非总是如此,因此有时您可能需要设置高度或宽度或执行 zoom:1 这往往会修复很多 IE 错误(查找“hasLayout错误”,如果你想了解更多信息)。

现在换一个解决方案:

您看起来只想要一排图标。除非有理由将图像包围在 div 中(在您的示例中没有),否则我建议您这样做:

<div id="icons">
    <img src="/icons/text.png" id="icontxt" />
    <img src="/icons/pdf.png" id="icondoc" />
    <img src="/icons/rtf.png" id="iconrtf" />
</div>

#icons { /* rules for our container go here */ margin:0; padding:0; /* etc... */ }
#icons img { /* rules for your icons */ border:none; margin:0 2px; /* etc... */ }

我已经删除了图像上多余的 div 和多余的类属性。由于图像是内联元素,因此您不需要随意使用 float 元素,也不会有任何可能导致 divitis 的额外 div,这是一种影响许多网站并通过不良建议传播的退行性 HTML 疾病。请记住,只使用您需要的东西 - 不要仅仅因为它在那里就使用它。

希望对您有所帮助,

达科

关于css - 为什么我的图标在 DIV 布局中从上到下排列而不是从左到右排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1107670/

相关文章:

jquery - IE7 和 8 不触发附加在表内的元素的 jQuery 单击事件

javascript - 如何将工具提示应用于 JSP 中父选择标签已经存在的选项标签?

html - 语义 ui 按钮未正确显示

css - 如何在 Bootstrap 中使用垂直对齐

jquery - 切换下拉菜单 : define starting position

css - 下拉菜单在 IE 中不起作用

html - 菜单问题,没有出现在手机上

PHP 联系表单发送空电子邮件

jquery - 选择多个提交问题 - 如果不选择,则 POST 为空

javascript - 滚动经过另一个 div 后让 div 停留在页面顶部?