关于 html:Chrome 与 box-sizing:border-box in a display:table | 珊瑚贝

Chrome vs. box-sizing:border-box in a display:table


我正在使用 display:table 做一个小的 2 窗格布局。对于间距(也来自背景图像),我使用 padding。由于我需要孩子从可用空间中获得精确的 width:50%(考虑到父 div 的填充),所以我使用 box-sizing:border-box.

这在 Opera 中运行良好,但在 Chrome 中,box-sizing:border-box 甚至 -webkit-box-sizing:border-box 会被默默忽略。

我做了一个演示来说明这个问题。两个红框应该是方形的,蓝框应该是宽高200px:http://jsfiddle.net/fabb/JKECK/

这里是html源代码:

1
2
3
4
        Something on the left side
       
   
        Something on the right side

还有css:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#table {
    display: table;
    /*border-collapse: collapse;*/

    width: 200px !important;
    height: 200px !important;
    box-sizing: border-box;
    -webkit-box-sizing:border-box;
    -moz-box-sizing:border-box;

    margin: 0;
    border: 1px solid blue;
    padding: 60px 20px;
}

#table #left, #table #right {
    display: table-cell;

    width: 50%;
    box-sizing: border-box;
    -webkit-box-sizing:border-box;
    -moz-box-sizing:border-box;

    margin: 0;
    border: 1px solid red;
    padding: 0;
}

这是 Chrome 中的错误吗?还是我做错了什么?


是的,谷歌浏览器错误:

问题 #103543 – CSS 显示:表格错误

某些情况可以通过添加/删除填充的特定侧来解决(例如错误报告中的 jsfiddle),但您的情况可能无法解决。

如果宽度和高度已知并且您想要方形单元格,则在此处使用浮动会更容易和更稳定。

注意:
由于表格布局有能力破坏分配的 css width/height,最好不要使用它,除非它是类似表格的结构或者你想要内容扩展容器 – 所以你的 !important 在 width

  • 非常感谢您的留言 – 它帮助我找到了解决方法。我从 #table 中删除了 display:table,这使得我的布局可以在 Chrome、Opera 和 Firefox 中运行。幸运的是,有两个缺点不会影响我:1) 单个单元格不再跨越整个高度,2) 不应存在其他 display:table* ,因为它可能会干扰。您是否有任何其他信息,为什么具有 display: table 的元素可能会破坏 width 或 height 属性(在尝试其他解决方法时在 Opera 中遇到了这个问题)?
  • “Table width is breakable” 这是因为这是一种 inline-block 模型(历史原因-可能是人们更喜欢它可以根据内容扩展),请参阅规范链接的链接。要解决此问题,您可以尝试 table-layout:fixed 链接以获得更多解决方案
  • p.s.如果您希望单元格跨越整个高度,请尝试 flexbox: webkit updated version 或 CSS3 flex box,支持的版本 —
  • flexbox 很好,谢谢你的提示!不幸的是没有歌剧支持:caniuse.com/#search=flexbox
  • 回滚了第 3 方编辑,该编辑通过删除关于其适用性的潜在重要限定符来改变帖子的含义。


n


来源:https://www.codenong.com/8729344/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9730.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?