664 Stimmen

Wie kann ich div-Elemente rechts ausrichten?

Der Textkörper meines Html-Dokuments besteht aus 3 Elementen, einer Schaltfläche, einem Formular und einer Leinwand. Ich möchte, dass die Schaltfläche und das Formular rechtsbündig sind und die Leinwand linksbündig bleibt. Das Problem ist, wenn ich versuche, die ersten beiden Elemente auszurichten, folgen sie nicht mehr einander und sind stattdessen nebeneinander horizontal , hier ist der Code, den ich bisher habe, ich möchte das Formular direkt nach der Schaltfläche auf der rechten Seite ohne Zwischenraum zu folgen.

#cTask {
  background-color: lightgreen;
}

#button {
  position: relative;
  float: right;
}

#addEventForm {
  position: relative;
  float: right;
  border: 2px solid #003B62;
  font-family: verdana;
  background-color: #B5CFE0;
  padding-left: 10px;
}

<!DOCTYPE html>
<html lang="en">
<head>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
  <script type="text/javascript" src="timeline.js"></script>
  <link rel="stylesheet" href="master.css" type="text/css" media="screen" />
</head>

<body bgcolor="000" TEXT="FFFFFF">
  <div id="button">
    <button onclick="showForm()" type="button" id="cTask">
        Create Task
    </button>
  </div>
  <div id="addEventForm">
    <form>
      <p><label>Customer name: <input></label></p>
      <p><label>Telephone: <input type=tel></label></p>
      <p><label>E-mail address: <input type=email></label></p>
    </form>
  </div>
  <div>
    <canvas id="myBoard" width="600" height="600" style="background:lightgray;">
      <p>Your browser doesn't support canvas.</p>
    </canvas>
  </div>
</body>
</html>

873voto

pstanton Punkte 32494

Floats sind in Ordnung, aber problematisch mit IE 6 und 7.
Ich würde es vorziehen, das folgende für das innere Div zu verwenden:

margin-left: auto; 
margin-right: 0;

Ver der IE-Doppelrandfehler um zu klären, warum.

582voto

vantrung -cuncon Punkte 9420

Sie können ein div erstellen, das sowohl das Formular als auch die Schaltfläche enthält, und dann das div nach rechts verschieben, indem Sie float: right; .

431voto

Michael Bushe Punkte 3859

Alte Antworten. Ein Update: Verwenden Sie flexbox, ziemlich viel funktioniert in allen Browsern jetzt.

<div style="display: flex; justify-content: flex-end">
  <div>I'm on the right</div>
</div>

Und Sie können sogar noch ausgefallener werden, ganz einfach:

<div style="display: flex; justify-content: space-around">
  <div>Left</div>
  <div>Right</div>
</div>

Und ausgefallener:

<div style="display: flex; justify-content: space-around">
   <div>Left</div>
   <div>Middle</div>
  <div>Right</div>
</div>

61voto

jzilg Punkte 641

Sie können verwenden flexbox con flex-grow um das letzte Element nach rechts zu verschieben.

<div style="display: flex;">
  <div style="flex-grow: 1;">Left</div>
  <div>Right</div>
</div>

41voto

Mladen Adamovic Punkte 2879

Andere Antworten auf diese Frage sind nicht so gut, da float:right kann außerhalb eines übergeordneten Divs liegen (overflow: hidden für das übergeordnete Div könnte manchmal helfen) und margin-left: auto, margin-right: 0 funktionierte bei mir in komplexen verschachtelten Divs nicht (ich habe nicht untersucht, warum).

Ich habe herausgefunden, dass für bestimmte Elemente text-align: right funktioniert, vorausgesetzt, dass dies funktioniert, wenn sowohl das Element als auch das übergeordnete Element inline ou inline-block .

Anmerkung: Die text-align Die CSS-Eigenschaft beschreibt, wie Inline-Inhalte wie Text in ihrem übergeordneten Blockelement ausgerichtet werden. text-align steuert nicht die Ausrichtung der Blockelemente selbst, sondern nur deren Inline-Inhalt.

Ein Beispiel:

<div style="display: block; width: 80%; min-width: 400px; background-color: #caa;">
    <div style="display: block; width: 100%">
        I'm parent
    </div>
    <div style="display: inline-block; text-align: right; width: 100%">
        Caption for parent
    </div>
</div>

Hier ist ein JS Fiddle .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X