solids
Version:
CSS-only Material Design Primitives
95 lines (71 loc) • 3.73 kB
Markdown
<!--docs:
title: "Floating Label"
layout: detail
section: components
excerpt: "An animated text caption for a text field or select."
path: /catalog/input-controls/floating-label/
-->
# Floating Label
Floating labels display the type of input a field requires. Every text field and select should have a label. Labels are aligned with the input line and always visible. They can be resting (when a field is inactive and empty) or floating. The label is a text caption or description for the text field.
## Design & API Documentation
<ul class="icon-list">
<li class="icon-list-item icon-list-item--spec">
<a href="https://material.io/go/design-text-fields#text-fields-layout">Material Design guidelines: Text Fields Layout</a>
</li>
</ul>
## Usage
### HTML Structure
```html
<label class="mdc-floating-label" for="my-text-field-id">Hint text</label>
```
### Usage within `mdc-text-field`
```html
<div class="mdc-text-field">
<input type="text" id="my-text-field-id" class="mdc-text-field__input">
<label class="mdc-floating-label" for="my-text-field-id">Hint text</label>
<div class="mdc-text-field__bottom-line"></div>
</div>
```
<!-- TODO(mattgoo): add ### Usage within `mdc-select` once select uses mdc-floating-label -->
#### Avoid Dynamic ID Generation
If you're using the JavaScript-enabled version of floating label, you can avoid needing to assign
a unique `id` to each `<input>` by wrapping `mdc-text-field__input` within a `<label>`:
```html
<label class="mdc-text-field">
<input type="text" class="mdc-text-field__input">
<span class="mdc-floating-label">Hint Text</span>
<div class="mdc-text-field__bottom-line"></div>
</label>
```
### CSS Classes
CSS Class | Description
--- | ---
`mdc-floating-label` | Mandatory.
`mdc-floating-label--float-above` | Indicates the label is floating above the text field.
`mdc-floating-label--shake` | Shakes the label.
### SCSS Mixins
Mixin | Description
--- | ---
`mdc-floating-label-ink-color($color)` | Customizes the ink color of the label.
`mdc-floating-label-fill-color($color)` | Customizes the fill color of the label.
`mdc-floating-label-shake-keyframes($modifier, $positionY, $positionX, $scale)` | Generates a CSS `@keyframes` at-rule for an invalid label shake. Used in conjunction with the `mdc-floating-label-shake-animation` mixin.
`mdc-floating-label-shake-animation($modifier)` | Applies shake keyframe animation to label.
`mdc-floating-label-float-position($positionY, $positionX, $scale)` | Sets position of label when floating.
### `MDCFloatingLabel`
Method Signature | Description
--- | ---
`shake(shouldShake: boolean) => void` | Shakes or stops shaking the label, depending on the value of `shouldShake`. Proxies to the foundation method of the same name.
`float(shouldFloat: boolean) => void` | Floats or docks the label, depending on the value of `shouldFloat`. Proxies to the foundation method of the same name.
`getWidth() => number` | Returns the width of the label element.
### `MDCFloatingLabelAdapter`
Method Signature | Description
--- | ---
`addClass(className: string) => void` | Adds a class to the label element.
`removeClass(className: string) => void` | Removes a class from the label element.
`getWidth() => number` | Returns the width of the label element.
### `MDCFloatingLabelFoundation`
Method Signature | Description
--- | ---
`shake(shouldShake: boolean)` | Shakes or stops shaking the label, depending on the value of `shouldShake`.
`float(shouldFloat: boolean)` | Floats or docks the label, depending on the value of `shouldFloat`.
`getWidth() => number` | Returns the width of the label element.