웹 프론트엔드 JS 튜토리얼 MUI TextField: 변형, 색상 및 스타일 구축

MUI TextField: 변형, 색상 및 스타일 구축

Sep 10, 2024 am 11:06 AM

mui 텍스트 필드는 Material-UI의 기본 구성 요소로, 사용자 입력을 효율적이고 세련되게 캡처하도록 설계되었습니다. 이 가이드에서는 빌드 변형, 색상과 스타일을 통한 광범위한 사용자 정의, 애플리케이션의 UI/UX를 향상시키는 실제 사용 사례를 살펴봅니다.

MUI TextField: Build Variants, Colors & Styles

MUI 텍스트 필드 소개

mui 텍스트 필드는 웹 애플리케이션의 사용자 입력을 위한 적응성이 뛰어난 인터페이스 구성 요소를 제공하여 다양한 스타일, 구성 및 사용자 상호 작용을 지원합니다. 간단한 텍스트 입력, 비밀번호 또는 더 복잡한 여러 줄 항목을 수집하는 경우 mui 텍스트 필드는 강력한 사용자 정의 옵션을 통해 이러한 요구를 충족할 수 있는 유연성을 제공합니다.

기본 텍스트 필드

Material-UI는 기본 mui 텍스트 필드에 대해 서로 다른 UI 기본 설정 및 사용자 경험에 맞게 조정된 세 가지 고유한 빌드 변형을 제공합니다.

  1. 표준: 초점에서 눈에 띄는 밑줄을 사용하여 미니멀리스트 접근 방식을 제공합니다. 인터페이스가 어수선하지 않은 깨끗하고 현대적인 디자인에 이상적입니다.
  2. 채움: 이 변형은 밝은 배경 채우기와 필드가 활성화될 때만 나타나는 밑줄을 도입하여 미묘한 깊이와 강조를 추가합니다.
  3. 개요: 텍스트 필드 주위에 완전한 테두리가 있어 다양한 배경에서 가시성이 향상되고 대화형 요소에 대한 명확한 경계를 제공합니다.

MUI TextField: Build Variants, Colors & Styles

코드로 구현:

import * as React from 'react';
import Box from '@mui/material/Box';
import TextField from '@mui/material/TextField';


// BasicTextFields Component: Demonstrates different TextField variants.
export default function BasicTextFields() {
  return (
    // Container component for form elements with specified margins and width
    <Box
      component="form"
      sx={{ '& > :not(style)': { m: 1, width: '25ch' } }} // Apply margin and width to each TextField
      noValidate // Disables browser validation
      autoComplete="off" // Disables autocomplete feature
    >
      {/* Outlined TextField: Uses a border to define the input area */}
      <TextField id="outlined-basic" label="Outlined" variant="outlined" />


      {/* Filled TextField: Includes a background fill to highlight the input area */}
      <TextField id="filled-basic" label="Filled" variant="filled" />


      {/* Standard TextField: Features a minimalist design with a bottom underline */}
      <TextField id="standard-basic" label="Standard" variant="standard" />
    </Box>
  );
}
로그인 후 복사

양식 소품

mui 텍스트 필드는 기능과 사용자 상호 작용을 향상시키는 다양한 표준 양식 속성을 처리할 수 있는 기능을 갖추고 있습니다. 이러한 속성에는 사용자 입력을 안내하고 양식 무결성을 유지하는 데 필수적인 필수, 비활성화 및 유형과 같은 옵션이 포함됩니다. 또한 helperText 소품은 필드 입력에 대한 컨텍스트를 제공하고 유틸리티를 설명하거나 예상 형식에 대한 지침을 제공하는 데 특히 유용합니다.

다음은 주요 양식 소품입니다:

  • 필수: 필드를 필수로 표시하여 사용자에게 양식을 제출하기 전에 해당 필드를 작성하라는 메시지를 표시합니다. 이는 모든 필수 정보를 수집하는 데 매우 중요합니다.
  • disabled: 입력 필드를 일시적으로 비활성화하여 비대화형으로 만듭니다. 이는 사용자 입력을 수락하기 전에 특정 조건을 충족해야 하는 시나리오에서 유용합니다.
  • 유형: 텍스트, 비밀번호, 숫자 등 텍스트 필드에 예상되는 데이터 유형을 정의합니다. 이는 양식 데이터를 올바르게 구성하는 데 도움이 되며 사용자 입력이 필수 형식과 일치하도록 보장합니다.
  • helperText: 입력 필드와 관련된 추가 세부 정보 또는 지침을 제공합니다. 이는 데이터의 목적을 명확히 하거나 사용자에게 양식을 올바르게 작성하는 방법을 안내하는 데 사용될 수 있습니다.

MUI TextField: Build Variants, Colors & Styles

코드로 구현:

import * as React from 'react';
import Box from '@mui/material/Box';
import TextField from '@mui/material/TextField';


// FormPropsTextFields Component: Showcases TextField with various props and states.
export default function FormPropsTextFields() {
  return (
    // Container for the form elements with specified margins and width
    <Box
      component="form"
      sx={{ '& .MuiTextField-root': { m: 1, width: '25ch' } }}
      noValidate // Disables HTML5 validation
      autoComplete="off" // Turns off auto-completion
    >
      {/* Section for Outlined TextFields with various configurations */}
      <div>
        <TextField
          required
          id="outlined-required"
          label="Required"
          defaultValue="Hello World" // Pre-filled text
        />
        <TextField
          disabled
          id="outlined-disabled"
          label="Disabled"
          defaultValue="Hello World" // Pre-filled text, non-interactive
        />
        <TextField
          id="outlined-password-input"
          label="Password"
          type="password" // Hides the text input
          autoComplete="current-password"
        />
        <TextField
          id="outlined-read-only-input"
          label="Read Only"
          defaultValue="Hello World"
          slotProps={{ input: { readOnly: true } }} // Non-editable input
        />
        <TextField
          id="outlined-number"
          label="Number"
          type="number" // Numeric input
          slotProps={{ inputLabel: { shrink: true } }} // Label configuration
        />
        <TextField
          id="outlined-search"
          label="Search field"
          type="search" // Optimized for search input
        />
        <TextField
          id="outlined-helperText"
          label="Helper text"
          defaultValue="Default Value"
          helperText="Some important text" // Additional information for the user
        />
      </div>
      {/* Section for Filled TextFields, similar configurations as above, different variant */}
      <div>
        <TextField
          required
          id="filled-required"
          label="Required"
          defaultValue="Hello World"
          variant="filled"
        />
        <TextField
          disabled
          id="filled-disabled"
          label="Disabled"
          defaultValue="Hello World"
          variant="filled"
        />
        // Remaining Filled TextFields omitted for brevity
      </div>
      {/* Section for Standard TextFields, similar configurations as above, different variant */}
      <div>
        <TextField
          required
          id="standard-required"
          label="Required"
          defaultValue="Hello World"
          variant="standard"
        />
        <TextField
          disabled
          id="standard-disabled"
          label="Disabled"
          defaultValue="Hello World"
          variant="standard"
        />
        // Remaining Standard TextFields omitted for brevity
      </div>
    </Box>
  );
}
로그인 후 복사

여러 줄 텍스트 필드

mui 텍스트 필드의 여러 줄 속성은 표준 텍스트 필드를 TextareaAutosize 요소로 변환하는 강력한 기능으로, 댓글, 설명 또는 피드백 양식과 같이 긴 텍스트 항목이 필요한 입력에 이상적입니다. 이 기능은 사용자가 한 줄의 텍스트를 초과하는 자세한 정보를 제공해야 하는 양식에 특히 유용합니다.

텍스트 필드의 크기를 더 세밀하게 제어해야 하는 시나리오의 경우 minRows 및 maxRows 소품을 사용하여 높이에 대한 최소 및 최대 경계를 설정할 수 있습니다. 이는 특정 레이아웃 미학을 유지하려는 경우나 특정 길이 제한 내에 있을 것으로 예상되는 양식 입력을 처리할 때 특히 유용합니다.

MUI TextField: Build Variants, Colors & Styles

코드로 구현:

