#html #css #flexbox
#HTML #css #flexbox
Вопрос:
При запуске игры центрирование 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:
Одним из подходов может быть использование grid для основного макета, а внутри каждого элемента grid использовать компоненты 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;
}
При необходимости я могу показать вам более сложные примеры.
Комментарии:
1. это довольно близко. Если внутри div есть только один элемент, он работает хорошо, но внутри #lifes div есть 3 объекта, поэтому выходные данные распределяются, как при использовании justify-content: пробел между. Жизни должны располагаться рядом друг с другом, будучи центрированными в #lifes. Есть идеи, как это исправить? Я обновил это на удаленном сервере.
2. Проблема заключается в «margin: auto» класса fas, применяемого к каждому значку. Установите это поле, например, равным 0 или 10 пикселей. Значение «auto» заставляет поле заполнять все доступное пространство. Кстати, хорошая игра, она впечатляет.
3. Большое вам спасибо, не заметил поля: auto, отлично работает!