html - Safari 中 flexbox 出现神秘空白

标签 html twitter-bootstrap css flexbox

<分区>

我正在尝试根据此 answer 垂直对齐网格列.然而,输出的右上角是一片神秘的空白,我不知道如何填充它。

这是我在浏览器中看到的(Safari 版本 9.1.2 (11601.7.7)):

enter image description here

这是我的代码:

.equal {
  display: flex;
  flex-wrap: wrap;
}
.equal > div[class^='col-'] {
  display: flex;
  flex-direction: column;
}
@media screen and (min-width: 768px) {
  .equal2,
  .equal2 > div[class*='col-'] {
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    flex: 1 0 auto;
  }
}
<!DOCTYPE html>
<html>

<head>
  <!-- Bootstrap -->
  <link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>

<body>
  <div class="container">
    <div class="row equal">
      <div class="col-xs-6 col-lg-4">
        <p style="word-wrap: break-word;">Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
          <p>
      </div>
      <div class="col-xs-6 col-lg-4">
        <p style="word-wrap: break-word;">Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
          <p>
      </div>
      <div class="col-xs-6 col-lg-4">
        <p style="word-wrap: break-word;">Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
          <p>
      </div>
      <div class="col-xs-6 col-lg-4">
        <p style="word-wrap: break-word;">Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
          <p>
      </div>
      <div class="col-xs-6 col-lg-4">
        <p style="word-wrap: break-word;">Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
          <p>
      </div>
      <div class="col-xs-6 col-lg-4">
        <p style="word-wrap: break-word;">Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
          <p>
      </div>
      <div class="col-xs-6 col-lg-4">
        <p style="word-wrap: break-word;">Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
          <p>
      </div>
    </div>
  </div>
</body>

</html>

最佳答案

所以这是一种不寻常的情况,似乎是 Safari 独有的。

但是随着大量 Bootstrap 样式的使用,奇怪的事情可能会发生。

你有一组 flex 元素(div[class^="col-"])在一个row wrap容器(row equal).

每个元素都有一个 width: 50%box-sizing: border-boxmargin: 0,所有这些都由 Bootstrap 应用。

如果填充和边框包含在 50% 内并且没有边距,则每行将容纳两个元素,每三个元素将换行。这就是 Chrome、Firefox、IE11 和 Edge 中发生的情况。

然而,在 Safari 中,第二个 flex 元素正在换行,在第一行留下一个大的开放空间。

在对代码的粗略审查中,我找不到任何可以说明此行为的原因。 (我没有对应用的每个 Bootstrap 样式进行故障排除。)

但是仔细检查呈现的布局会发现第一个元素的左边距区域有一个微小的间隙(可能是 1 像素)

这个额外的空间只出现在 Safari 中并且只在第一个 flex 元素旁边,强制第二个元素换行。

enter image description here

引用上图,显示容器的黄色背景,并且第一列的边框没有对齐,错位很明显。

所以我认为这确定了问题所在。

就解决方案而言,目前我能建议的最佳方案是将第一项的大小减小 1-2 像素,或者应用相同数量的负 margin-left .沿着这些线的东西:

.equal > div[class^='col-']:first-child {
     width: calc(50% - 1px);
}

revised fiddle

关于html - Safari 中 flexbox 出现神秘空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39688648/

相关文章:

javascript - 如何自定义CKEditor图片上传对话框的设计?

html - h1 和 h2 类未显示在 Internet Explorer 中

jquery - Bootstrap Scrollspy 不起作用

html - 设置显示: none of one of their elements后div重叠

javascript - 保持背景固定但让照片滚动

javascript - 制作幻灯片旋转

html 表格和内联样式

html - Bootstrap3 中嵌套行之间缺少间距的问题

javascript - Fullcalendar Rails 上的 Popover Bootstrap

javascript - 如果在 jQuery 中 mouseleave 超过特定时间,则隐藏文本框