Как я могу изменить размер редактора monaco на его родительский div?

#css #reactjs #monaco-editor

Вопрос:

Поэтому я пытаюсь создать макет с двумя экземплярами редактора monaco бок о бок. Я работаю с react и использую компонент @monaco-edior/react.

Я создал желаемый макет, используя гибкий макет в CSS:

цель

Но когда я добавляю компонент редактора, макет полностью ломается:

фактический

Похоже, что происходит то, что редактор monaco слева увеличивается до некоторого внутренне определенного размера и обгоняет макет, который я определил в flex. Я не уверен, является ли это проблемой CSS с тем, как я написал макет, или это то, чего мне не хватает с точки зрения настройки компонента monaco.

Мой JSX выглядит так:

   <div className="container">
      <div className="item">
        <Editor
            onMount={this.editorDidMount}
        ></Editor>
      </div>
      <div className="item">
          <Editor
            onMount={this.editorDidMount}
          ></Editor>
      </div>
  </div>
 

И мой CSS выглядит так:

 html,
body {
    height: 100%;
    margin: 0px;
}

.container {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #999;
    padding: 10px;
    margin: 0px;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: space-evenly;
    align-items: stretch;
}

.item {
    background-color: #efefef;
    flex-grow: 1;
}

.item   .item {
    margin-left: 10px;
}
 

Я довольно неопытен в react и CSS, что может быть причиной этого и где я мог бы начать искать решение?

Ответ №1:

Ширина по умолчанию monaco-react установлена на 100%, что означает, что она будет наследоваться от родительского контейнера. Если вы установите значение width равным .класс товара должен составлять 50%, тогда все должно работать так, как вы ожидаете.

Вот codesandbox с примером embeed

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

1. Спасибо, это отлично работает! Я все еще не совсем понимаю, почему, хотя, установив ширину .item на 50%, это означает, что содержимое .item должно быть вдвое меньше родительского .item?

2. @sak Это правильно