import * as React from 'react';
import Box from '@mui/material/Box';
import TextField from '@mui/material/TextField';


// MULTILINE TEXT FIELDS COMPONENT: Demonstrates various multiline TextField configurations.
export default function MultilineTextFields() {
  return (
    // Container for the multiline TextField elements with specified margins and width
    <Box
      component="form"
      sx={{ '& .MuiTextField-root': { m: 1, width: '25ch' } }}
      noValidate // Disables browser validation
      autoComplete="off" // Turns off auto-completion
    >
      {/* OUTLINED TEXTFIELDS GROUP */}
      <div>
        <TextField
          id="outlined-multiline-flexible"
          label="Multiline"
          multiline
          maxRows={4} // Allows flexible number of rows up to 4
        />
        <TextField
          id="outlined-textarea"
          label="Multiline Placeholder"
          placeholder="Placeholder" // Placeholder text for empty field
          multiline
        />
        <TextField
          id="outlined-multiline-static"
          label="Multiline"
          multiline
          rows={4} // Fixed number of rows
          defaultValue="Default Value" // Pre-filled text
        />
      </div>


      {/* FILLED TEXTFIELDS GROUP */}
      <div>
        <TextField
          id="filled-multiline-flexible"
          label="Multiline"
          multiline
          maxRows={4}
          variant="filled" // Filled style variant
        />
        <TextField
          id="filled-textarea"
          label="Multiline Placeholder"
          placeholder="Placeholder"
          multiline
          variant="filled"
        />
        <TextField
          id="filled-multiline-static"
          label="Multiline"
          multiline
          rows={4}
          defaultValue="Default Value"
          variant="filled"
        />
      </div>


      {/* STANDARD TEXTFIELDS GROUP */}
      <div>
        <TextField
          id="standard-multiline-flexible"
          label="Multiline"
          multiline
          maxRows={4}
          variant="standard" // Standard style variant
        />
        <TextField
          id="standard-textarea"
          label="Multiline Placeholder"
          placeholder="Placeholder"
          multiline
          variant="standard"
        />
        <TextField
          id="standard-multiline-static"
          label="Multiline"
          multiline
          rows={4}
          defaultValue="Default Value"
          variant="standard"
        />
      </div>
    </Box>
  );
}
로그인 후 복사

선택하다

mui 텍스트 필드의 select 소품은 Select 구성 요소를 내부적으로 통합하여 표준 텍스트 필드를 드롭다운 메뉴로 변환합니다. 이 수정을 통해 사전 정의된 옵션 중에서 원활하게 선택할 수 있으므로 사용자가 세트 목록에서 선택해야 하는 양식에 특히 유용합니다.

MUI TextField: Build Variants, Colors & Styles

코드로 구현:

import * as React from 'react';
import Box from '@mui/material/Box';
import TextField from '@mui/material/TextField';
import MenuItem from '@mui/material/MenuItem';


// Currency options for the select dropdown.
const currencies = [
  { value: 'USD', label: '$' },
  { value: 'EUR', label: '€' },
  { value: 'BTC', label: '฿' },
  { value: 'JPY', label: '¥' },
];


