【问题标题】:Remove 1px gap when using display:flex with Bootstrap将 display:flex 与 Bootstrap 一起使用时移除 1px 间隙
【发布时间】:2014-12-09 10:18:03
【问题描述】:

在某些浏览器(例如 Safari 9)中,以下引导网格会在 row 元素的任一侧留下 1px 的间隙。这是为什么呢?

.a {background-color:#eee}
.b {background-color:#ddd}
.row {background-color:red}

.vertical-align {
   display: flex;
   align-items: center;
}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="container">
    <div class="row">
        <div class="col-xs-6 a">Hello</div>
        <div class="col-xs-6 b">World</div>
    </div>
</div>
<br><br>
<div class="container">
    <div class="row vertical-align">
        <div class="col-xs-6 a">Hello</div>
        <div class="col-xs-6 b">World</div>
    </div>
</div>

【问题讨论】:

  • 它看起来像是“clearfix”。您必须删除行类。如果您仍然使用 flex,则不需要浮点数

标签: css twitter-bootstrap flexbox


【解决方案1】:

间隙是由 clearfix 间隙引起的 - content: " " - 它位于引导程序 .row 类的伪元素上。

为了防止差距:

  1. 删除“行”类以及父“容器”类

  

  1. 删除 clearfix 伪元素:
div.vertical-align:before, div.vertical-align:after { display: none }

注意:在类选择器之前放置“div” - .vertical-align - 可以避免使用 !important

两个例子

不删除行类

.a {
  background-color: #eee
}
.b {
  background-color: #ddd
}
.row {
  background-color: red
}
.vertical-align {
  display: flex;
  align-items: center;
}
div.vertical-align:before,
div.vertical-align:after {
  display: none;
}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="container">
  <div class="row">
    <div class="col-xs-6 a">Hello</div>
    <div class="col-xs-6 b">World</div>
  </div>
</div>
<br>
<br>
<div class="container">
  <div class="row vertical-align">
    <div class="col-xs-6 a">Hello</div>
    <div class="col-xs-6 b">World</div>
  </div>
</div>

删除行类。

类 - .container - 也需要删除。

.a {
  background-color: #eee
}
.b {
  background-color: #ddd
}
.row {
  background-color: red
}
.vertical-align {
  display: flex;
  align-items: center;
}
div.vertical-align:before,
div.vertical-align:after {
  display: none;
}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="container">
  <div class="row">
    <div class="col-xs-6 a">Hello</div>
    <div class="col-xs-6 b">World</div>
  </div>
</div>
<br>
<br>
<div>
  <div class="vertical-align">
    <div class="col-xs-6 a">Hello</div>
    <div class="col-xs-6 b">World</div>
  </div>
</div>

【讨论】:

  • 谢谢!但是对于那些最终遇到这个问题的人,我不得不更改类来解决它:div.row:before, div.row:after { display: none }.
  • @PauloTorrens - 请注意,这将消除所有行的 Bootstrap clearfix,因此请确保您真的不需要它:) - 您还可以将自定义类应用于其中的行你想删除 clearfix。
  • 刚刚发现。因此,我放置了一个自定义类,用于消除行和 clearfixes(我用于液体盒布局)的 :before 和 :after。 =P
猜你喜欢
  • 2019-11-16
  • 2015-05-17
  • 2019-11-02
  • 2018-07-11
  • 2017-12-09
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
相关资源
最近更新 更多