CSS не отображается должным образом

#css #reactjs

#css #reactjs

Вопрос:

У меня есть следующий стиль в Calculator.css

 .front {
  display: flex;
  justify-content: center;
  text-align: center;
  align-items: center;
  height: 100vh;
  width: 100%;
}

.calc-wrapper {
  width: 400px;
  height: 600px;
}

.row {
  display: flex;
  text-align: center;
  width: 100%;
}
  

И когда я импортирую его в свой компонент Calculator.jsx :

   import "./css/Calculator.css";
  ...
  render() {
    return (
      <div className="front">
        <div className="calc-wrapper">
          <Input input={this.state.input} />
          <div className="row">
            <Button>4</Button>
            <Button>5</Button>
            <Button>6</Button>
          </div>
        </div>
      </div>
    );
  }
  

Он отображает три кнопки подряд, как и ожидалось:

введите описание изображения здесь

Теперь я переворачиваю этот компонент в другой, Field.jsx .

Field.css

 .back {
  display: flex;
  justify-content: center;
  text-align: center;
  align-items: center;
  height: 100vh;
  width: 100%;
}

.field-wrapper {
  width: 400px;
  height: 600px;
}

.field-row {
  display: flex;
  width: 100%;
}
  

И используя ту же логику в Field.jsx

 import "./css/Field.css";
...
render() {
    const { items } = this.props;
      return (
       <div className="back">
          <div className="field-wrapper">
            <Output output={this.props} />
            <div className="field-row">
              <Position>{items[0]}</Position>
              <Position>{items[1]}</Position>
              <Position>{items[2]}</Position>
            </div>
        </div>
      );
  }
  

Я отображаю элементы горизонтально…

введите описание изображения здесь


Позиция.css

 .position-wrapper {
  height: 4em;
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: center;
  font-weight: lighter;
  font-size: 1.4em;
  background-color: #e0e1e6;
  color: #888888;
  flex: 1;
  outline: 1px solid #888888;
}

.field {
  background-color: #fe9241;
  color: #ffffff;
}
  

Position.jsx

 import React from "react";
import "./css/Position.css";


const isOperator = val => {
  return !isNaN(val) || val === "." || val === "=";
};

export const Position = props => (
  <div
    className={`position-wrapper ${
      isOperator(props.children) ? null : "field"
    }`}
    onClick={() => props.handleClick(props.children)}
  >
    {props.children}
  </div>
);
  

Чего мне не хватает?

Комментарии:

1. можете ли вы воспроизвести его в изолированной среде кода?

2. Я не понимаю весь ваш код, но с того момента, как я попытался воспроизвести ваш 3-й пример, он работал правильно для меня. codesandbox.io/s/zen-williams-ds1eh Вы можете проверить песочницу

Ответ №1:

Попробуйте добавить свойство: flex-direction:row; к элементу

 .field-row {
  display: flex;
  flex-direction: row;
  width: 100%;
}  

или к элементу

     .back {
      display: flex;
      flex-direction: row;
      justify-content: center;
      text-align: center;
      align-items: center;
      height: 100vh;
      width: 100%;
    }