// SELECT TEXT FIELDS COMPONENT: Demonstrates TextField with select dropdowns.
export default function SelectTextFields() {
  return (
    // Container for the select TextField elements with specified margins and width
    <Box
      component="form"
      sx={{ '& .MuiTextField-root': { m: 1, width: '25ch' } }}
      noValidate // Disables browser validation
      autoComplete="off" // Turns off auto-completion
    >
      {/* OUTLINED SELECT TEXTFIELDS GROUP */}
      <div>
        <TextField
          id="outlined-select-currency"
          select
          label="Select"
          defaultValue="EUR" // Pre-selected currency
          helperText="Please select your currency" // Additional information for the user
        >
          {currencies.map((option) => (
            <MenuItem key={option.value} value={option.value}>
              {option.label}
            </MenuItem>
          ))}
        </TextField>
        <TextField
          id="outlined-select-currency-native"
          select
          label="Native select"
          defaultValue="EUR"
          slotProps={{ select: { native: true } }} // Uses native select element
          helperText="Please select your currency"
        >
          {currencies.map((option) => (
            <option key={option.value} value={option.value}>
              {option.label}
            </option>
          ))}
        </TextField>
      </div>


      {/* FILLED SELECT TEXTFIELDS GROUP */}
      <div>
        <TextField
          id="filled-select-currency"
          select
          label="Select"
          defaultValue="EUR"
          variant="filled" // Filled style variant
          helperText="Please select your currency"
        >
          {currencies.map((option) => (
            <MenuItem key={option.value} value={option.value}>
              {option.label}
            </MenuItem>
          ))}
        </TextField>
        <TextField
          id="filled-select-currency-native"
          select
          label="Native select"
          defaultValue="EUR"
          variant="filled"
          slotProps={{ select: { native: true } }}
          helperText="Please select your currency"
        >
          {currencies.map((option) => (
            <option key={option.value} value={option.value}>
              {option.label}
            </option>
          ))}
        </TextField>
      </div>


      {/* STANDARD SELECT TEXTFIELDS GROUP */}
      <div>
        <TextField
          id="standard-select-currency"
          select
          label="Select"
          defaultValue="EUR"
          variant="standard" // Standard style variant
          helperText="Please select your currency"
        >
          {currencies.map((option) => (
            <MenuItem key={option.value} value={option.value}>
              {option.label}
            </MenuItem>
          ))}
        </TextField>
        <TextField
          id="standard-select-currency-native"
          select
          label="Native select"
          defaultValue="EUR"
          variant="standard"
          slotProps={{ select: { native: true } }}
          helperText="Please select your currency"
        >
          {currencies.map((option) => (
            <option key={option.value} value={option.value}>
              {option.label}
            </option>
          ))}
        </TextField>
      </div>
    </Box>
  );
}
로그인 후 복사

Input Adornments

Input Adornments in Material-UI's mui textfield offer a flexible way to incorporate additional elements like prefixes, suffixes, or interactive icons directly within the text field.

MUI TextField: Build Variants, Colors & Styles

Implementation with Code:

import * as React from 'react';
import Box from '@mui/material/Box';
import IconButton from '@mui/material/IconButton';
import Input from '@mui/material/Input';
import FilledInput from '@mui/material/FilledInput';
import OutlinedInput from '@mui/material/OutlinedInput';
import InputLabel from '@mui/material/InputLabel';
import InputAdornment from '@mui/material/InputAdornment';
import FormHelperText from '@mui/material/FormHelperText';
import FormControl from '@mui/material/FormControl';
import TextField from '@mui/material/TextField';
import Visibility from '@mui/icons-material/Visibility';
import VisibilityOff from '@mui/icons-material/VisibilityOff';


