React Floating labels
Floating labels
React floating label component. Create beautifully simple form labels that float over your input fields.
Other frameworks
CoreUI components are available as native Angular, Bootstrap (Vanilla JS), and Vue components. To learn more please visit the following pages.
Example#
Use floatingLabel
property on <CFormInput>
, <CFormSelect>
or <CFormTextarea>
to enable floating labels with textual form fields. A placeholder
is required on each <CFormInput>
, <CFormSelect>
and <CFormTextarea>
as our method of CSS-only floating labels uses the :placeholder-shown
pseudo-element.
<CFormInput type="email" id="floatingInput" floatingClassName="mb-3" floatingLabel="Email address" placeholder="[email protected]" /><CFormInput type="password" id="floatingPassword" floatingLabel="Password" placeholder="Password" />
You can create the same form control by wrapping a pair of <CFormInput>
and <CFormLabel>
elements in <CFormFloating>
to enable floating labels with textual form fields. A placeholder
is required on each <CFormInput>
as our method of CSS-only floating labels uses the :placeholder-shown
pseudo-element. Also, note that the <CFormInput>
must come first so we can utilize a sibling selector (e.g., ~
).
<CFormFloating className="mb-3"> <CFormLabel htmlFor="floatingInput">Email address</CFormLabel></CFormFloating><CFormFloating> <CFormInput type="password" id="floatingPassword" placeholder="Password" /> <CFormLabel htmlFor="exampleFormControlTextarea1">Password</CFormLabel></CFormFloating>
When there's a value
already defined, <CFormLabel>
s will automatically adjust to their floated position.
<CFormInput type="email" id="floatingInputValue" floatingLabel="Input with value"/>
Form validation styles also work as expected.
<CFormInput type="email" id="floatingInputValid" floatingClassName="mb-3" floatingLabel="Email addresss" valid/><CFormInput type="email" id="floatingInputInvalid" floatingLabel="Email addresss" invalid/>
Textareas#
By default, <CFormTextarea>
s will be the same height as <CFormInput>
s.
<CFormTextarea id="floatingTextarea" floatingLabel="Comments" placeholder="Leave a comment here"></CFormTextarea>
To set a custom height on your <CFormTextarea>
, do not use the rows
attribute. Instead, set an explicit height
(either inline or via custom CSS).
<CFormTextarea placeholder="Leave a comment here" id="floatingTextarea2" floatingLabel="Comments" style={{ height: '100px' }}></CFormTextarea>
Selects#
Other than <CFormInput>
, floating labels are only available on <CFormSelect>
s. They work in the same way, but unlike <CFormInput>
s, they'll always show the <CFormLabel>
in its floated state. Selects with size
and multiple
are not supported.
<CFormSelect id="floatingSelect" floatingLabel="Works with selects" aria-label="Floating label select example"> <option>Open this select menu</option> <option value="1">One</option> <option value="2">Two</option> <option value="3">Three</option></CFormSelect>
Layout#
When working with the CoreUI for Bootstrap grid system, be sure to place form elements within column classes.
<CRow xs={{ gutter: 2 }}> <CCol md> <CFormInput type="email" id="floatingInputGrid" floatingLabel="Email address" /> </CCol> <CCol md> <CFormSelect id="floatingSelectGrid" floatingLabel="Email address" aria-label="Works with selects" > <option>Open this select menu</option> <option value="1">One</option> <option value="2">Two</option> <option value="3">Three</option> </CFormSelect> </CCol></CRow>
Customizing#
SASS variables#
$form-floating-height: add(3.5rem, $input-height-border) !default;$form-floating-line-height: 1.25 !default;$form-floating-padding-x: $input-padding-x !default;$form-floating-padding-y: 1rem !default;$form-floating-input-padding-t: 1.625rem !default;$form-floating-input-padding-b: .625rem !default;$form-floating-label-height: 1.5em !default;$form-floating-label-opacity: .65 !default;$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;$form-floating-label-disabled-color: $gray-600 !default;$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;
API#
CFormFloating#
import { CFormFloating } from '@coreui/react'// orimport CFormFloating from '@coreui/react/src/components/form/CFormFloating'
Property | Description | Type | Default |
---|---|---|---|
className | A string of all className you want applied to the component. | string | - |