Maison > Questions et réponses > le corps du texte
P粉4589136552023-09-04 16:01:19
Vous devez aspect-ratio
dire au tableau d'avoir la même hauteur que la largeur, donc si votre largeur est de 3000px, votre hauteur sera la même. Vous avez le choix
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } .parent { height: 100vh; background-color: grey; display: flex; flex-direction: column; } .header { flex-shrink: 0; height: 10px; background-color: blue; } .child { flex-grow: 1; background-color: lightcoral; } .chessboard { height: 100%; max-height: 100%; background-color: purple; margin: auto; } .footer { flex-shrink: 0; height: 10px; background-color: green; }
<div class="parent"> <header class="header"> </header> <div class="child"> <div class="chessboard"> main </div> </div> <footer class="footer"> </footer> </div>
P粉0345716232023-09-04 15:38:58
La réponse finale dépend de quelques éclaircissements de votre part. Je vous ai posé la question en commentaire sur cette question. Mais je vais donner une réponse générale.
Je vais expliquer brièvement ce qui est fait dans l'exemple ci-dessous.
J'ai créé un .chessboard-wrapper
,其中有一个 。
根据需要进行缩放,并具有
aspect-ratio: 1;
.
.chessboard
本身具有 position:absolute;
Et viendra dans les tailles de papa.
* { margin: 0; padding: 0; box-sizing: border-box; } .parent { height: 100vh; background-color: grey; display: flex; flex-direction: column; } .header { height: 10px; background-color: blue; flex: none; } .child { background-color: red; flex: auto; min-height: 0; display: flex; flex-direction: column; } .chessboard-wrapper { position: relative; min-height: 0; margin: auto; aspect-ratio: 1; } .chessboard-wrapper > canvas { max-width: 100%; max-height: 100%; } .chessboard { position: absolute; inset: 0; background-color: purple; } .footer { height: 10px; background-color: green; flex: none; }
<div class="parent"> <div class="header"></div> <div class="child"> <div class="chessboard-wrapper"> <canvas width="1000000" height="1000000"></canvas> <div class="chessboard"></div> </div> </div> <div class="footer"></div> </div>