Nice input box with a lot of styling based on sibling selectors and psuedo classes.
CSS only, and WCAG 2.0 AA compliant!
A Pen by Andrew Tunnecliffe on CodePen.
<h1>Nice input box</h1> | |
<form> | |
<input type="text" name="name" class="question" id="nme" required autocomplete="off" /> | |
<label for="nme"><span>What's your name?</span></label> | |
<textarea name="message" rows="2" class="question" id="msg" required autocomplete="off"></textarea> | |
<label for="msg"><span>What's your message?</span></label> | |
<input type="submit" value="Submit!" /> | |
</form> | |
<div class="footer"> | |
By <a href="http://atunnecliffe.com">Andrew Tunnecliffe</a>. <a href="mailto:[email protected]">Email</a>. <a href="http://codepen.io/atunnecliffe/">Other pens</a>. | |
</div> |
Nice input box with a lot of styling based on sibling selectors and psuedo classes.
CSS only, and WCAG 2.0 AA compliant!
A Pen by Andrew Tunnecliffe on CodePen.
/* | |
Basic input element using psuedo classes | |
*/ | |
html { | |
font-family: 'Lora', sans-serif; | |
width: 100%; | |
} | |
body { | |
margin: 5% auto 0 auto; | |
width: 90%; | |
max-width: 1125px; | |
} | |
h1 { | |
font-size: 28px; | |
margin-bottom: 2.5%; | |
} | |
input, | |
span, | |
label, | |
textarea { | |
font-family: 'Ubuntu', sans-serif; | |
display: block; | |
margin: 10px; | |
padding: 5px; | |
border: none; | |
font-size: 22px; | |
} | |
textarea:focus, | |
input:focus { | |
outline: 0; | |
} | |
/* Question */ | |
input.question, | |
textarea.question { | |
font-size: 48px; | |
font-weight: 300; | |
border-radius: 2px; | |
margin: 0; | |
border: none; | |
width: 80%; | |
background: rgba(0, 0, 0, 0); | |
transition: padding-top 0.2s ease, margin-top 0.2s ease; | |
} | |
/* Underline and Placeholder */ | |
input.question + label, | |
textarea.question + label { | |
display: block; | |
position: relative; | |
white-space: nowrap; | |
padding: 0; | |
margin: 0; | |
width: 10%; | |
border-top: 1px solid red; | |
-webkit-transition: width 0.4s ease; | |
transition: width 0.4s ease; | |
height: 0px; | |
} | |
input.question:focus + label, | |
textarea.question:focus + label { | |
width: 80%; | |
} | |
input.question:focus, | |
input.question:valid { | |
padding-top: 35px; | |
} | |
textarea.question:valid, | |
textarea.question:focus { | |
margin-top: 35px; | |
} | |
input.question:focus + label > span, | |
input.question:valid + label > span { | |
top: -100px; | |
font-size: 22px; | |
color: #333; | |
} | |
textarea.question:focus + label > span, | |
textarea.question:valid + label > span { | |
top: -150px; | |
font-size: 22px; | |
color: #333; | |
} | |
input.question:valid + label, | |
textarea.question:valid + label { | |
border-color: green; | |
} | |
input.question:invalid, | |
textarea.question:invalid { | |
box-shadow: none; | |
} | |
input.question + label > span, | |
textarea.question + label > span { | |
font-weight: 300; | |
margin: 0; | |
position: absolute; | |
color: #8F8F8F; | |
font-size: 48px; | |
top: -66px; | |
left: 0px; | |
z-index: -1; | |
-webkit-transition: top 0.2s ease, font-size 0.2s ease, color 0.2s ease; | |
transition: top 0.2s ease, font-size 0.2s ease, color 0.2s ease; | |
} | |
input[type="submit"] { | |
-webkit-transition: opacity 0.2s ease, background 0.2s ease; | |
transition: opacity 0.2s ease, background 0.2s ease; | |
display: block; | |
opacity: 0; | |
margin: 10px 0 0 0; | |
padding: 10px; | |
cursor: pointer; | |
} | |
input[type="submit"]:hover { | |
background: #EEE; | |
} | |
input[type="submit"]:active { | |
background: #999; | |
} | |
input.question:valid ~ input[type="submit"], textarea.question:valid ~ input[type="submit"] { | |
-webkit-animation: appear 1s forwards; | |
animation: appear 1s forwards; | |
} | |
input.question:invalid ~ input[type="submit"], textarea.question:invalid ~ input[type="submit"] { | |
display: none; | |
} | |
@-webkit-keyframes appear { | |
100% { | |
opacity: 1; | |
} | |
} | |
@keyframes appear { | |
100% { | |
opacity: 1; | |
} | |
} | |
/* Footer, not needed */ | |
.footer { | |
position: fixed; | |
bottom: 0; | |
left: 0; | |
width: 100%; | |
background: #F3F3F3; | |
text-align: center; | |
} |