【问题标题】:Left & right align modal footer buttons in Bootstrap 4Bootstrap 4中的左对齐和右对齐模式页脚按钮
【发布时间】:2017-08-19 21:59:04
【问题描述】:

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

下面的代码尝试将div.rowcol-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>

【问题讨论】:

    标签: twitter-bootstrap bootstrap-4 twitter-bootstrap-4


    【解决方案1】:

    现在modal-footer 在 Bootstrap 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>
    

    Demo

    另见:Left align and right align within div in Bootstrap


    跟进评论“如果我需要右边的按钮占据所有左边的空间怎么办?” - 使用btn-block 类:

    <div class="modal-footer">
         <button type="button" class="btn btn-primary text-nowrap">Save changes</button>
         <button type="button" class="btn btn-secondary btn-block ml-1" data-dismiss="modal">Close</button>
    </div>
    

    【讨论】:

    • 谢谢,太好了。最后一件事——如果我有一个fieldset 会发生什么? codeply.com/go/5WyUT4VA4n
    • 然后我将使用w-100 使其全宽并向右浮动:codeply.com/go/Eu0O9Lev5p
    • 太棒了!您是 Bootstrap 向导,非常感谢!
    • mr-auto 是解决方案。单一类的好用和简单的使用。谢谢!
    • 如果我需要右边的按钮占据左边的所有空间怎么办?
    【解决方案2】:

    modal-footerdisplay:flex;。因此,对齐其元素(例如按钮)的更好方法是使用 flex 规则。 Bootstrap 4 提供了新的实用程序类来修改这些弹性规则(例如.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>
    

    <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>

    【讨论】:

    • 如果问题还涉及到使用 IE,这是一个比其他解决方案更好的解决方案。
    【解决方案3】:

    它在 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>
    

    【讨论】:

      【解决方案4】:

      对于任何想要 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>
      

      【讨论】:

        【解决方案5】:

        完全同意@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>
        

        <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-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>
            </div>
          </div>
        </div>

        【讨论】:

          【解决方案6】:
            <div class="modal-footer justify-content-start">
                              <input type="hidden" value="" name="">
                              <button id="pagePrintBtn" type="button" class="btn btn-primary">Print</button>
                              <button type="button" class="btn btn-secondary ml-auto" data-dismiss="modal">Delete</button>
                              <button type="button" class="btn btn-primary" id=asd>Save</button>
                          </div>
          

          【讨论】:

            【解决方案7】:

            对于引导程序 4

            我们使用 Spacing,Bootstrap 包括各种缩写和填充响应边距实用程序类来修改元素的外观。这些类的命名格式为 {property}{sides}-{size}(用于 xs)和 {property}{sides}-{breakpoint}-{size}(用于 sm、md、lg 和 xl)。

            更多信息在这里:https://getbootstrap.com/docs/4.1/utilities/spacing/

            <!--Footer-->
            <div class="modal-footer">
              <button type="submit" class="btn btn-primary ml-auto">Enviar</button>
              <button type="button" class="btn btn-danger mr-auto" data-dismiss="modal">Cerrar</button>
            </div>
            

            【讨论】:

              【解决方案8】:

              这对我有用

               <div class="modal-footer">
                   <button type="button" class="btn btn-primary d-flex flex-grow-1">Save changes</button>
                   <button type="button" class="btn btn-secondary d-flex flex-grow-1" data-dismiss="modal">Close</button>
              </div>

              【讨论】:

              • 嗨 Emsea,欢迎来到 SO。一般来说,在回答时最好解释 why 而不是只给出一些代码(或在这种情况下为降价)而没有任何解释。此外,在用已接受的答案回答旧问题时,最好指出为什么您的答案突然相关,例如如果现在已弃用接受的答案等。
              【解决方案9】:

              这很简单,对我有帮助

               <div class="modal-footer">
               <button id="pagePrintBtn" type="button" class="btn btn-primary" style= "float: left;">Print</button>
               </div>
              

              【讨论】:

                【解决方案10】:

                对于 IE,您可以为父元素使用 .justify-content-between 辅助类表单引导程序。在这种情况下为.modal-footer

                例如:

                <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>
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2013-09-11
                  • 1970-01-01
                  • 2019-01-16
                  • 1970-01-01
                  • 2016-03-26
                  • 1970-01-01
                  • 2014-12-27
                  • 1970-01-01
                  相关资源
                  最近更新 更多