Linke und rechte Ausrichtung der modalen Fußzeilentasten in Bootstrap 4


76

Bootstrap 4 verwendet Flex-Box für seine modalen Fußzeilen. Wenn ich zwei Tasten möchte, eine links und eine rechts, wie kann ich sie richtig einsetzen?

Der folgende Code versucht, ein div.rowmit zu verwenden col-sm-6, funktioniert jedoch nicht.

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

Antworten:


166

Nun , da das modal-footerist „display: flex“ in Bootstrap 4, wäre es am einfachsten , die Auto-Margen zu nutzen. Verwenden Sie mr-autoauf der linken Taste.

<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

Siehe auch: Linksausrichtung und Rechtsausrichtung innerhalb von div in Bootstrap


Follow-up zum Kommentar "Was ist, wenn ich die Schaltfläche rechts benötige, um den gesamten verbleibenden Platz einzunehmen?" - Verwenden Sie die btn-blockKlasse:

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

1
Danke, das ist großartig. Eine letzte Sache - was passiert, wenn ich einen fieldsetin die Mischung geworfen habe? codeply.com/go/5WyUT4VA4n
— Sean

1
Dann würde ich das verwenden w-100, um es in voller Breite und rechts schwebend zu machen: codeply.com/go/Eu0O9Lev5p
— Zim

4
Genial! Du bist ein Bootstrap-Assistent, vielen Dank!
— Sean

1
mr-autoist die Lösung. Schöne und einfache Verwendung einer einzelnen Klasse. Vielen Dank!
— Matt Komarnicki

Was ist, wenn ich den Knopf rechts brauche, um den gesamten verbleibenden Platz einzunehmen?
— Andres SK

17

Das modal-footerist display:flex;. Der bessere Weg, um seine Elemente (z. B. Schaltflächen) auszurichten, ist die Verwendung von Flex-Regeln. Bootstrap 4 bietet neue Dienstprogrammklassen zum Ändern dieser Flex-Regeln (z .justify-content-[modifier]. B. ). Daher denke ich, dass eine bessere Option wie folgt sein sollte:

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


2
Wenn das Problem auch die Verwendung von IE umfasst, ist dies eine bessere Lösung als die anderen.
— Cristiancajiaos

7

Die einzige Möglichkeit im IE ist die Verwendung von w-100. mx-auto und mr und ml-auto scheinen alle die Schaltflächen des enthaltenen Elements zu überlaufen.

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

2

Für alle, die 3 Tasten wünschen, zum Beispiel 2 rechts und 1 links:

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

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

1

Für Bootstrap 4

Wir verwenden den Abstand. Bootstrap enthält eine Vielzahl von abgekürzten und aufgefüllten Dienstprogrammklassen für Antwortränder, um das Erscheinungsbild eines Elements zu ändern. Die Klassen werden im Format {Eigenschaft} {Seiten} - {Größe} für xs und {Eigenschaft} {Seiten} - {Haltepunkt} - {Größe} für sm, md, lg und xl benannt.

Weitere Informationen hier: 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>

1

Stimme voll und ganz @Zim und @jmboiton zu

Wenn beide Methoden zusammen verwendet werden, wird das Problem für alle behoben (einschließlich IE-Benutzer: P).

Die beste Lösung besteht darin, .justify-content-betweendie .mr-autoKlassen wie folgt zu kombinieren :

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


0

Das ist einfach und hat mir geholfen

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

0

Für IE können Sie das .justify-content-betweenBootstrap-Formular für die Hilfsklasse für das übergeordnete Element verwenden. In diesem Fall für die .modal-footer.

Zum Beispiel:

<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>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.