> Markdown version of [Styling](https://vaadin.com/docs/v24/components/text-field/styling). Section index: [llms.txt](https://vaadin.com/docs/v24/components/llms.txt)

# Styling

## <a id="style-properties"></a>Style Properties

The following style properties can be used in CSS stylesheets to customize the appearance of this component.

To apply values to these properties globally in your application UI, place them in a CSS block using the `html {…​}` selector. See [Lumo Style Properties](https://vaadin.com/docs/v24/styling/lumo/lumo-style-properties.md) for more information on style properties.

> **Note: Input Field Components Shared Styles**
>
> Style properties whose names start with `--vaadin-input-field` are shared among all input field components. To apply them only to a specific type of component, use an element selector like `vaadin-text-field {…​}`

### <a id="field-surface"></a>Field Surface

| Feature                                      | Property                                       | Default Value                      |
| -------------------------------------------- | ---------------------------------------------- | ---------------------------------- |
| Background                                   | `--vaadin-input-field-background`              | `--lumo-contrast-10pct`            |
| Background, invalid                          | `--vaadin-input-field-invalid-background`      | `--lumo-error-color-10pct`         |
| Background, hover highlight color            | `--vaadin-input-field-hover-highlight`         | `--lumo-contrast-50pct`            |
| Background, invalid hover highlight color    | `--vaadin-input-field-invalid-hover-highlight` | `--lumo-error-color-50pct`         |
| Background, disabled (since undefined)       | `--vaadin-input-field-disabled-background`     | `--lumo-contrast-5pct`             |
| Border width                                 | `--vaadin-input-field-border-width`            | `0`                                |
| Border color                                 | `--vaadin-input-field-border-color`            | `--lumo-contrast-50pct`            |
| Hover highlight opacity                      | `--vaadin-input-field-hover-highlight-opacity` | `0.1`                              |
| Height                                       | `--vaadin-input-field-height`                  | `--lumo-size-m`                    |
| Value text color                             | `--vaadin-input-field-value-color`             | `--lumo-body-text-color`           |
| Value text color, disabled (since undefined) | `--vaadin-input-field-disabled-value-color`    | `--lumo-disabled-text-color`       |
| Value font size                              | `--vaadin-input-field-value-font-size`         | `--lumo-font-size-m`               |
| Value font weight                            | `--vaadin-input-field-value-font-weight`       | `400`                              |
| Placeholder text color                       | `--vaadin-input-field-placeholder-color`       | `--lumo-secondary-text-color`      |
| Border radius                                | `--vaadin-input-field-border-radius`           | `--lumo-border-radius-m`           |
| Read-only border                             | `--vaadin-input-field-readonly-border`         | `1px dashed --lumo-contrast-30pct` |
| Focus ring width                             | `--vaadin-focus-ring-width`                    | `2px`                              |
| Focus ring color                             | `--vaadin-focus-ring-color`                    | `--lumo-primary-color-50pct`       |

### <a id="label"></a>Label

| Feature       | Property                                   | Default Value                 |
| ------------- | ------------------------------------------ | ----------------------------- |
| Color         | `--vaadin-input-field-label-color`         | `--lumo-secondary-text-color` |
| Focused color | `--vaadin-input-field-focused-label-color` | `--lumo-primary-text-color`   |
| Hovered color | `--vaadin-input-field-hovered-label-color` | `--lumo-body-text-color`      |
| Font size     | `--vaadin-input-field-label-font-size`     | `--lumo-font-size-s`          |
| Font weight   | `--vaadin-input-field-label-font-weight`   | `500`                         |

### <a id="helper"></a>Helper

| Feature     | Property                                  | Default Value                 |
| ----------- | ----------------------------------------- | ----------------------------- |
| Font size   | `--vaadin-input-field-helper-font-size`   | `--lumo-font-size-xs`         |
| Font weight | `--vaadin-input-field-helper-font-weight` | `400`                         |
| Color       | `--vaadin-input-field-helper-color`       | `--lumo-secondary-text-color` |
| Top margin  | `--vaadin-input-field-helper-spacing`     | `0.4em`                       |

### <a id="error-message"></a>Error Message

| Feature     | Property                                 | Default Value             |
| ----------- | ---------------------------------------- | ------------------------- |
| Font size   | `--vaadin-input-field-error-font-size`   | `--lumo-font-size-xs`     |
| Font weight | `--vaadin-input-field-error-font-weight` | `400`                     |
| Color       | `--vaadin-input-field-error-color`       | `--lumo-error-text-color` |

### <a id="icons"></a>Icons

| Feature   | Property                              | Default Value           |
| --------- | ------------------------------------- | ----------------------- |
| Font size | `--vaadin-input-field-icon-font-size` | `--lumo-icon-size-m`    |
| Color     | `--vaadin-input-field-icon-color`     | `--lumo-contrast-60pct` |

## <a id="css-selectors"></a>CSS Selectors

The following CSS selectors can be used in stylesheets to target the various parts and states of the component. See the [Styling documentation](https://vaadin.com/docs/v24/styling.md) for more details on how to style components.

- Root element

  `vaadin-text-field`

### <a id="states"></a>States

- Required

  `vaadin-text-field[required]`

- Focused

  `vaadin-text-field[focused]`

- Keyboard focused

  `vaadin-text-field[focus-ring]`

- Read-only

  `vaadin-text-field[readonly]`

- Disabled

  `vaadin-text-field[disabled]`

- Not empty

  `vaadin-text-field[has-value]`

- Hovered

  `vaadin-text-field:hover`

### <a id="field"></a>Field

- Field surface (background, border)

  `vaadin-text-field::part(input-field)`

- Native input element

  `vaadin-text-field > input`

- Input field with placeholder shown

  `vaadin-text-field > input:placeholder-shown`

- Clear button

  `vaadin-text-field::part(clear-button)`

- Clear button icon

  `vaadin-text-field::part(clear-button)::before`

- Prefix element

  `vaadin-text-field > [slot="prefix"]`

- Suffix element

  `vaadin-text-field > [slot="suffix"]`

### <a id="label-2"></a>Label

- Field with label

  `vaadin-text-field[has-label]`

- Label

  `vaadin-text-field::part(label)`

- Label text

  `vaadin-text-field > label`

- Required indicator

  `vaadin-text-field::part(required-indicator)`

### <a id="helper-and-validation-error"></a>Helper and Validation Error

- Field with helper

  `vaadin-text-field[has-helper]`

- Helper

  `vaadin-text-field::part(helper-text)`

- Helper text

  `vaadin-text-field > [slot="helper"]`

- Invalid field

  `vaadin-text-field[invalid]`

- Field with error message

  `vaadin-text-field[has-error-message]`

- Error message

  `vaadin-text-field::part(error-message)`

- Error message text

  `vaadin-text-field > [slot="error-message"]`
