【问题标题】:Aligning buttons horizontally that are within divs水平对齐 div 内的按钮
【发布时间】:2016-07-27 01:17:15
【问题描述】:

.button {
    display:block;
    text-align:center;
    margin: auto;
    padding-bottom: inherit;
    vertical-align: top;
}

.input-div {
  vertical-align: top;
  }
<div class="form-group  field-plan">
				<label for="plan" class="col-sm-3 control-label">
					Current Plan
				</label>
				<div class="input-div col-sm-9">
					<p class="form-control-static control-field-plan">
					   20 alerts per day <br>	
                       0 out of 20 used
                      <span class="button">
                        <button class="change-button btn btn-success">
                          Change Plan
                        </button>
                      </span>
					</p>
				</div>
			</div>
			<div class="form-group payment_method field-payment_method">
				<label for="payment_method" class="col-sm-3 control-label">
					Payment
				</label>
				<div class="input-div col-sm-9">
					<p class="form-control-static control-field-payment_method">
                      Visa 4242 <br>
                      Next payment due: 2016-15-05
                      <span class="button">
                        <button class="update-card btn btn-success">
                          Update Card
                        </button>
                      </span>
					</p>
				</div>
			</div>

我有以下 HTML 代码:

<div class="form-group  field-plan">
    <label for="plan" class="col-sm-3 control-label">
        Current Plan
    </label>
    <div class="input-div col-sm-9">
        <p class="form-control-static control-field-plan">
            {{get_current_plan current_customer.plan}}
            <button class="change-button btn btn-success">
                Change Plan
            </button>

        </p>
    </div>
</div>
<div class="form-group payment_method field-payment_method">
    <label for="payment_method" class="col-sm-3 control-label">
        Payment
    </label>
    <div class="input-div col-sm-9">
        <p class="form-control-static control-field-payment_method">
            {{get_payment_method current_customer.payment_method}}
            <button class="update-card btn btn-success">
                Update Card
            </button>
        </p>
    </div>
</div>

我的应用在按钮之前的两个 {{ ... }} 中显示文本。 文本的数量各不相同,有时可能超过几行。

按钮的位置似乎是由文本的最后一行决定的,所以按钮的放置位置变化很大,看起来不太好。

我对 css 知之甚少,但一直无法将按钮正确放置在每个 div 中的第一行文本旁边。

任何人都可以指导我使用 css 吗?

【问题讨论】:

  • 你能贴一张想要的结果的图片吗?
  • 边距:自动;在其父元素中居中。
  • 猜测,这是一个vertical-align:top 问题,但寻求代码帮助的问题必须包含重现它所需的最短代码在问题本身最好在Stack Snippet .见How to create a Minimal, Complete, and Verifiable example
  • 谢谢,我会尝试做一个堆栈sn-p
  • 我添加了一个堆栈 sn-p。我尝试了上述建议,但它们似乎没有用。 (我是 CSS 新手,抱歉)

标签: html css button alignment


【解决方案1】:

改变了一点 HTML 的结构。顺便说一句,我在 Upwork 上为您的项目发布此任务的投标

HTML:

<div class="form-group  field-plan">
                <label for="plan" class="col-sm-3 control-label">
                    Current Plan
                </label>
                <div class="input-div col-sm-9">
                    <p class="form-control-static control-field-plan">
                       20 alerts per day <br>   
                       0 out of 20 used
                      <span class="button">
                        <button class="change-button btn btn-success">
                          Change Plan
                        </button>
                      </span>
                    </p>
                </div>
            </div>
            <div class="form-group payment_method field-payment_method">
                <label for="payment_method" class="col-sm-3 control-label">
                    Payment
                </label>
                <div class="input-div col-sm-9">
                    <p class="form-control-static control-field-payment_method">
                      Visa 4242 <br>
                      Next payment due: 2016-15-05
                      <span class="button">
                        <button class="update-card btn btn-success">
                          Update Card
                        </button>
                      </span>
                    </p>
                </div>
            </div>

CSS:

 .button {
        position:absolute;
        top:0;
        right:0;
    }
    .form-group{
      position:relative;
      width:300px;
    }
    .input-div {
      vertical-align: top;
      }

https://jsfiddle.net/fabian89/ndgx1drc/

【讨论】:

    【解决方案2】:

    在我看来,您有两种简单的方法可以做到这一点。

    最简单和最简单的方法是创建一个 2x2 表。单元格的样式和大小可以使用 CSS 轻松操作,就像使用 .button 一样。

    我看到的另一种方式是,您可以为 input-div col-sm-9 类添加 CSS,例如使用 text-align 进行垂直对齐。

    查看http://www.w3schools.com/html/html_css.asp 了解有关 CSS 使用的更多信息。他们有很好的例子和教程。

    希望对您有所帮助!

    【讨论】:

    • text-align 似乎不适用于垂直对齐。我尝试了“垂直对齐”,但似乎没有效果。我用vertical-align修改了上面的堆栈sn-p,但是你看到没有效果。另一个建议是为此创建一个 2x2 表。不幸的是,我不能这样做,因为 html 是由另一个工具自动生成的。我唯一的选择是使用 css 来处理它:-(
    • 我不确定这是否会改变任何事情,但您可以尝试将包含您的 buttons 的 &lt;div&gt; 放在包含文本的 &lt;div&gt; 之外。也许那些&lt;div&gt; 正在限制您对buttons 对齐的操作。
    【解决方案3】:

    如果我清楚你想要什么,我建议为 .button 添加一些上边距,例如:margin-top: 35px 或 2.7em。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 2017-11-05
      • 2016-04-07
      • 2012-08-31
      相关资源
      最近更新 更多