IE not coloring :before as table-cell, why?

2019-01-27 20:44发布

<!DOCTYPE html>
<html>
    <head>
        <style>
        div:before {
            display: table-cell;
            content: "ABC";
            color: red;
        }
        </style>
    </head>
    <body>
        <div>123</div>
    </body>
</html>

I'd expect this to render to something like expected, but I get actual instead, only when running on Internet Explorer (any version).

Is this a bug or I'm doing something wrong?

2条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-01-27 21:28

This appears to be a bug in IE. If you inspect the element in IE 11 Developer Tools, you see all the declarations for the :before pseudo-element struck out (also e.g. font settings if you add them), but the display and content settings affect the rendering.

To circumvent this bug, it suffices in this simple case to set display: block as @BeatAlex suggests. In a more complicated situation, you probably need more complicated workarounds.

查看更多
来,给爷笑一个
3楼-- · 2019-01-27 21:34

This appears to be a regression. It works on IE8 on Windows 7, but not IE9 or later, even in IE8 mode. Funny I didn't notice this earlier, as I remember encountering the same issue myself some time ago. I never considered something like this could possibly regress, though, much less thought of comparing the results in IE8 and IE9.

Other font-related styles are affected as well. It has been reported before, but there doesn't seem to have been any response other than "we're looking into it", and that was a year ago.

Workarounds include using display: table-cell with an actual element instead of a pseudo-element, or simply not using display: table-cell at all — use display-block instead if you don't absolutely need a table-based layout.

查看更多
登录 后发表回答