在Bootstrap 4中左右对齐模态页脚按钮

Sea*_*ean 49 twitter-bootstrap twitter-bootstrap-4 bootstrap-4

Bootstrap 4使用flex-box作为模态页脚.如果我想要两个按钮,一个在左边,一个在右边,我该如何让它正常工作?

下面的代码尝试使用div.rowwith col-sm-6但不起作用.

<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
      <div class="row">
        <div class="col-sm-6 text-left">
        <button type="button" class="btn btn-primary">Save changes</button>
        </div>
        <div class="col-sm-6 text-right">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        </div>
      </div>
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Zim*_*Zim 110

现在modal-footerBootstrap 4中的"display:flex",最简单的方法是使用自动边距.使用mr-auto左键.

<div class="modal-footer">
     <button type="button" class="btn btn-primary mr-auto">Save changes</button>
     <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
Run Code Online (Sandbox Code Playgroud)

演示

另请参阅:Bootstrap中div内的左对齐和右对齐

  • 真棒!你是一个Bootstrap向导,非常感谢! (4认同)
  • `mr-auto` 是解决方案。单个类的简单易用。谢谢! (2认同)
  • 2022 更新,对于 bootstrap 5,此修复程序有一个警告:对于“ml-auto”,请使用“ms-auto”,而不是“mr-auto”,我们“me-auto”。在某些情况下,我必须另外添加“float-right”和“float-left”类。 (2认同)

小智 11

modal-footerdisplay:flex;.因此,对齐其元素(例如按钮)的更好方法是使用弹性规则. Bootstrap 4提供了新的实用程序类来修改这些flex规则(例如.justify-content-[modifier]).所以我认为更好的选择应该如下:

<div class="modal-footer justify-content-between">
  <button type="button" class="btn btn-primary">Save changes</button>
  <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
Run Code Online (Sandbox Code Playgroud)

<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer justify-content-between">
        <button type="button" class="btn btn-primary">Save changes</button>
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 如果问题也涉及使用IE,这是一个比其他更好的解决方案. (2认同)

Mik*_*n87 8

对于任何想要 3 个按钮的人,例如右侧 2 个、左侧 1 个:

<div class="modal-footer justify-content-between">                    
   <button type="submit" class="btn btn-danger">Delete</button>                                    
   <div>
       <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
       <button type="submit" class="btn btn-primary">Save changes</button>
   </div>  
</div>
Run Code Online (Sandbox Code Playgroud)


小智 7

完全同意@Zim 和@jmboiton

如果这两种方法一起使用,它可以解决每个人的问题(包括 IE 用户:P)

总体而言,最好的解决方案是将类组合起来.justify-content-between.mr-auto如下所示:

<div class="modal-footer justify-content-between">
  <button type="button" class="btn btn-secondary mr-auto" type="button">Left Button</button>
  <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  <button type="button" class="btn btn-primary">Save changes</button>
</div>
Run Code Online (Sandbox Code Playgroud)

<div class="modal-footer justify-content-between">
  <button type="button" class="btn btn-secondary mr-auto" type="button">Left Button</button>
  <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  <button type="button" class="btn btn-primary">Save changes</button>
</div>
Run Code Online (Sandbox Code Playgroud)


小智 6

它在IE中的唯一工作方式是使用w-100。mx-auto和mr和ml-auto似乎都溢出了包含元素中的按钮。

<div class="modal-footer">
  <div class="w-100">
    <button type="button" class="btn btn-default">Cancel</button>
    <button type="button" class="btn btn-primary float-right">Save</button>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)