html - 行内 block 元素似乎无缘无故地换行?

标签 html google-chrome css

我有一些非常基本的 HTML/CSS 无法正常工作。基本上我的 body 设置为 400 像素宽。然后我在主体内部有两个 div,其显式宽度分别为 300 像素和 100 像素。此外,这两个 div 都设置为 display: inline-block。由于某种原因,100px 的 div 超出了主体的内容区域并出现在其下方。我不知道为什么会这样。如果我将宽度设置为 100px 到 96px,它就可以工作。但是,如果我将其设置为 97px、98px、99px 或设置回 100px,则不起作用。我觉得这种行为很奇怪。谁能解释一下出了什么问题?

请注意,我正在 Chrome(Beta channel )上对此进行测试。代码如下。

CSS:

body {
    margin: 4px;
    width: 400px;
    height: 250px;
    border: 1px solid black;
}

.list-container {
    display: inline-block;
    width: 300px;
    height: 100%;
    background-color: red;
}

.button-container {
    display: inline-block;
    width: 100px;
    height: 100%;
    background-color: blue;
}

HTML:

<body>

<div class="list-container">
</div>

<div class="button-container">
</div>

</body>

最佳答案

这是因为 white-space 在 html 中的折叠方式。

如果您删除两个 div 元素之间的换行符,一切都很好:

<div class="list-container">
</div><div class="button-container">
</div>

JS Fiddle demo .

您也可以只注释掉 div 之间的内容:

<div class="list-container">
</div><!--

--><div class="button-container">
</div>

JS Fiddle demo .

或者甚至将 body 元素的 font-size 设置为零(但您必须为子元素重新定义它,显然:

body {
    margin: 4px;
    width: 400px;
    height: 250px;
    border: 1px solid black;
    padding: 0;
    font-size: 0;
}

JS Fiddle demo .

关于html - 行内 block 元素似乎无缘无故地换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6284894/

相关文章:

html - Div 中的 Twitter Bootstrap 文本超出了其列

html - 如何使用 h1 居中标题并删除背景

css - Firefox 故障 CSS 转换

javascript - magento jquery toggle 不能在主页上工作但在产品页面上工作

javascript - window.location.hash向下滚动不平滑只能向左滚动

jquery - Bootstrap dropdown-toggle 闪烁错误

javascript - 奇怪的 Chrome 图像行为 :

javascript - Access-Control-Allow-Origin 不允许 Origin http ://127. 0.0.1

html - 即使声明了 webkit 关键帧,CSS 动画边框底部也无法在 Safari 中工作

css - 使用 CSS 的 Div 布局问题