// INPUT ADORNMENTS COMPONENT: Demonstrates various ways to use Input Adornments with TextField and FormControl.
export default function InputAdornments() {
  const [showPassword, setShowPassword] = React.useState(false);


  const handleClickShowPassword = () => setShowPassword((show) => !show);
  const handleMouseDownPassword = (event) => event.preventDefault();
  const handleMouseUpPassword = (event) => event.preventDefault();


  return (
    <Box sx={{ display: 'flex', flexWrap: 'wrap' }}>
      {/* OUTLINED VARIANT GROUP */}
      <div>
        <TextField
          label="With normal TextField"
          id="outlined-start-adornment"
          sx={{ m: 1, width: '25ch' }}
          InputProps={{
            startAdornment: <InputAdornment position="start">kg</InputAdornment>,
          }}
        />
        <FormControl sx={{ m: 1, width: '25ch' }} variant="outlined">
          <OutlinedInput
            id="outlined-adornment-weight"
            endAdornment={<InputAdornment position="end">kg</InputAdornment>}
            aria-describedby="outlined-weight-helper-text"
          />
          <FormHelperText id="outlined-weight-helper-text">Weight</FormHelperText>
        </FormControl>
        <FormControl sx={{ m: 1, width: '25ch' }} variant="outlined">
          <InputLabel htmlFor="outlined-adornment-password">Password</InputLabel>
          <OutlinedInput
            id="outlined-adornment-password"
            type={showPassword ? 'text' : 'password'}
            endAdornment={
              <InputAdornment position="end">
                <IconButton
                  aria-label="toggle password visibility"
                  onClick={handleClickShowPassword}
                  onMouseDown={handleMouseDownPassword}
                  onMouseUp={handleMouseUpPassword}
                  edge="end"
                >
                  {showPassword ? <VisibilityOff /> : <Visibility />}
                </IconButton>
              </InputAdornment>
            }
            label="Password"
          />
        </FormControl>
        <FormControl fullWidth sx={{ m: 1 }}>
          <InputLabel htmlFor="outlined-adornment-amount">Amount</InputLabel>
          <OutlinedInput
            id="outlined-adornment-amount"
            startAdornment={<InputAdornment position="start">$</InputAdornment>}
            label="Amount"
          />
        </FormControl>
      </div>
      {/* FILLED VARIANT GROUP */}
      <div>
        <TextField
          label="With normal TextField"
          id="filled-start-adornment"
          sx={{ m: 1, width: '25ch' }}
          InputProps={{
            startAdornment: <InputAdornment position="start">kg</InputAdornment>,
          }}
          variant="filled"
        />
        <FormControl sx={{ m: 1, width: '25ch' }} variant="filled">
          <FilledInput
            id="filled-adornment-weight"
            endAdornment={<InputAdornment position="end">kg</InputAdornment>}
            aria-describedby="filled-weight-helper-text"
          />
          <FormHelperText id="filled-weight-helper-text">Weight</FormHelperText>
        </FormControl>
        <FormControl sx={{ m: 1, width: '25ch' }} variant="filled">
          <InputLabel htmlFor="filled-adornment-password">Password</InputLabel>
          <FilledInput
            id="filled-adornment-password"
            type={showPassword ? 'text' : 'password'}
            endAdornment={
              <InputAdornment position="end">
                <IconButton
                  aria-label="toggle password visibility"
                  onClick={handleClickShowPassword}
                  onMouseDown={handleMouseDownPassword}
                  onMouseUp={handleMouseUpPassword}
                  edge="end"
                >
                  {showPassword ? <VisibilityOff /> : <Visibility />}
                </IconButton>
              </InputAdornment>
            }
          />
        </FormControl>
        <FormControl fullWidth sx={{ m: 1 }} variant="filled">
          <InputLabel htmlFor="filled-adornment-amount">Amount</InputLabel>
          <FilledInput
            id="filled-adornment-amount"
            startAdornment={<InputAdornment position="start">$</InputAdornment>}
          />
        </FormControl>
      </div>
      {/* STANDARD VARIANT GROUP */}
      <div>
        <TextField
          label="With normal TextField"
          id="standard-start-adornment"
          sx={{ m: 1, width: '25ch' }}
          InputProps={{
            startAdornment: <InputAdornment position="start">kg</InputAdornment>,
          }}
          variant="standard"
        />
        <FormControl variant="standard" sx={{ m: 1, mt: 3, width: '25ch' }}>
          <Input
            id="standard-adornment-weight"
            endAdornment={<InputAdornment position="end">kg</InputAdornment>}
            aria-describedby="standard-weight-helper-text"
          />
          <FormHelperText id="standard-weight-helper-text">Weight</FormHelperText>
        </FormControl>
        <FormControl sx={{ m: 1, width: '25ch' }} variant="standard">

         <Input
        id="standard-adornment-password"
        type={showPassword ? 'text' : 'password'}
        endAdornment={
          <InputAdornment position="end">
            <IconButton
              aria-label="toggle password visibility"
              onClick={handleClickShowPassword}
              onMouseDown={handleMouseDownPassword}
              onMouseUp={handleMouseUpPassword}
            >
              {showPassword ? <VisibilityOff /> : <Visibility />}
            </IconButton>
          </InputAdornment>
        }
      />
    </FormControl>
    <FormControl fullWidth sx={{ m: 1 }} variant="standard">
      <InputLabel htmlFor="standard-adornment-amount">Amount</InputLabel>
      <Input
        id="standard-adornment-amount"
        startAdornment={<InputAdornment position="start">$</InputAdornment>}
      />
    </FormControl>
  </div>
</Box>
)
};
로그인 후 복사

