Coloque un botón alineado a la derecha

225

Yo uso este código para alinear a la derecha un botón.

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

Pero las <p>etiquetas desperdician algo de espacio, por lo que buscan hacer lo mismo con <span>o <div>.

Sourav
fuente
11
El alignatributo está en desuso en HTML 4.01 y no es compatible con HTML5, use CSS en su text-alignlugar para lograr el mismo efecto.
Ese tipo brasileño

Respuestas:

415

La técnica de alineación que use dependerá de sus circunstancias, pero la básica es float: right;:

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

Sin embargo, es probable que desee borrar sus flotadores, pero eso se puede hacer overflow:hiddenen el contenedor principal o de forma explícita <div style="clear: both;"></div>en la parte inferior del contenedor.

Por ejemplo: http://jsfiddle.net/ambiguous/8UvVg/

Los elementos flotantes se eliminan del flujo de documentos normal para que puedan desbordar los límites de sus padres y alterar la altura de los padres, el clear:bothCSS se encarga de eso (al igual que overflow:hidden). Juegue con el ejemplo de JSFiddle que agregué para ver cómo se comportan la flotación y el vaciado ( overflow:hiddenaunque querrá soltar el primero).

mu es demasiado corto
fuente
35

Otra posibilidad es utilizar un posicionamiento absoluto orientado a la derecha:

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

Aquí hay un ejemplo: https://jsfiddle.net/a2Ld1xse/

Esta solución tiene sus desventajas, pero hay casos de uso en los que es muy útil.

Günther Jena
fuente
Si agrega position: relative al elemento padre, ¡funciona bien!
DHRUV GAJWA
23

Si el botón es el único elementen 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>

Si hay otros elements en el 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>

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

Buena suerte...

Akash
fuente
1
El margin-left:autoes genial! Lo !importantpeor es que causará problemas en el futuro.
Tom Brito
Hola @TomBrito, he actualizado la respuesta con display: flex;. Se encarga de todo.
Akash
1
esta respuesta es mejor de lo que obtiene crédito ... ¡simplemente no la use! importante
tpie
11

Esta solución depende de Bootstrap 3, como lo señaló @ günther-jena

Tratar <a class="btn text-right">Call to Action</a>. De esta manera, no necesita marcas ni reglas adicionales para limpiar elementos flotantes.

ranieribt
fuente
1
lo siento corrección, solo funciona cuando coloca "text-right" en el contenedor principal para la etiqueta de anclaje.
Jonathan Laliberte
8

Un enfoque moderno en 2019 utilizando flex-box

con etiqueta div

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

con etiqueta span

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

Dream Hunter - hashADH
fuente
5

Otra posibilidad es utilizar un posicionamiento absoluto orientado a la derecha. Puedes hacerlo de esta manera:

style="position: absolute; right: 0;"
Irshad
fuente
2
Claro, pero si hay un padre div, esto ignorará enfáticamente sus límites.
Hassan Baig
5

¡No siempre es tan simple y, a veces, la alineación debe definirse en el contenedor y no en el elemento Button!

Para su caso, la solución sería

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

Me he ocupado de especificar width=100%para asegurarme de que <div>ocupa todo el ancho de su contenedor.

También he agregado padding:0para evitar antes y después del espacio como con<p> element.

¡Puedo decir que si <div>se define en el pie de página de una tabla FSF / Primefaces, float:rightno funcionará correctamente porque la altura del Botón será más alta que la altura del pie de página!

En esta situación de Primefaces, la única solución aceptable es usar text-align:righten un contenedor.

Con esta solución, si tiene 6 botones para alinear a la derecha, solo debe especificar esta alineación en el contenedor :-)

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

Para mantener el botón en el flujo de la página:

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

(ponga ese estilo en un archivo .css, no use este html en línea, para un mejor mantenimiento)

Tom Brito
fuente
0

Esto lo resolvería.

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

¡Buena suerte con tu código!

Riley Jones
fuente
3
Esta es una copia de la respuesta de mayor puntaje
Günther Jena
0

En mi caso el

<p align="right"/>

funcionó bien

Rubén
fuente
1
Esta no es una respuesta. El atributo de alineación está en desuso en HTML 4.01 y no es compatible con HTML5, use CSS text-align en su lugar para lograr el mismo efecto
Sfili_81
0
<div style = "display: flex; justify-content: flex-end">
    <button>Click me!</button>
</div>
phan kosal
fuente
Un poco más de contexto para su respuesta sería útil.
David Clarke