html - 不存在但存在的边距导致元素下降到新行,因为组合宽度 >100%

标签 html css

在下面链接的页面中,有两个 <section> s 在 <header>它们的组合宽度为 100%。向左 20%,粉红色 <section>右边 80%,绿色 <section>并且没有边框、边距或填充。

除了两个部分似乎有空白导致权利,绿色的部分掉到新的一行。

我知道这一点是因为当我给左边一个负的 margin-right 时,粉红色 <section>右边,绿色<section>然后它们适合在线上。

这个边距是从哪里来的?我怎样才能在不讨厌地应用负边距的情况下摆脱它?

另外,换句话说,我怎样才能得到两个 <section>是否适合一行内联?

这是发生这种情况的页面:https://dl.dropboxusercontent.com/u/270523/help/new.html

最佳答案

空格。

如果你不是这个:

<header id="header">
    <section id="logo">
        <!--<img data-gif="data.gif" data-png="data.png" src="logo.svg" />-->
    </section>
    <section id="input">
        <input id="searchInput" type="text" name="search" autocomplete="off" />
    </section>
</header>

这样做:

<header id="header">
    <section id="logo">
        <!--<img data-gif="data.gif" data-png="data.png" src="logo.svg" />-->
    </section><section id="input">
        <input id="searchInput" type="text" name="search" autocomplete="off" />
    </section>
</header>

它可以并排显示。参见 proof in jsfiddle .

这种对空格的处理是标准布局和内联内容的副产品 - 如果您使用 float 代替,如 other answer 中的回答,空格不应该有影响。这是 HTML/CSS 的一个特性。还有other threads讨论了相同的问题。

简而言之,有两种方法可以解决这个问题:

  • 去除行内 block 元素之间的空白
  • 切换到使用 float:left 而不是 #input、#logo 的内联 block

关于html - 不存在但存在的边距导致元素下降到新行,因为组合宽度 >100%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16129140/

相关文章:

php - &lt;input type ="time"/> 值未插入 mysql 数据库

javascript - PHP - HTML 和 CSS3 到 PDF(和 mPDF VS DOMpdf)

html - 在页面上定位元素

jquery - iPad 的典型 CSS 菜单下拉悬停问题

Jquery设置背景颜色不起作用

javascript - 如何在每个 & 周围插入跨度

html - 我可以在单个 css 选择器中覆盖 bootstrap 的默认值吗?

html - 使用 float 后删除两个 div 之间的间隙

html - 将鼠标悬停在另一个单元格上时更改一个单元格的背景颜色(仅限 css)

html - 如何在文本下方添加多色边框