Margin

The margin prop in the mui textfield component is a practical attribute that allows you to control the vertical spacing of the text field within a form. This can be crucial for achieving the desired layout and ensuring that the form is visually appealing.

The margin prop accepts three values: none, dense, and normal. Each of these settings adjusts the amount of space around the text field, affecting how compact or spread out the form elements appear.

  • none (default): Applies no additional margin to the TextField. This setting is useful when you want to handle spacing through other means, such as using grid systems or custom CSS.
  • dense: Reduces the amount of vertical space around the text field. This is ideal for forms where space is limited or when many elements need to be displayed without overwhelming the user.
  • normal: Increases the vertical spacing for better readability and separation between fields. This setting is often used in forms where clarity and ease of use are prioritized.

MUI TextField: Build Variants, Colors & Styles

Implementation with Code:

import * as React from 'react';
import Box from '@mui/material/Box';
import TextField from '@mui/material/TextField';


// RedBar Component: Displays a red horizontal bar to visually separate elements.
function RedBar() {
  return (
    // Styling applied using a function to access the theme for conditional styles
    <Box
      sx={(theme) => ({
        height: 20, // Fixed height for the bar
        backgroundColor: 'rgba(255, 0, 0, 0.1)', // Light red background color
        ...theme.applyStyles('dark', { // Conditional style application for dark themes
          backgroundColor: 'rgb(255 132 132 / 25%)',
        }),
      })}
    />
  );
}


// LayoutTextFields Component: Demonstrates TextField components with different margin settings.
export default function LayoutTextFields() {
  return (
    <Box
      sx={{
        display: 'flex', // Flexbox container for layout
        flexDirection: 'column', // Arranges children vertically
        '& .MuiTextField-root': { width: '25ch' }, // Standard width applied to all TextFields
      }}
    >
      <RedBar />
      <TextField label={'margin="none"'} id="margin-none" /> // TextField with no margin
      <RedBar />
      <TextField label={'margin="dense"'} id="margin-dense" margin="dense" /> // TextField with dense margin for tighter spacing
      <RedBar />
      <TextField label={'margin="normal"'} id="margin-normal" margin="normal" /> // TextField with normal margin for standard spacing
      <RedBar />
    </Box>
  );
}
로그인 후 복사

Controlled vs. Uncontrolled Components

In React, components like mui textfield can be either controlled or uncontrolled, which refers to how their state is managed.

  • A controlled TextField is managed by state and props within a parent component, offering precise value handling and updates.
  • Conversely, an uncontrolled TextField maintains its own internal state, initialized with defaultValue, simplifying setup but offering less direct control over its state.

MUI TextField: Build Variants, Colors & Styles

Implementation with Code:

import * as React from 'react';
import Box from '@mui/material/Box';
import TextField from '@mui/material/TextField';


// StateTextFields Component: Demonstrates the use of controlled and uncontrolled TextField components.
export default function StateTextFields() {
  // State hook for controlling the TextField value
  const [name, setName] = React.useState('Cat in the Hat');


  return (
    // Container for the form elements with specific margin and width styles
    <Box
      component="form"
      sx={{ '& > :not(style)': { m: 1, width: '25ch' } }} // Apply margin and width to each TextField
      noValidate // Disables browser validation
      autoComplete="off" // Turns off auto-completion
    >
      {/* CONTROLLED TEXTFIELD */}
      <TextField
        id="outlined-controlled"
        label="Controlled" // Label for the TextField
        value={name} // Controlled value linked to state
        onChange={(event) => {
          setName(event.target.value); // Update state based on input
        }}
      />
      {/* UNCONTROLLED TEXTFIELD */}
      <TextField
        id="outlined-uncontrolled"
        label="Uncontrolled" // Label for the TextField
        defaultValue="foo" // Initial value for the uncontrolled TextField
      />
    </Box>
  );
}
로그인 후 복사

Inputs

