【问题标题】:How to vertically align buttons in form-row class in bootstrap 4如何在引导程序 4 中垂直对齐表单行类中的按钮
【发布时间】:2020-08-13 18:08:44
【问题描述】:

在将标签与按钮相关联时,我无法使一组表单行按钮保持一致。分配给列宽(例如 col-3)的按钮的行为与分配有自动宽度(col-auto)的按钮的行为不同。

目标是使所有按钮与按钮上方的文本标签垂直对齐。随着视口大小的变化,文本标签应跟随按钮的位置。我试过使用 .align-self-baseline 似乎没有效果。

如果我在按钮上方添加一个带有自动调整大小的列的空白标签,它会将文本放置在按钮的左侧而不是上方。标签需要显示在按钮上方,因为目标应用程序正在显示端口宽度有限的移动设备上显示。以下是两者的 sn-ps:

 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
 
  <div class="container">
    <form action="#">
    
      <div class="form-row">
        <div class="col-4 text-center">
          <label>Desired</label>
          <button type="submit" class="btn btn-sm btn-outline-primary btn-block active" aria-pressed="true">Button Name</button>
        </div>

        <div class="col-auto text-center">
          <label>undesired</label>
          <button type="submit" class="btn btn-sm btn-outline-primary active" aria-pressed="true">Button 2</button>
        </div>        
      </div>  <!-- row -->
 
      <div class="form-row mt-4">
        <div class="col-4 text-center">
          <label>Desired</label>
          <button type="submit" class="btn btn-sm btn-outline-primary btn-block active" aria-pressed="true">Row 2 Button</button>
        </div>

        <div class="col-auto text-center">
          <button type="submit" class="btn btn-sm btn-outline-primary align-self-baseline active" aria-pressed="true">Not aligned with Row 2 Button</button>
        </div>        
      </div>  <!-- row -->
 
    </form>
  </div>

【问题讨论】:

    标签: html css bootstrap-4


    【解决方案1】:

    关键在 btn-block 类中 - 它为具有 col-4 类的 div 内的按钮提供 display:block 属性 - 如果删除它,对齐方式将相似

     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
     
      <div class="container">
    <form action="#">
    
      <div class="form-row">
        <div class="col-4 text-center">
          <label>Desired</label>
          <button type="submit" class="btn btn-sm btn-outline-primary btn-block active" aria-pressed="true">Button Name</button>
        </div>
    
        <div class="col-auto text-center">
          <label>undesired</label>
          <button type="submit" class="btn btn-sm btn-block btn-outline-primary active" aria-pressed="true">Button 2</button>
        </div>        
      </div>  <!-- row -->
     
      <div class="form-row mt-4">
        <div class="col-4 text-center">
          <label>Desired</label>
          <button type="submit" class="btn btn-sm btn-outline-primary btn-block active btn-block" aria-pressed="true">Row 2 Button</button>
        </div>
    
        <div class="col-auto text-center d-flex">
          <button type="submit" class="btn btn-sm btn-outline-primary align-self-end active" aria-pressed="true">Not aligned with Row 2 Button</button>
        </div>        
      </div>  <!-- row -->
     
    </form>
      </div>
     

    【讨论】:

    • 也许我不够清楚,我需要让标签出现在按钮上方。视口中没有足够的空间来支持按钮旁边的标签。为了清楚起见,标签“不想要的”需要出现在按钮 2 或两个按钮上方(一个带有标签,一个不需要在第二行垂直对齐。
    • 如果你想让“不想要的”标签出现在按钮 2 的上方,你需要添加类“btn-block”到它(它将按钮显示为一个“块”元素)。如果您想让第二行中的按钮与底部对齐,您可以将类“align-self-end”添加到按钮“不与第 2 行按钮对齐”这里是有关元素与引导程序对齐的更多信息:@987654321 @
    • 在您的回答中,您建议删除“btn-block”类,然后在您的评论中建议将其添加回来;但是,添加回给我留下了最初的问题 - 当与 col-auto 类一起使用时,标签实际上并没有放在按钮上方。您使用 align-self-end 的第二个建议不起作用。我已经编辑了您的答案以包含更改,并且块的对齐方式没有更改。
    • 我更新了代码,请看一下。我希望这是您想要实现的目标,如果不是 - 对您想要的布局进行一些图像解释会更容易
    • 明白。同样,我认为我的解释很清楚。对于其他用户,请注意,虽然上面的代码按预期运行,但当应用 align-self-end 时,如图所示并在 iPhone 上显示(Chrome 和 Safari 的结果相同),按钮未对齐。当 align-self-end 以相同的方式应用于自定义选择对象时,它的响应非常糟糕。
    猜你喜欢
    • 1970-01-01
    • 2019-12-15
    • 2018-07-07
    • 1970-01-01
    • 2013-09-27
    • 2015-10-27
    • 2018-06-29
    • 1970-01-01
    • 2016-02-25
    相关资源
    最近更新 更多