flexbox 在 Safari 中添加 1px 左边距

Posted

技术标签:

【中文标题】flexbox 在 Safari 中添加 1px 左边距【英文标题】:flexbox adding 1px left margin in Safari 【发布时间】:2016-03-12 18:13:27 【问题描述】:

Safari 在 flexbox 行的第一个元素的左侧添加 1px 边距/间隙时遇到问题。我在下面附上了问题的图片:

flex box css是:

.equal-height 
        display: -webkit-box;      /* OLD - ios 6-, Safari 3.1-6 */
        display: -moz-box;         /* OLD - Firefox 19- (buggy but mostly works) */
        display: -ms-flexbox;      /* TWEENER - IE 10 */
        display: -webkit-flex;     /* NEW - Chrome */
        display: flex;             /* NEW, Spec - Opera 12.1, Firefox 20+ */
        -webkit-flex-direction: row;
        -webkit-flex-wrap: wrap;
        flex-direction: row;
        flex-wrap: wrap;
    

子元素设置如下:

.child-div 
    float: left;
    display: block;
    width: 33.3333%;
    box-sizing: border-box;

但我注意到它们的计算没有浮点数

【问题讨论】:

请添加您目前正在使用的任何代码 我刚刚添加了一些 CSS 谢谢肖恩 【参考方案1】:

文件:style.css; 行:1028

.row:before, .row:after
  content: " ";
  display: table;

添加:

width: 100%

现在“边距”解决了。

您使用的网格系统与 safari 存在问题:更改它。

希望我对你有所帮助。

【讨论】:

非常感谢!永远无法追踪到这一点。我现在对 Safari 做了一些进一步的修复,谢谢【参考方案2】:

不使用浮点数计算它们的原因是flex 取消了它们。 根据flexbox spec:

float 和 clear 对弹性项目没有影响,不要接受它 外流。但是,float 属性仍然可以影响 box 通过影响显示属性的计算值来生成。

所以按照 Michael 的说法,flex 容器上的 100% 宽度是可以的,但是如果你想要 flexbox,你想要的是:

.child-div 
        width: 33.3333%;
        box-sizing: border-box;
        -webkit-box-flex: 1;
        -moz-box-flex: 1;
        -webkit-flex: 1 1 auto;
        -ms-flex: 1 1 auto;
        flex: 1 1 auto;

即您需要使用 float 或 flex,但不能同时使用。

您可能想看看这个flexbox generator 以了解 flex 的工作原理。

【讨论】:

【参考方案3】:

我也注意到了这一点。这对我有用:

.row:before, .row:after 
  display: none;

【讨论】:

非常感谢,这对我有帮助。 感谢这对我有帮助。

以上是关于flexbox 在 Safari 中添加 1px 左边距的主要内容,如果未能解决你的问题,请参考以下文章

Safari flexbox 没有正确包含它的元素

Safari flexbox 中的图像拉伸

带有图像的 flexbox 在 Safari 中无法正确查看

Flexbox子项在Safari中崩溃[重复]

在 Safari 中破坏大小图像的 Flexbox

Flexbox 子项在 Safari 中超出其高度