display:table div with percentage width 1px bug

南笙酒味 提交于 2019-12-03 12:17:12

This seems to be a specific webkit bug : https://bugs.webkit.org/show_bug.cgi?id=140371

The width of a display:table-* element is not always properly calculated when contained in a parent whose width is not defined with an absolute unit. You can see this issue in action here: Look at the right side of red elements


You can fix this issue in 2 different ways

  1. You could define the width of parent element with an absolute unit or
  2. You could apply display: table also to the container element. This doesn't really solve the bug but it should not be noticeable anymore (because it will affect also the parent element).
.wrap{
background: #000; 
height: 400px;
width: 60%;
display:inline-table;}

Just change your css code like this

Your problem arises from the "60%" width of the container.

Chrome truncates decimals (300.5px will become 300px).
Therefore, when the inner div is set to "100%", it is calculated at the rounded width of the parent div

So, let's say that the outer div is 300.5px (60% of total).
The inner div is calulculated as 100% of 300px;

@media screen and (-webkit-min-device-pixel-ratio:0) {
    width: calc(100% + 0.5px);
}

Notes:

  • adding 1px doesn't fix the problem on WebKit … it just inverts it
  • adding 0.5px introduces the problem on some non-WebKit browsers … wrapping it in a media query resolves this
Alexis

Change your display:table to display:block.

I know this is rather late, but here's a fix for this bug i had to deal with too.

As mentioned in this thread the problem lies in the usage of percentage as a unit of width. The browser rounds the decimals down to a full number. So all we need to do is add 1 Pixel to the percentage based with. We can do that with calc:

width: calc(100% + 1px);

This will work in all major browsers exept IE 11 and older.

The use of display: table can come with the unwanted side effect that table css styles are applied on the div. Therefore I chose display: contents for my project.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!