div要素を右揃えするにはどうすればよいですか?


351

私のhtmlドキュメントの本体は、ボタン、フォーム、キャンバスの3つの要素で構成されています。ボタンとフォームを右揃えにし、キャンバスを左揃えにします。問題は、最初の2つの要素を位置合わせしようとすると、互いにフォローせず、代わりに水平に隣接していますか?、これまでのコードはここにあります。右側のボタンの直後にフォームをフォローします間にスペースがありません。

#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="1000" height="600">
      <p>Your browser doesn't support canvas.</p>
    </canvas>
  </div>
</body>
</html>

回答:


338

フォームとボタンの両方を含むdivを作成し、を設定してdivを右にフロートさせることができますfloat: right;


私がフロートを使うとは思いもしませんでした。試しましたmargin-left: auto;が、うまくいきませんでした。右に揃えようとしている要素は相対的なものなので、驚いたのです。
DFSFOT

461

floatは問題ありませんが、ie6と7には問題があります。

margin-left:auto; margin-right:0;は内側のdivで使用したいと思います。


6
@ShellNinjaなんで?私0は正しいことを知っていますが、0pxもそうです...あなたのポイントを主張して、私たちは何かを学びます。
pstanton 2014年

29
ユニットを除外すると、ブラウザは特定の計算をスキップして、パフォーマンスを向上させることができます。それがゼロの場合、ユニットに基づいてレイアウトを計算するリソースを無駄にするのはなぜですか?ゼロは単位に関係なくゼロです...このロジックはブラウザに組み込まれると思われます。リンク
ShellNinja 14年

7
反対することはできませんが、パフォーマンスに大きな影響を与えるとは思いません。編集。
pstanton 2014年

24
これを機能させることができません。divはまだ左揃えです。フィドルまたはいくつかの(より多くの)html / cssの行を提供できますか?
Griddo 2014

21
要素が存在することを確認してくださいdisplay: block;
derek_duncan '29 / 12/14

202

古い答え。更新:flexboxを使用してください。ほとんどすべてのブラウザーで動作します。

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

そして、さらに洗練されたものにできます:

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

そして、より洗練された:

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


4
それは機能しますが、積み重ねる代わりに画面が小さくなると、本当に狭くなります
jean d'arme

6
メディアクエリを追加して、定義したブレークポイントでフレックス方向を行から列に変更する必要があります。この例では、正当化コンテンツを変更または削除する可能性があります。そうしないと、左右ではなく上下に伸びてしまいます。
マイケルブシェ

これでうまくいきました。以前の答えはしませんでした。「シャイニー」を使用。
ロジャー

30

この質問の他の回答float:rightは、親divの外に出ることができるのであまり良くありません(オーバーフロー:親に非表示にすると役立つ場合がありますmargin-left: auto, margin-right: 0)。

text-align: right要素と親の両方がinlineまたはである場合に機能すると想定して、特定の要素が機能することを理解しましたinline-block

注:text-alignCSSプロパティは、テキストなどのインラインコンテンツが親ブロック要素にどのように配置されるかを示します。text-alignブロック要素自体の配置は制御せず、インラインコンテンツのみを制御します。

例:

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

こちらがJSフィドルです。



15

親divの右端に並べて配置する複数のdivがある場合は、親divに設定text-align: right;します。


14

flexboxwith flex-growを使用して、最後の要素を右にプッシュできます。

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

1
私はこれが2020年の正解だと個人的に感じています:P
Mike Kellogg

2

IE9以下をサポートする必要がない場合は、フレックスボックスを使用してこれを解決できます:codepen

IE10と11(フレックスボックスのサポート)にはいくつかのバグもありますが、この例にはありません

<button>とで<form>コンテナにラップすることにより、およびを垂直方向に揃えることができflex-direction: columnます。要素のソースの順序は、上から下に表示される順序になるため、並べ替えました。

次に、フォームとボタンのコンテナをでコンテナにラップすることにより、キャンバスをキャンバスに水平に配置できますflex-direction: row。繰り返しになりますが、要素のソースの順序は、左から右に表示される順序になるため、並べ替えました。

また、これはあなたがすべて削除することが必要となるpositionfloat疑問にリンクされたコードからのスタイル規則を。

これは、上記のリンクされたコードペンにあるHTMLの縮小版です。

<div id="mainContainer">
  <div>
    <canvas></canvas>
  </div>
  <div id="formContainer">
    <div id="addEventForm"> 
      <form></form>
    </div>
    <div id="button">
      <button></button>
    </div>
  </div>
</div>

そしてここに関連するCSSがあります

#mainContainer {
  display: flex;
  flex-direction: row;
} 

#formContainer {
  display: flex;
  flex-direction: column;
}

1

簡単な答えはここにあります:

<div style="text-align: right;">
    anything:
    <select id="locality-dropdown" name="locality" class="cls" style="width: 200px; height: 28px; overflow:auto;">
    </select>
</div>

0

padding-left:60%(exの場合)を使用してコンテンツを右揃えにし、同時にコンテンツをレスポンシブコンテナー(私の場合はnavbarが必要)でラップして、すべての例で確実に機能するようにします。


0

ブートストラップを使用している場合:

<div class="pull-right"></div>

あなたが意味したと思います<div class="text-right"></div>
Alex Barker

1
anilは間違っていません。クラス「pull-right」は「float:right;」になります。(ブートストラップ3.4.1でテスト済み)
Fabian Horlacher

-13

私はこれが古い投稿であることを知っていますが、あなた<div id=xyz align="right">は正しく使うことができませんでした。

右を左に、中央を揃えて揃えることができます。

私のサイトで働いた:)


21
HTML属性を使用してページをフォーマットしないでください。それがCSSのために作られました。実際、このalign属性は廃止されました
Hanna

4
...そして、古い方法が機能しなくなったため、このような質問の理由とそれに答える必要性。
vapcguy 2015

ohohoh、とてもネガティブ))
Nessi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.