Material-UI's Input component provides a streamlined way to handle user inputs in forms. It supports various states such as default values, placeholders, disabled inputs, and error handling.

MUI TextField: Build Variants, Colors & Styles

Implementation with Code:

import * as React from 'react';
import Box from '@mui/material/Box';
import Input from '@mui/material/Input';


// Accessibility label configuration for inputs.
const ariaLabel = { 'aria-label': 'description' };


// Inputs Component: Demonstrates various configurations of MUI Input components.
export default function Inputs() {
  return (
    // Form container that applies margin to each input and disables browser validation and autocomplete.
    <Box
      component="form"
      sx={{ '& > :not(style)': { m: 1 } }} // Margin applied to all direct children except <style> elements
      noValidate // Disables HTML form validation.
      autoComplete="off" // Prevents the browser from auto-filling input fields.
    >
      {/* STANDARD INPUT */}
      <Input
        defaultValue="Hello world" // Sets initial value for the input
        inputProps={ariaLabel} // Accessibility properties
      />
      {/* INPUT WITH PLACEHOLDER */}
      <Input
        placeholder="Placeholder" // Displays placeholder text when the input is empty
        inputProps={ariaLabel} // Accessibility properties
      />
      {/* DISABLED INPUT */}
      <Input
        disabled // Disables the input field
        defaultValue="Disabled" // Sets initial value for the input
        inputProps={ariaLabel} // Accessibility properties
      />
      {/* ERROR INPUT */}
      <Input
        defaultValue="Error" // Sets initial value for the input
        error // Indicates an error with a visual cue
        inputProps={ariaLabel} // Accessibility properties
      />
    </Box>
  );
}
로그인 후 복사

Color

The color prop changes the highlight color of the text field when focused.

MUI TextField: Build Variants, Colors & Styles

Implementation with Code:

import * as React from 'react';
import Box from '@mui/material/Box';
import TextField from '@mui/material/TextField';


// ColorTextFields Component: Demonstrates TextField components styled with various color schemes.
export default function ColorTextFields() {
  return (
    // Form container applying margin and width to each TextField component
    <Box
      component="form"
      sx={{ '& > :not(style)': { m: 1, width: '25ch' } }} // Specifies margin and width for direct children
      noValidate // Disables HTML5 validation
      autoComplete="off" // Disables browser auto-completion
    >
      {/* OUTLINED TEXTFIELD WITH SECONDARY COLOR */}
      <TextField
        label="Outlined secondary" // Label text for the TextField
        color="secondary" // Applies the secondary color theme
        focused // Keeps the TextField visually focused
      />
      {/* FILLED TEXTFIELD WITH SUCCESS COLOR */}
      <TextField
        label="Filled success" // Label text for the TextField
        variant="filled" // Uses the filled variant of the TextField
        color="success" // Applies the success color theme, often green
        focused // Keeps the TextField visually focused
      />
      {/* STANDARD TEXTFIELD WITH WARNING COLOR */}
      <TextField
        label="Standard warning" // Label text for the TextField
        variant="standard" // Uses the standard variant, minimal styling
        color="warning" // Applies the warning color theme, often yellow or orange
        focused // Keeps the TextField visually focused
      />
    </Box>
  );
}
로그인 후 복사

Conclusion

Throughout this guide, we've explored the diverse capabilities of the MUI TextField component, covering its variants, styles, colors, and additional functionalities like select options and input adornments.

  1. Variants and Styles: We discussed how different TextField variants like standard, filled, and outlined can be utilized to meet specific design needs, enhancing the form's usability and appearance.
  2. Functionality Enhancements: By leveraging props such as select and input adornments, TextField can be transformed to accommodate more complex user interactions, such as selecting from dropdowns or adding icons for improved functionality.
  3. Form Management: The distinction between controlled and uncontrolled components was highlighted, emphasizing their roles in managing form state and interactions in React applications.
  4. Basic Inputs: The simplicity and flexibility of the MUI Input component were showcased, demonstrating how it can handle various input states to streamline user form interactions.

The versatility of MUI components allows developers to build comprehensive, responsive, and accessible user interfaces. For further customization and deeper understanding, refer to the official Material-UI documentation.

