I’m a beginner in CSS and I attempted to create a form using Flexbox. However, I’m facing an issue where my content is not being fully displayed. Currently, the header form is not visible when the website is viewed on a tablet or desktop. The situation is even worse on mobile view as some of the input fields are not visible, despite being scrollable. Could you please assist me in identifying what is missing in my code?
HTML:
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contact Us</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css">
</head>
<body>
<section id="registration-page">
<form class="signup-form">
<div class="form-header">
<h1>Create Account</h1>
</div>
<div class="form-body">
<div class="row">
<div class="input-group">
<label>First name </label>
<input type="text" placeholder="Enter your first name">
</div>
<div class="input-group">
<label>Last name</label>
<input type="text" placeholder="Enter your last name">
</div>
</div>
<div class="row">
<div class="input-group">
<label>Email </label>
<input type="email" placeholder="Enter your email address">
</div>
</div>
<div class="row">
<div class="input-group">
<label>Password </label>
<input type="password" placeholder="Enter your your password">
</div>
<div class="input-group">
<label>Confirm Password</label>
<input type="password" placeholder="Enter your password again">
</div>
</div>
<div class="row">
<div class="input-group">
<label for="">Gender</label>
<div class="radio-group">
<div>
<label for="male">
<input type="radio" name="gender" id="male">
Male
</label>
</div>
<div>
<label for="female">
<input type="radio" name="gender" id="female">
Female
</label>
</div>
<div>
<label for="other">
<input type="radio" name="gender" id="other"> Other
</label>
</div>
</div> <!-- .radio-group -->
</div> <!-- .input-group -->
<div class="input-group">
<label for="">Hobbies</label>
<div class="checkbox-group">
<div>
<label for="music">
<input type="checkbox" name="hobbies" id="music">
Music
</label>
</div>
<div>
<label for="cooking">
<input type="checkbox" name="cooking" id="cooking">
Cook
</label>
</div>
<div>
<label for="travel">
<input type="checkbox" name="travel" id="travel">
Travel
</label>
</div>
<div>
<label for="movies">
<input type="checkbox" name="movies" id="movies">
Movie
</label>
</div>
</div>
</div> <!-- .checkbox-group -->
</div><!-- .input-group -->
<div class="row">
<div class="input-group">
<label for="">Source of Income</label>
<select>
<option>Employed</option>
<option>Self-Employed</option>
<option>Unemployed</option>
</select>
</div>
<div class="input-group">
<label>Income</label>
<div class="range-group">
<input type="range" min="0" max="100" value="10" oninput="rangeValue.innerText = this.value">
<label id="rangeValue">10</label>
</div>
</div>
</div>
<div class="row">
<div class="input-group">
<label>Upload Profile Picture</label>
<input type="file">
</div>
<div class="input-group">
<label>Age</label>
<input type="number">
</div>
</div>
<div class="row">
<div class="input-group">
<label for="">Bio</label>
<textarea> </textarea>
</div>
</div>
<div class="form-footer">
<button class="btn">Create</button>
</div>
</div>
</form>
</section>
</body>
CSS:
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
html {
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box; /* Opera/IE 8+ */
font-family: 'Roboto', sans-serif;
font-weight: bold;
height: 100vh;
}
#registration-page {
height: 100vh;
background: #78a7ba;
display: flex;
justify-content: center;
align-items: center;
overflow: scroll;
}
.signup-form {
flex: 1;
max-width: 600px;
background-color: #EFF0F1;
border-radius: 10px;
border: 1px solid #999;
}
.form-header {
padding: 15px 0;
border-bottom: 1px solid #cccccc;
}
.form-header h1 {
font-size: 28px;
text-align: center;
color: #666;
}
.row {
display: flex;
flex-direction: row;
}
.input-group {
flex:1;
display: flex;
flex-direction: column;
min-width: 0;
margin: 10px 5px;
}
label {
color: #1BBA93;
font-size: 17px;
font-weight: 500;
padding-bottom: 5px;
}
input[type="text"],
input[type="email"],
input[type="password"],
input[type="file"],
input[type="number"],
textarea,
select {
font-size: 18px;
height: 34px;
padding: 0px 10px;
color: #666;
border: 1px solid #d6d6d6;
border-radius: 4px;
background: white;
outline: none;
}
.form-body {
background: white;
padding: 5px 10px;
}
.radio-group,
.checkbox-group,
.range-group {
display: flex;
}
.radio-group div,
.checkbox-group div,
.range-group input {
flex: 1 ;
}
.radio-group label,
.checkbox-group label{
color:#666;
cursor:pointer;
}
.range-group label {
margin-left: 10px;
background-color: #1BBA93;
color: white;
border-radius: 5px;
padding: 5px;
font-size: 17px;
text-align: center;
}
textarea {
resize: none;
height: 100px;
}
.form-footer {
display:flex;
justify-content: flex-end;
}
.btn {
padding:10px 20px;
background-color: #1BBA93;
font-size:17px;
border:none;
border-radius:5px;
color:#bcf5e7;
cursor:pointer;
}
@media only screen and (max-width: 500px) {
.row{
flex-direction:column;
}
}
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
html {
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box; /* Opera/IE 8+ */
font-family: 'Roboto', sans-serif;
font-weight: bold;
height: 100vh;
}
#registration-page {
height: 100vh;
background: #78a7ba;
display: flex;
justify-content: center;
align-items: center;
overflow: scroll;
}
.signup-form {
flex: 1;
max-width: 600px;
background-color: #EFF0F1;
border-radius: 10px;
border: 1px solid #999;
}
.form-header {
padding: 15px 0;
border-bottom: 1px solid #cccccc;
}
.form-header h1 {
font-size: 28px;
text-align: center;
color: #666;
}
.row {
display: flex;
flex-direction: row;
}
.input-group {
flex:1;
display: flex;
flex-direction: column;
min-width: 0;
margin: 10px 5px;
}
label {
color: #1BBA93;
font-size: 17px;
font-weight: 500;
padding-bottom: 5px;
}
input[type="text"],
input[type="email"],
input[type="password"],
input[type="file"],
input[type="number"],
textarea,
select {
font-size: 18px;
height: 34px;
padding: 0px 10px;
color: #666;
border: 1px solid #d6d6d6;
border-radius: 4px;
background: white;
outline: none;
}
.form-body {
background: white;
padding: 5px 10px;
}
.radio-group,
.checkbox-group,
.range-group {
display: flex;
}
.radio-group div,
.checkbox-group div,
.range-group input {
flex: 1 ;
}
.radio-group label,
.checkbox-group label{
color:#666;
cursor:pointer;
}
.range-group label {
margin-left: 10px;
background-color: #1BBA93;
color: white;
border-radius: 5px;
padding: 5px;
font-size: 17px;
text-align: center;
}
textarea {
resize: none;
height: 100px;
}
.form-footer {
display:flex;
justify-content: flex-end;
}
.btn {
padding:10px 20px;
background-color: #1BBA93;
font-size:17px;
border:none;
border-radius:5px;
color:#bcf5e7;
cursor:pointer;
}
@media only screen and (max-width: 500px) {
.row{
flex-direction:column;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contact Us</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css">
</head>
<body>
<section id="registration-page">
<form class="signup-form">
<div class="form-header">
<h1>Create Account</h1>
</div>
<div class="form-body">
<div class="row">
<div class="input-group">
<label>First name </label>
<input type="text" placeholder="Enter your first name">
</div>
<div class="input-group">
<label>Last name</label>
<input type="text" placeholder="Enter your last name">
</div>
</div>
<div class="row">
<div class="input-group">
<label>Email </label>
<input type="email" placeholder="Enter your email address">
</div>
</div>
<div class="row">
<div class="input-group">
<label>Password </label>
<input type="password" placeholder="Enter your your password">
</div>
<div class="input-group">
<label>Confirm Password</label>
<input type="password" placeholder="Enter your password again">
</div>
</div>
<div class="row">
<div class="input-group">
<label for="">Gender</label>
<div class="radio-group">
<div>
<label for="male">
<input type="radio" name="gender" id="male">
Male
</label>
</div>
<div>
<label for="female">
<input type="radio" name="gender" id="female">
Female
</label>
</div>
<div>
<label for="other">
<input type="radio" name="gender" id="other"> Other
</label>
</div>
</div> <!-- .radio-group -->
</div> <!-- .input-group -->
<div class="input-group">
<label for="">Hobbies</label>
<div class="checkbox-group">
<div>
<label for="music">
<input type="checkbox" name="hobbies" id="music">
Music
</label>
</div>
<div>
<label for="cooking">
<input type="checkbox" name="cooking" id="cooking">
Cook
</label>
</div>
<div>
<label for="travel">
<input type="checkbox" name="travel" id="travel">
Travel
</label>
</div>
<div>
<label for="movies">
<input type="checkbox" name="movies" id="movies">
Movie
</label>
</div>
</div>
</div> <!-- .checkbox-group -->
</div><!-- .input-group -->
<div class="row">
<div class="input-group">
<label for="">Source of Income</label>
<select>
<option>Employed</option>
<option>Self-Employed</option>
<option>Unemployed</option>
</select>
</div>
<div class="input-group">
<label>Income</label>
<div class="range-group">
<input type="range" min="0" max="100" value="10" oninput="rangeValue.innerText = this.value">
<label id="rangeValue">10</label>
</div>
</div>
</div>
<div class="row">
<div class="input-group">
<label>Upload Profile Picture</label>
<input type="file">
</div>
<div class="input-group">
<label>Age</label>
<input type="number">
</div>
</div>
<div class="row">
<div class="input-group">
<label for="">Bio</label>
<textarea> </textarea>
</div>
</div>
<div class="form-footer">
<button class="btn">Create</button>
</div>
</div>
</form>
</section>
</body>
</html>
My goal is to ensure that the complete form is displayed correctly, regardless of the device used, whether it is a desktop, tablet, or mobile.
3
Answers
You have restricted the page to be only 100vh:
Remove these properties and it should work fine (alternatively set the height to auto in your 500px media query):
I fixed mutliple problems that I will walk you through:
Feel free to ask in the comments if something is unclear!
EDIT: I added below codes to
media query 500px
section and now works at all screen sizes. Additionally I added some divs (form-header-bottom and blank-bottom) to html file. And gave the signup-form classmax-height:100vh;
CSS & HTML Codes: