Placer un bouton aligné à droite

225

J'utilise ce code pour aligner à droite un bouton.

<p align="right">
  <input type="button" value="Click Me" />
</p>

Mais les <p>balises gaspillent de l'espace, donc chercher à faire de même avec <span>ou <div>.

Sourav
la source
11
L' alignattribut est obsolète en HTML 4.01 et non pris en charge en HTML5, utilisez text-alignplutôt CSS pour obtenir le même effet.
Ce brésilien Guy

Réponses:

415

La technique d'alignement que vous utilisez dépend de votre situation mais la base est float: right;:

<input type="button" value="Click Me" style="float: right;">

Vous voudrez probablement effacer vos flottants, mais cela peut être fait avec overflow:hiddensur le conteneur parent ou un explicite <div style="clear: both;"></div>au bas du conteneur.

Par exemple: http://jsfiddle.net/ambiguous/8UvVg/

Les éléments flottants sont supprimés du flux de documents normal afin qu'ils puissent déborder la limite de leur parent et gâcher la hauteur du parent, le clear:bothCSS s'en charge (comme le fait overflow:hidden). Jouez avec l'exemple JSFiddle que j'ai ajouté pour voir comment se comportent le flottement et la compensation (vous voudrez cependant supprimer le overflow:hiddenpremier).

mu est trop court
la source
35

Une autre possibilité est d'utiliser un positionnement absolu orienté vers la droite:

<input type="button" value="Click Me" style="position: absolute; right: 0;">

Voici un exemple: https://jsfiddle.net/a2Ld1xse/

Cette solution a ses inconvénients, mais il existe des cas d'utilisation où elle est très utile.

Günther Jena
la source
Si vous ajoutez position: par rapport à l'élément parent, cela fonctionne très bien!
DHRUV GAJWA
23

Si le bouton est le seul elementsur block:

.border {
  border: 2px blue dashed;
}

.mr-0 {
  margin-right: 0;
}
.ml-auto {
  margin-left:auto;
}
.d-block {
  display:block;
}
<p class="border">
  <input type="button" class="d-block mr-0 ml-auto" value="The Button">
</p>

S'il y en a d' autres elements sur block:

.border {
  border: 2px indigo dashed;
}

.d-table {
  display:table;
}

.d-table-cell {
  display:table-cell;
}

.w-100 {
  width: 100%;
}

.tar {
  text-align: right;
}
<div class="border d-table w-100">
  <p class="d-table-cell">The paragraph.....lorem ipsum...etc.</p>
  <div class="d-table-cell tar">
    <button >The Button</button>
  </div>
</div>

Avec flex-box:

.flex-box {
  display:flex;
  justify-content:space-between;
  outline: 2px dashed blue;
}

.flex-box-2 {
  display:flex;
  justify-content: flex-end;
  outline: 2px deeppink dashed;
}
<h1>Button with Text</h1>
<div class="flex-box">
<p>Once upon a time in a ...</p>
<button>Read More...</button>
</div>

<h1>Only Button</h1>
<div class="flex-box-2">
  <button>The Button</button>
</div>

<h1>Multiple Buttons</h1>
<div class="flex-box-2">
  <button>Button 1</button>
  <button>Button 2</button>
</div>

Bonne chance...

Akash
la source
1
C'est margin-left:autosuper! C'est !importantle pire, ça va causer des problèmes à l'avenir.
Tom Brito
Bonjour @TomBrito, j'ai mis à jour la réponse avec display: flex;. Il s'occupe de tout.
Akash
1
cette réponse est meilleure que ce qu'elle mérite ... juste ne pas utiliser! important
tpie
11

Cette solution dépend de Bootstrap 3, comme l'a souligné @ günther-jena

Essayez <a class="btn text-right">Call to Action</a>. De cette façon, vous n'avez pas besoin de balises ou de règles supplémentaires pour effacer les éléments flottants.

ranieribt
la source
1
désolé correction, cela ne fonctionne que lorsque vous placez "text-right" sur le conteneur parent pour la balise d'ancrage.
Jonathan Laliberte
8

une approche moderne en 2019 avec flex-box

avec balise div

<div style="display:flex; justify-content:flex-end; width:100%; padding:0;">
    <input type="button" value="Click Me"/>
</div>

avec balise span

<span style="display:flex; justify-content:flex-end; width:100%; padding:0;">
    <input type="button" value="Click Me"/>
</span>

Chasseur de rêves - hashADH
la source
5

Une autre possibilité est d'utiliser un positionnement absolu orienté vers la droite. Vous pouvez le faire de cette façon:

style="position: absolute; right: 0;"
Irshad
la source
2
Bien sûr, mais s'il y a un parent div, cela ignorera catégoriquement ses limites.
Hassan Baig
5

Ce n'est pas toujours aussi simple et parfois l'alignement doit être défini dans le conteneur et non dans l'élément Button lui-même!

Pour votre cas, la solution serait

<div style="text-align:right; width:100%; padding:0;">
    <input type="button" value="Click Me"/>
</div>

J'ai pris soin de préciser width=100%pour être sûr de <div>prendre toute la largeur de son container.

J'ai également ajouté padding:0pour éviter l'espace avant et après comme avec <p>élément.

Je peux dire que si <div>est défini dans le pied de page d'un tableau FSF / Primefaces, le float:rightne fonctionne pas correctement car la hauteur du bouton deviendra supérieure à la hauteur du pied de page!

Dans cette situation Primefaces, la seule solution acceptable est d'utiliser text-align:righten conteneur.

Avec cette solution, si vous avez 6 boutons à aligner à droite, vous ne devez spécifier cet alignement que dans le conteneur :-)

<div style="text-align:right; width:100%; padding:0;">
    <input type="button" value="Click Me 1"/>
    <input type="button" value="Click Me 2"/>
    <input type="button" value="Click Me 3"/>
    <input type="button" value="Click Me 4"/>
    <input type="button" value="Click Me 5"/>
    <input type="button" value="Click Me 6"/>
</div>
schlebe
la source
3

Pour conserver le bouton dans le flux de page:

<input type="button" value="Click Me" style="margin-left: auto; display: block;" />

(mettez ce style dans un fichier .css, n'utilisez pas ce html en ligne, pour une meilleure maintenance)

Tom Brito
la source
0

Cela le résoudrait.

<input type="button" value="Text Here..." style="float: right;">

Bonne chance avec votre code!

Riley Jones
la source
3
Ceci est une copie de la réponse du meilleur score
Günther Jena
0

Dans mon cas, le

<p align="right"/>

a bien fonctionné

Ruben
la source
1
Ce n'est pas une réponse L'attribut align est déconseillé en HTML 4.01 et non pris en charge en HTML5, utilisez plutôt text-align CSS pour obtenir le même effet
Sfili_81
0
<div style = "display: flex; justify-content: flex-end">
    <button>Click me!</button>
</div>
phan kosal
la source
Un peu plus de contexte pour votre réponse serait utile.
David Clarke