2
votes

Comment puis-je m'assurer que le contenu de la boîte flexible ne dépasse pas la fin de la hauteur d'origine des pages?

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;
}


0 commentaires

3 Réponses :


1
votes

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)";


3 commentaires

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