flex-box responsiveness
Example for stackoverflow answer.
by FUZIION
HTML
<div class="wrapper">
<ol>
<div>
<li>
<div class="input-item">
<label for="item1">Item 1</label>
<input type="text" id="item1" name="item1">
<div class="error"></div>
</div>
</li>
<li>
<div class="input-item">
<label for="item2">Item 2</label>
<input type="text" id="item2" name="item2">
<div class="error"></div>
</div>
</li>
<li>
<div class="input-item">
<label for="item3">Item 3</label>
<input type="text" id="item3" name="item3">
<div class="error"></div>
</div>
</li>
<li>
<div class="input-item">
<label for="item4">Item 4</label>
<input type="text" id="item4" name="item4">
<div class="error"></div>
</div>
</li>
</div>
<div>
<li>
<div class="input-item">
<label for="item5">Item 5</label>
<input type="text" id="item5" name="item5">
<div class="error"></div>
</div>
</li>
<li>
<div class="input-item">
<label for="item6">Item 6</label>
<input type="text" id="item6" name="item6">
<div class="error"></div>
</div>
</li>
<li>
<div class="input-item">
<label for="item7">Item 7</label>
<input type="text" id="item7" name="item7">
<div class="error"></div>
</div>
</li>
<li>
<div class="input-item">
<label for="item8">Item 8</label>
<input type="text" id="item8" name="item8">
<div class="error"></div>
</div>
</li>
</div>
</ol>
<br />
<button id="button" onclick={validateForm()}>
Submit
</button>
</div>
CSS
ol {
background-color: lightblue;
list-style-type: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
ol div {
padding: 0 5px;
}
@media (max-width: 500px) {
ol {
display: block;
max-height: none;
}
}
ol li {
flex: 1 auto;
}
.error {
color: firebrick;
}
@media only screen and (max-width: 787px
/* mobile */
) {
ol {
flex-direction: column!important;
}
}
JavaScript
const submitButton = document.getElementById("button");
submitButton.onclick = validateForm;
/* Checks to see if the form inputs are empty. If so, display error message */
function validateForm() {
const inputItems = document.getElementsByClassName('input-item')
for (const item of inputItems) {
const input = item.children[1]
if (input.value === '') {
item.children[2].innerHTML = 'Enter an input'
}
}
}