위 내용은 MUI TextField: 변형, 색상 및 스타일 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

JavaScript 엔진 : 구현 비교 JavaScript 엔진 : 구현 비교 Apr 13, 2025 am 12:05 AM

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

Python vs. JavaScript : 학습 곡선 및 사용 편의성 Python vs. JavaScript : 학습 곡선 및 사용 편의성 Apr 16, 2025 am 12:12 AM

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지 C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지 Apr 14, 2025 am 12:05 AM

C/C에서 JavaScript로 전환하려면 동적 타이핑, 쓰레기 수집 및 비동기 프로그래밍으로 적응해야합니다. 1) C/C는 수동 메모리 관리가 필요한 정적으로 입력 한 언어이며 JavaScript는 동적으로 입력하고 쓰레기 수집이 자동으로 처리됩니다. 2) C/C를 기계 코드로 컴파일 해야하는 반면 JavaScript는 해석 된 언어입니다. 3) JavaScript는 폐쇄, 프로토 타입 체인 및 약속과 같은 개념을 소개하여 유연성과 비동기 프로그래밍 기능을 향상시킵니다.

JavaScript 및 웹 : 핵심 기능 및 사용 사례 JavaScript 및 웹 : 핵심 기능 및 사용 사례 Apr 18, 2025 am 12:19 AM

웹 개발에서 JavaScript의 주요 용도에는 클라이언트 상호 작용, 양식 검증 및 비동기 통신이 포함됩니다. 1) DOM 운영을 통한 동적 컨텐츠 업데이트 및 사용자 상호 작용; 2) 사용자가 사용자 경험을 향상시키기 위해 데이터를 제출하기 전에 클라이언트 확인이 수행됩니다. 3) 서버와의 진실한 통신은 Ajax 기술을 통해 달성됩니다.

자바 스크립트 행동 : 실제 예제 및 프로젝트 자바 스크립트 행동 : 실제 예제 및 프로젝트 Apr 19, 2025 am 12:13 AM

실제 세계에서 JavaScript의 응용 프로그램에는 프론트 엔드 및 백엔드 개발이 포함됩니다. 1) DOM 운영 및 이벤트 처리와 관련된 TODO 목록 응용 프로그램을 구축하여 프론트 엔드 애플리케이션을 표시합니다. 2) Node.js를 통해 RESTFULAPI를 구축하고 Express를 통해 백엔드 응용 프로그램을 시연하십시오.

JavaScript 엔진 이해 : 구현 세부 사항 JavaScript 엔진 이해 : 구현 세부 사항 Apr 17, 2025 am 12:05 AM

보다 효율적인 코드를 작성하고 성능 병목 현상 및 최적화 전략을 이해하는 데 도움이되기 때문에 JavaScript 엔진이 내부적으로 작동하는 방식을 이해하는 것은 개발자에게 중요합니다. 1) 엔진의 워크 플로에는 구문 분석, 컴파일 및 실행; 2) 실행 프로세스 중에 엔진은 인라인 캐시 및 숨겨진 클래스와 같은 동적 최적화를 수행합니다. 3) 모범 사례에는 글로벌 변수를 피하고 루프 최적화, Const 및 Lets 사용 및 과도한 폐쇄 사용을 피하는 것이 포함됩니다.

Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스 Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스 Apr 15, 2025 am 12:16 AM

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

Python vs. JavaScript : 개발 환경 및 도구 Python vs. JavaScript : 개발 환경 및 도구 Apr 26, 2025 am 12:09 AM

개발 환경에서 Python과 JavaScript의 선택이 모두 중요합니다. 1) Python의 개발 환경에는 Pycharm, Jupyternotebook 및 Anaconda가 포함되어 있으며 데이터 과학 및 빠른 프로토 타이핑에 적합합니다. 2) JavaScript의 개발 환경에는 Node.js, VScode 및 Webpack이 포함되어 있으며 프론트 엔드 및 백엔드 개발에 적합합니다. 프로젝트 요구에 따라 올바른 도구를 선택하면 개발 효율성과 프로젝트 성공률이 향상 될 수 있습니다.

See all articles