【问题标题】:Aligning 2 buttons on the right side of a <textarea>对齐 <textarea> 右侧的 2 个按钮
【发布时间】:2021-12-20 00:14:21
【问题描述】:

我正在制作一个简单的网站编辑器,我需要对齐文本区域右侧的 2 个按钮,如下所示: (“清除”和“开始”是按钮)。

我正在考虑使用 div 来包围按钮,但我已经尝试过了,它不起作用。

另外,我尽量避免使用绝对定位,因为在我的情况下管理起来会很痛苦。

我是 css 定位的新手,所以如果您需要进行更改,请随时建议我如何改进。

编辑:这是我尝试过的:

<img src = "https://picsum.photos/200/200"></img>
<button style = "display: inline-block; vertical-align: top;">test1</button>
<button style = "display: inline-block; vertical-align: top;">test2</button>

我已经尝试过网格布局,但由于处理大小的方式,它不起作用,而且它并没有走得最远。代码的问题是它们不会跳到下一行,如果它跳到图像下方。我认为原因是因为每一行只是一个元素。对其使用 div 具有相同的结果:图像为一行。

【问题讨论】:

  • 您好,请试一试并分享您尝试过的代码。无论您认为它有多糟糕,它都会向在 SO 上回答问题的人们表明,您在提问之前已经为您的问题付出了努力。更重要的是你可能会惊讶自己并弄清楚,我建议你在 Flexbox 和 CSS Grid 中四处寻找。
  • 这有一些有用的技巧,关于如何创建一个我们可以使用的示例来帮助我们提供更好的答案。 stackoverflow.com/help/minimal-reproducible-example
  • 好的,我正在研究解决方案,但我认为网格框可能对我没有帮助,但我正在尝试。

标签: html css css-position


【解决方案1】:

从像这样的小网格开始的一种相当简单的方法是定义网格模板区域。

每个区域都有一个名称,您可以将其水平和垂直布置。

例如,要让你的第一个元素占据第二个元素的两倍垂直空间,你可以设置:

  grid-template-areas:
    'first second'
    'first third';

(这些区域可以任意命名)

所以这里适用于你的代码:

.grid-container> :nth-child(1) {
  grid-area: first;
}

.grid-container> :nth-child(2) {
  grid-area: second;
}

.grid-container> :nth-child(3) {
  grid-area: third;
}

.grid-container {
  width: min(300px, 100vw);
  display: grid;
  grid-template-areas: 'first second' 'first third';
  grid-gap: min(10px, 1vw);
}
<div class="grid-container">
  <img src="https://picsum.photos/200/200"></img>
  <button>test1</button>
  <button>test2</button>
</div>

【讨论】:

    【解决方案2】:

    Flexbox 助你一臂之力

    .wrapper,
    .btn-wrapper {
      display: flex;
    }
    
    textarea {
      border: 2px solid black;
      margin-right: .1rem;
      height: 100%;
    }
    
    .btn-wrapper {
      flex-direction: column;
    }
    
    button {
      border: 2px solid black;
      background-color: white;
    }
    <div class="wrapper">
      <div>
        <textarea cols="10"></textarea></div>
      <div>
        <div class="btn-wrapper">
          <button>clear</button>
          <button>go</button>
        </div>
      </div>

    【讨论】:

    • 虽然它可以解决问题,但是否需要有这么多 div?我只是想知道,因为它可能有点“过度”,但如果它很重要,那么我可以接受它
    • divs 基本上用于分组/结构化,您可以自行决定使用它。这一切都取决于您希望您的代码如何。可读性(熟悉的结构)、性能(要解析的 DOM 元素更少)等
    猜你喜欢
    • 2022-01-02
    • 2017-01-25
    • 2013-08-07
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2011-12-11
    • 2019-02-25
    • 2016-06-12
    相关资源
    最近更新 更多