Я абсолютно не знаю, каковы критерии того, чтобы текст разбивался на две строки вместо трех. Я не могу понять это по почте, но я сделаю это.
Может быть, это может быть то, что вы хотите:
body {
background-color: rgb(33, 38, 45);
color: rgb(255, 255, 255);
font-family: sans-serif;
font-size: 20px;
font-weight: bold;
margin: 0;
}
body > div {
background-color: rgb(32, 32, 32);
margin: 0 auto;
/* white-space: nowrap; remove, fix it with flex since you're already using it */
width: 400px;
}
div > div {
align-items: center;
display: flex;
margin-top: 10px;
}
span {
text-align: center;
}
span.green {
color: rgb(0, 128, 0);
}
span.red {
color: rgb(196, 0, 0);
}
span.blue {
color: rgb(64, 64, 255);
}
span.yellow {
color: rgb(255, 128, 0);
}
select {
background-color: rgba(0, 0, 0, 0.2);
border: 2px solid rgb(196, 196, 196);
border-radius: 5px;
color: rgb(228, 167, 105);
font-size: 20px;
margin-left: 10px;
min-width: 200px;
outline: none;
padding: 10px;
width: 100%;
flex:1; /* add this */
}
option {
color: rgb(0, 0, 0);
}
option:first-child {
display: none;
}
input {
background-color: rgba(0, 0, 0, 0.2);
border: 2px solid rgb(196, 196, 196);
border-radius: 5px;
color: rgb(228, 167, 105);
font-size: 20px;
margin-left: 10px;
/* min-width: 200px; remove it, unecessary since body has fixed width */
outline: none;
padding: 10px;
/* width: 100%; remove, unecessary with using flex*/
flex: 1; /* add this */
}
<body>
<div>
<div>
<span class="green">Short text:</span><select><option>Select an option</option><option>Yes</option><option>No</option></select>
</div>
<div>
<span class="green">Slightly longer text:</span><select><option>Select an option</option><option>Yes</option><option>No</option></select>
</div>
<div>
<span class="red">Text supposed to break into two lines:</span><select><option>Select an option</option><option>Yes</option><option>No</option></select>
</div>
<div>
<span class="blue">Text broken into two lines manually:</span><select><option>Select an option</option><option>Yes</option><option>No</option></select>
</div>
<div>
<span class="green">This text is corretly broken into three lines:</span><select><option>Select an option</option><option>Yes</option><option>No</option></select>
</div>
<div>
<span class="yellow">Text incorrectly broken:</span><select><option>Select an option</option><option>Yes</option><option>No</option></select>
</div>
<div>
<span class="green">Remarks:</span><input type="text">
</div>
<div>
<span class="red">No no no no no no:</span><input type="text">
</div>
<div>
<span class="green">Yes yes yes yes yes:</span><input type="text">
</div>
</div>
</body>
Вы также можете рассмотреть следующие моменты: 1) выравнивание текста по левому краю, это будет выглядеть более четким. 2) играть с шириной 'body> div' 3) возможно, не использовать px для ширины (не отвечает! Используйте em, vw или худший случай%).
ps Я нашел 410px, чтобы текст тоже выглядел лучше, но подумайте о том, чтобы сделать ширину немного более гибкой со значениями в соответствии с шириной экрана. Используйте медиа-запросы для разных размеров экрана.
ps2 Просто небольшая опечатка: она не должна поддерживать. Если вы этого хотели:)
Полезное руководство по flexbox: https://css-tricks.com/snippets/css/a-guide-to-flexbox/