Je souhaite faire en sorte que la zone de texte ne dépasse pas la longueur d'origine de la page. Cela signifie que vous ne devriez pas avoir besoin d'une barre de défilement pour tout voir.
Actuellement, je suis la réponse de cette question pour utiliser flexbox pour lui faire remplir la hauteur de manière dynamique.
Actuellement, la zone de texte est plus longue que la taille d'origine et donc une barre de défilement apparaît et pour tout voir, vous devez faire défiler vers le bas.
<body> <h1>Command Queue</h1> <div> <input placeholder="Type command here" type="text"/> <button>Run</button> </div> <div class="fillspace"> <textarea id="commandOutput">{{.}}</textarea> </div> </body>
html, body { height: 100%; margin: 0; } input[type=text]{ width: 100%; font-size: 32px; border: 3px solid #999; padding: 12px 20px; margin: 5px 10px; box-sizing: border-box; flex: 0 1 auto; outline: none; } div { display: flex; } .fillspace { display: flex; height: 100%; } input[type=text]:focus{ border: 3px solid #555; } button { background-color: #0099cc; border: none; color: white; text-align: center; padding: 16px 32px; text-decoration: none; display: inline-block; font-size: 32px; margin: 5px 10px 5px 0; } button:hover{ background-color: #007399; outline: none; } button:active{ background-color: #007399; } textarea{ outline: none; resize: none; font-size: 32px; border: 3px solid #999; padding: 12px 20px; margin: 5px 10px 10px 10px; box-sizing: border-box; width: 100%; height: 100%; flex: 1 1 auto; } textarea:focus{ border: 3px solid #555; } h1{ text-align: center; font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif; }
3 Réponses :
J'ai utilisé offsetHeight
<body> <h1>Command Queue</h1> <div id="a"> <input placeholder="Type command here" type="text"/> <button>Run</button> </div> <div class="fillspace"> <textarea id="commandOutput">{{.}}</textarea> </div> </body>
html, body { height: 100%; margin: 0; overflow:hidden; } input[type=text]{ width: 100%; font-size: 32px; border: 3px solid #999; padding: 12px 20px; margin: 5px 10px; box-sizing: border-box; flex: 0 1 auto; outline: none; } div { display: flex; } .fillspace { display: flex; height: 100%; } input[type=text]:focus{ border: 3px solid #555; } button { background-color: #0099cc; border: none; color: white; text-align: center; padding: 16px 32px; text-decoration: none; display: inline-block; font-size: 32px; margin: 5px 10px 5px 0; } button:hover{ background-color: #007399; outline: none; } button:active{ background-color: #007399; } textarea{ outline: none; resize: none; font-size: 32px; border: 3px solid #999; padding: 12px 20px; margin: 5px 10px 10px 10px; box-sizing: border-box; width: 100%; height: 100%; flex: 1 1 auto; } textarea:focus{ border: 3px solid #555; } h1{ text-align: center; font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif; }
const textarea = document.querySelector("textarea"); const a = document.querySelector("#a"); const input = document.querySelector("input"); const h1 = document.querySelector("h1"); let a_h = a.offsetHeight; let inp_h = input.offsetHeight; let h1_h = h1.offsetHeight; let total_height = a_h + inp_h + h1_h; textarea.style.height = "calc(100% - " + total_height + "px)";
Je suis assez nouveau dans le html et que sais-je, je suppose que la zone supérieure est JavaScript? où pourrais-je mettre ça?
vous devez placer immédiatement au-dessus de l'étiquette. Mais vous devez écrire le code javascript entre les balises
.
Par étiquette, voulez-vous dire le En utilisant flex, vous pouvez le résoudre en modifiant les règles css suivantes: Notez que vous avez besoin d'un conteneur affiché en tant que flex, dans ce cas avec la direction de la colonne ( corps b>) et plus tard, définissez flex: 1 sur le conteneur que vous souhaitez agrandir autant que possible. J'espère que cela vous aidera, Cordialement Essayez ceci: ? Je le place dans le
mais cela ne semble pas fonctionner.
votes
html, body {
height: 100%;
margin: 0;
display: flex;
flex-direction: column;
}
div {
display: flex;
}
.fillspace {
flex: 1
}
votes
<body>
<h1>Command Queue</h1>
<div class="cmd-group">
<input placeholder="Type command here" type="text"/>
<button>Run</button>
</div>
<div class="fillspace">
<textarea id="commandOutput">{{.}}</textarea>
</div>
</body>
html, body {
height: 100%;
margin: 0;
}
body {
display: flex;
flex-direction: column;
}
body > * {
flex: 0 0 auto;
}
input[type=text]{
width: 100%;
font-size: 32px;
border: 3px solid #999;
padding: 12px 20px;
margin: 5px 10px;
box-sizing: border-box;
outline: none;
}
div {
display: flex;
}
.fillspace {
flex: 1 0 auto;
}
input[type=text]:focus{
border: 3px solid #555;
}
button {
background-color: #0099cc;
border: none;
color: white;
text-align: center;
padding: 16px 32px;
text-decoration: none;
display: inline-block;
font-size: 32px;
margin: 5px 10px 5px 0;
}
button:hover{
background-color: #007399;
outline: none;
}
button:active{
background-color: #007399;
}
textarea{
outline: none;
resize: none;
font-size: 32px;
border: 3px solid #999;
padding: 12px 20px;
margin: 5px 10px 10px 10px;
box-sizing: border-box;
width: 100%;
}
textarea:focus{
border: 3px solid #555;
}
h1{
text-align: center;
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
}