如何应用 css grid-template-areas 跨越多个网格

How to apply css grid-template-areas to span multiple grid

我正在尝试使用网格模板区域复制计算器。

如您所见,“0”按钮应该水平延伸两个网格,但我无法让它工作。我的设置只把“0”放在一个格子里,把另外两个格子向左移动。

我正在效仿here

谢谢,

App.js

import logo from "./logo.svg";
import "./App.css";
import Button from "./components/Button";
import NumberButton from "./components/NumberButton";

function App() {
  return (
    <div className="App">
      <Button text="AC" className="ac" />
      <Button text="+/-" className="polarity" />
      <Button text="%" className="percent" />
      <Button text="+" className="divide" />
      <NumberButton number="7" className="seven" />
      <NumberButton number="8" className="eight" />
      <NumberButton number="9" className="nine" />
      <Button text="x" className="multi" />
      <NumberButton number="4" className="four" />
      <NumberButton number="5" className="five" />
      <NumberButton number="6" className="six" />
      <Button text="-" className="minus" />
      <NumberButton number="1" className="one" />
      <NumberButton number="2" className="two" />
      <NumberButton number="3" className="three" />
      <Button text="+" className="plus" />
      <NumberButton number="0" className="zero2" />

      <Button text="." className="dot1" />
      <Button text="=" className="equal" />
    </div>
  );
}

export default App;

App.css

.App {
  display: grid;
  grid-template-areas:
    "ac polarity percent divide"
    "seven eight nine multi"
    "four five fix minus"
    "one two three plus"
    "zero2 zero2 dot1 equal";
  text-align: center;
}

.ac {
  grid-area: ac;
}
.polarity {
  grid-area: polarity;
}
.percent {
  grid-area: percent;
}
.divide {
  grid-area: divide;
}
.seven {
  grid-area: seven;
}
.eight {
  grid-area: eight;
}
.nine {
  grid-area: nine;
}
.multi {
  grid-area: multi;
}
.four {
  grid-area: four;
}
.five {
  grid-area: five;
}
.six {
  grid-area: six;
}
.minus {
  grid-area: minus;
}
.one {
  grid-area: one;
}
.two {
  grid-area: two;
}
.three {
  grid-area: three;
}
.plus {
  grid-area: plus;
}
.zero2 {
  grid-area: zero2;
}
.dot1 {
  grid-area: dot1;
}
.equal {
  grid-area: equal;
}

事实证明,当我尝试将 class 直接应用于 React 组件时,我对 React 犯了一个错误。我真的应该将它作为组件传递给组件,然后将它应用于组件内的 html,如下所示。

App.js

import logo from "./logo.svg";
import "./App.css";
import Button from "./components/Button";
import NumberButton from "./components/NumberButton";

function App() {
  return (
    <div className="App">
      <Button text="AC" class_name="ac" />
      <Button text="+/-" class_name="polarity" />
      <Button text="%" class_name="percent" />
      <Button text="+" class_name="divide" />
      <NumberButton number="7" class_name="seven" />
      <NumberButton number="8" class_name="eight" />
      <NumberButton number="9" class_name="nine" />
      <Button text="x" class_name="multi" />
      <NumberButton number="4" class_name="four" />
      <NumberButton number="5" class_name="five" />
      <NumberButton number="6" class_name="six" />
      <Button text="-" class_name="minus" />
      <NumberButton number="1" class_name="one" />
      <NumberButton number="2" class_name="two" />
      <NumberButton number="3" class_name="three" />
      <Button text="+" class_name="plus" />
      <NumberButton number="0" class_name="zero2" />

      <Button text="." class_name="dot1" />
      <Button text="=" class_name="equal" />
    </div>
  );
}

export default App;

Button.js

import React, { Component } from "react";

export default class Button extends Component {
  render() {
    return (
      <div className={this.props.class_name}>
        <p>{this.props.text}</p>
      </div>
    );
  }
}