Использование flexbox для центрирования динамических объектов - PullRequest
3 голосов
/ 09 апреля 2019

При запуске игры отлично работает центрирование flexbox (на статических объектах). В ходе игры оба (заголовок и оставшиеся делители) изменяют свои значения / размеры, что приводит к постоянной корректировке положения центра с помощью flexbox (все делители в заголовке движутся).

Я хочу, чтобы каждый div внутри заголовка оставался «фиксированным» во время игры.

Это возможно только с помощью flexbox или мне следует использовать другой подход? Должен ли я позиционировать каждый элемент в отдельности?

Вы можете посмотреть поведение заголовка на удаленном сервере: https://stacho163.000webhostapp.com/firstLevel.html

body {
  margin: 0;
  width: 100%;
  height: 100%;
}

header {
  display: flex;
  justify-content: space-around;
  align-items: center;
  background-color: white;
}

#game-window {
  position: absolute;
  width: 90vw;
  height: 90vw * 16/9;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -46%);
  background-color: gray;
}
<body>
  <header>
    <div id="lifes">
      Life1 Life2 Life3
    </div>
    <div id="title">
      Title (changes when you win)
    </div>
    <div id="remain">
      Remaining: (from 100 to 0)
    </div>
  </header>
  <canvas id="game-window"></canvas>
</body>

https://jsfiddle.net/nfzj183t/14/

Я спрашиваю, поскольку у меня нет большого опыта в веб-вещах, и я хочу использовать правильный подход для решения этой простой проблемы.
Заранее благодарю за советы:)

1 Ответ

2 голосов
/ 09 апреля 2019

Одним из подходов может быть использование сетки для основного макета, а внутри каждого элемента сетки используются компоненты flexbox.

Заголовок

будет выглядеть примерно так:

header {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  grid-template-rows: 10vh;
}

И вам нужно будет сделать каждый столбец «display: flex;» контейнер. Это будет пример с «жизнью»:

#lifes{
  display: flex;
  align-items: center;
  justify-content: center;
}

Я могу показать вам более сложные примеры, если это необходимо.

Ссылка: https://gridbyexample.com/examples/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...