html - 我该怎么做才能让我有 4 行并且结果类使用 flexbox 位于顶部?

标签 html css

我正在尝试制作一个非常简单的计算器,但它并没有按照我想要的方式出现。有任何想法吗?它应该是 4 行 a,顶部是 0,以便稍后显示结果。

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

#container {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  border: 2px solid red;
}

.square {
  border: 2px solid black;
  width: 7%;
  text-align: center;
}
<div class="result">
  <h1>0</h1>
</div>

<div id="container">
  <div class="square row1">
    <h2>0</h2>
  </div>
  <div class="square row1" "><h2>1</h2></div>
<div class="square row1 "">
    <h2>2</h2>
  </div>
  <div class="square row1" "><h2>3</h2></div>
<div class="square row1 "">
    <h2>4</h2>
  </div>

  <div class="square row2" "><h2>5</h2></div>
<div class="square row2 "">
    <h2>6</h2>
  </div>
  <div class="square row2" "><h2>7</h2></div>
<div class="square row2 "">
    <h2>8</h2>
  </div>
  <div class="square row2" "><h2>9</h2></div>

<div class="square row3 "">
    <h2>C</h2>
  </div>
  <div class="square row3" "><h2>.</h2></div>
<div class="square row3 "">
    <h2>+/-</h2>
  </div>
  <div class="square row3" "><h2>*</h2></div>
<div class="square row3 "">
    <h2>\</h2>
  </div>

  <div class="square row4" "><h2>-</h2></div>
<div class="square row4 "">
    <h2>+</h2>
  </div>
  <div class="square row4" "><h2>=</h2></div>  
</div>

这只是多余的话,因为它需要更多细节

最佳答案

看起来您的某些代码无效,这将成为问题的一部分。在您的许多类定义中,引号的数量不正确。我已经自由地解决了这些问题,但也更新了标记的语义以更好地与其用例保持一致。这意味着将数字 div 更新为 button 并将页面上的 h1h2 交换为 span .

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

.wrap {
  display: flex;
  flex-direction: column;
}

#container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
  border: 2px solid red;
}

.square {
  border: 2px solid black;
  text-align: center;
}

.result {
  align-self: end;
}
<div class="wrap">
  <div class="result">
    <span>0</span>
  </div>

  <div id="container">
    <button class="square">
      <span>0</span>
    </button>
    <button class="square">
      <span>1</span>
    </button>
    <button class="square">
      <span>2</span>
    </button>
    <button class="square">
      <span>3</span>
    </button>
    <button class="square">
      <span>4</span>
    </button>

    <button class="square">
      <span>5</span>
    </button>
    <button class="square">
      <span>6</span>
    </button>
    <button class="square">
      <span>7</span>
    </button>
    <button class="square">
      <span>8</span>
    </button>
    <button class="square">
      <span>9</span>
    </button>

    <button class="square">
      <span>C</span>
    </button>
    <button class="square">
      <span>.</span>
    </button>
    <button class="square">
      <span>+/-</span>
    </button>
    <button class="square">
      <span>*</span>
    </button>
    <button class="square">
      <span>\</span>
    </button>

    <button class="square">
      <span>-</span>
    </button>
    <button class="square">
      <span>+</span>
    </button>
    <button class="square">
      <span>=</span>
    </button>
  </div>
</div>

我删除了您的 flexbox 修复程序并将其替换为 CSS Grid。这允许我们定义一个网格一次,让元素流入其中。

通过在父级 #container 上定义 CSS 网格,我们可以根据您的要求设置 5 列(4 行)。这会将每个 child 对齐到一列中。 fr 是一个小数单位,因为有 5 个,所以它会将可用空间平均分成 5 列。

我还在所有内容周围添加了 .wrap div,以便我们定位您的 .result 输出。通过将 display: flex;flex-direction: column; 添加到 .wrap div 我们可以对齐 .result#container 要堆叠的 div。然后通过在 .result div 上设置 align-self: end;,我们可以将输出向右移动,就像它在大多数计算器上显示的那样。

这是代码笔中的所有代码:https://codepen.io/goodwinc/pen/ZEzBWoJ

关于html - 我该怎么做才能让我有 4 行并且结果类使用 flexbox 位于顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57584041/

相关文章:

javascript - 使用 Javascript If/Else 语句更改 CSS 值

php - 媒体查询与网站 CSS 混淆

css - IE <= 9 伪元素在容器悬停时继承容器样式

javascript - 在条形图中呈现数据 AngularJS,如何制作一个好的多条形图?

html - CSS 将图标移动到输入字段的右侧

html - CSS 句子大小写

html - CSS flexbox 3 boxes - 一个侧边栏

html - 如何使用 React 提供多个 HTML 文件?

css3 多列基于宽度的任意数量的列

css - 如何在 flexbox 容器中混合固定大小和动态大小的元素?