Skip to content

anydigital/float-label-css

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🥷 Classless CSS-only Float Label. Finally.

Bulletproof classless CSS-only implementation of Float Label pattern with automatic fallback for ANY non-supporting browser.

Demo


Killer features

  • No JS — pure CSS
  • No hacks with required and :valid
    ↳ HTML5 validation support
  • Compatible with <select> and <textarea> fields
  • No need to define for="..." attribute on <label>
  • NEW in v2: Finally, the text label can be placed BEFORE the input field!
  • NEW in v2: Class-less!

Install

Via CDN:

Just Float Label CSS:

<link href="https://cdn.jsdelivr.net/npm/@anydigital/blades@^0.27.0-beta/assets/float-label.min.css" rel="stylesheet" />

Or with all CSS Blades included:

<link href="https://cdn.jsdelivr.net/npm/@anydigital/blades@^0.27.0-beta/assets/blades.min.css" rel="stylesheet" />

Via npm:

npm install @anydigital/blades

Then import just Float Label CSS:

@import "@anydigital/float-label";

Or with all CSS Blades included:

@import "@anydigital/blades";

Usage

Simply place <input> inside <label> to enable float label:

<label>
  <span>Email</span>
  <input type="email" placeholder="email@example.com" />
</label>

NOTE: W3C allows this!


Alternatively wrap <label> and <input> inside .has-float-label:

<div class="has-float-label">
  <label for="email">Email</label>
  <input id="email" type="email" placeholder="email@example.com" />
</div>

NOTE: for="..." attribute is required on <label> in this case


Credits


Browser support

Any browser with https://caniuse.com/css-placeholder-shown, https://caniuse.com/css-has and https://caniuse.com/css-nesting.

All non-supporting browsers should gracefully fall-back to the default layout.

=> Can be used in ANY browser as is!


Featured by: