display:inline-block和overflow:hidden导致不同的垂直对齐方式

时间:2013-02-14 07:45:51

标签: html

以下代码在不同浏览器中的呈现方式不同 (IE = FF =高于基线,Chrome =基线)。

  1. 是谁的错?我应该在哪里提交错误报告?

  2. 您知道如何解决这个问题的跨浏览器吗?如果我改变了垂直对齐方式,我会在某些浏览器中使用它,而不是其他浏览器。

  3. <!doctype html>
    <html>
    <head>
        <style>
            .a {
                display: inline-block;
                overflow: hidden;
                color: red;
            }
        </style>
    </head>
    <body>
        baseline__<div class="a">test</div>__baseline
    </body>
    </html>
    

    http://jsfiddle.net/T2vQj/

3 个答案:

答案 0 :(得分:4)

Chrome似乎出错了。 CSS 2.1 spec

  

'内联块'的基线是其最后一个线框的基线   在正常流程中,除非它没有流入线框或如果   它的'overflow'属性有一个除'visible'以外的计算值   在哪种情况下,基线是底部边缘边缘。

由于溢出属性计算的内容不是“可见”,因此内联块的基线是底部边缘边缘,它位于包含行框的基线上,因此必须提高包含的文本以允许空间该文本的下降。

答案 1 :(得分:2)

是。你需要这样做:

  1. 删除样式overflow: hidden;。这里不需要这样做。只有在您提供widthtext-overflow: ellipsis;

  2. 时才需要此功能
  3. 添加vertical-align: bottom;。当显示从inline更改为inline-block时,文字的垂直对齐方式会发生变化。

答案 2 :(得分:-1)

试试这个

<!doctype html>
<html>
<head>
    <style>
        .a {
            display: inline; 
            overflow: hidden;
            color: red;
        }
    </style>
</head>
<body>
    baseline__<div class="a">test</div>__baseline
</body>
</html>