html - 当一个有文本而另一个没有文本时,为什么这两个相同的内联 div 未对齐?

标签 html css

所以这里有两个相同的 div:

HTML

<div id="left"></div>
<div id="right"></div>

CSS

#left, #right
{
    width: 100px;
    height: 40px;
    border: 1px solid gray;
    display: inline-block;
}

这些渲染得很好,就像两个并排的相同盒子( fiddle :http://jsfiddle.net/URy59/)。

inline divs

但是如果一个 div 中有文本,而另一个 div 中没有文本,它们就会错位! ( fiddle :http://jsfiddle.net/URy59/1/)

这...

<div id="left"></div>
<div id="right">Right</div>

...结果:

misaligned divs

使用 <span> 可重现此行为以及。

是什么原因造成的,为什么?对此有什么好的解决方案?

最佳答案

简短的回答:将vertical-align 属性设置为top

较长的答案:内联元素的 default vertical alignment is baseline .当您的 div 没有内容时,它们会很好地排列。但是,当您添加文本时,浏览器会将 div 向下移动,以便文本位于基线上:

enter image description here

通过将对齐方式更改为顶部,您可以按照需要的方式对齐 div。

jsFiddle example

关于html - 当一个有文本而另一个没有文本时,为什么这两个相同的内联 div 未对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21990281/

相关文章:

css - 尽管 z-index 较低,但第二级菜单隐藏了第三级

javascript - 视差图像向左飞

jquery - 如何限制每个 session 显示一次预加载器?

javascript - 基于滑动的 html5 Canvas 游戏

html - 调整大小时使导航栏不 float 到下一行

Javascript 照片前进得太远

html - Firefox 和 chrome 的 CSS 选择器扩展

css - 谷歌地图组件可以从它所在的外部卡中拖动,缩放控制移动

html - 两个 block 之间的空间

css - 如何在小型设备的中间列中设置 div 位置以使此发票标题具有响应性