html-使用flexbox居中动态对象

前端之家收集整理的这篇文章主要介绍了html-使用flexbox居中动态对象 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

游戏开始时,flexBox居中效果很好(在静态对象上).
在游戏进行过程中,两个(标题和剩余div)都会更改其值/大小,从而导致通过flexBox不断调整中心位置(标题中的所有div都在移动).

我希望游戏内每个div标题保持“固定”状态.

仅使用flexBox是否有可能?或者我应该使用其他方法吗?
我应该单独放置每个元素吗?

您可以观察远程服务器上的标头行为:
https://stacho163.000webhostapp.com/firstLevel.html

  1. body {
  2. margin: 0;
  3. width: 100%;
  4. height: 100%;
  5. }
  6. header {
  7. display: flex;
  8. justify-content: space-around;
  9. align-items: center;
  10. background-color: white;
  11. }
  12. #game-window {
  13. position: absolute;
  14. width: 90vw;
  15. height: 90vw * 16/9;
  16. top: 50%;
  17. left: 50%;
  18. transform: translate(-50%,-46%);
  19. background-color: gray;
  20. }
  1. <body>
  2. <header>
  3. <div id="lifes">
  4. Life1 Life2 Life3
  5. </div>
  6. <div id="title">
  7. Title (changes when you win)
  8. </div>
  9. <div id="remain">
  10. Remaining: (from 100 to 0)
  11. </div>
  12. </header>
  13. <canvas id="game-window"></canvas>
  14. </body>

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

我问,因为我在网络方面没有太多经验,所以我想使用正确的方法解决这个简单的问题.
预先感谢您的提示:)

最佳答案
一种方法是将网格用于主布局,并在网格的每个元素内使用flexBox组件.

标头将类似于:

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

您将需要使每一列都成为“ display:flex;”.容器.这将是“生命”的一个例子:

  1. #lifes{
  2. display: flex;
  3. align-items: center;
  4. justify-content: center;
  5. }

如果需要,我可以向您展示更复杂的示例.

参考:https://gridbyexample.com/examples/

猜你在找的HTML相关文章