将按钮右对齐


225

我使用此代码右对齐按钮。

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

但是<p>标签会浪费一些空间,因此希望使用<span>或进行相同的操作<div>


11
align属性在HTML 4.01中已弃用,在HTML5中不受支持,请改用CSS text-align来达到相同的效果。
那位巴西佬

Answers:


414

您使用哪种对齐技术取决于您的情况,但最基本的是float: right;

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

您可能需要清除浮点数,但这可以overflow:hidden在父容器上或容器<div style="clear: both;"></div>底部的显式容器上完成。

例如:http : //jsfiddle.net/ambiguous/8UvVg/

浮动元素已从常规文档流中删除,因此它们可以溢出其父级的边界并弄乱父级的高度,clear:bothCSS会对此进行照顾(也是如此overflow:hidden)。玩弄我添加的JSFiddle示例,以查看浮动和清除的行为方式(不过,您需要删除第overflow:hidden一个)。



22

如果按钮是唯一elementblock

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

如果有其他 elementsblock

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

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>

祝好运...


1
margin-left:auto是伟大的!该!important是最糟糕的,它会导致未来的问题。
汤姆·布里托

嗨,@ TomBrito,我已经用更新了答案display: flex;。它照顾一切。
阿卡什(Akash)

1
这个答案胜于值得赞扬的……只是不要使用!important
tpie 19-10-17

11

此解决方案取决于@günther-jena指出的Bootstrap 3

尝试<a class="btn text-right">Call to Action</a>。这样,您无需额外的标记或规则即可清除浮动的元素。


1
抱歉,仅当您在锚标记的父容器上放置“ text-right”时,它才有效。
乔纳森·拉利伯特

8

2019年使用flex-box的现代方法

div标签

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

带有跨度标签

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


5

另一种可能性是使用朝右的绝对定位。您可以这样操作:

style="position: absolute; right: 0;"

2
当然可以,但是如果有父母div,这将着重忽略其范围。
哈桑·拜格,

5

它并不总是那么简单,有时对齐必须在容器中定义,而不是在Button元素本身中定义!

对于您的情况,解决方案是

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

我已谨慎指定width=100%以确保<div>占据其容器的整个宽度。

我还添加padding:0了避免与<p>元素之前和之后的空格。

我可以说如果<div>在FSF / Primefaces表的页脚中定义,float:right则不能正常工作,因为Button的高度将变得高于页脚的高度!

在这种Primefaces情况下,唯一可接受的解决方案是text-align:right在容器中使用。

使用此解决方案,如果您有6个要在右侧对齐的按钮,则只能在容器中指定此对齐方式:-)

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

3

要将按钮保留在页面流中:

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

(将该样式放入.css文件中,请勿使用此html内联,以便进行更好的维护)



0

就我而言

<p align="right"/>

工作正常


1
这不是答案。align属性在HTML 4.01中已弃用,在HTML5中不支持,请使用CSS text-align来达到相同的效果
Sfili_81 '19

0
<div style = "display: flex; justify-content: flex-end">
    <button>Click me!</button>
</div>

为您的答案提供更多背景信息将很有用。
David Clarke
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.