[CSS] 입력폼에서 readonly와 disabled, 언제 어떻게 쓰고 스타일링할까?

2025. 3. 28. 12:00CSS

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

반응형

웹 개발을 하다 보면 <input type="text"> 요소에 이미 값이 들어가 있는 상태에서 특정한 스타일을 적용해야 하는 경우가 있습니다. 예를 들어, 사용자가 직접 입력한 값과 미리 설정된 값을 시각적으로 구분해야 하거나, 읽기 전용(readonly) 또는 비활성화(disabled) 상태로 설정해야 할 수도 있죠. 이번 포스팅에서는 readonlydisabled 속성의 차이와 CSS 스타일링 방법에 대해서 알아보겠습니다.

 

readonlydisabled 속성의 차이

 

readonly가 적용되는 태그

readonly는 사용자가 값을 수정할 수 없지만, 해당 요소의 값은 폼에 포함되는 속성입니다. 이 속성은 텍스트 입력 요소에만 사용 가능하며, 사용자가 입력을 변경할 수 없도록 하면서도 해당 값은 폼 제출 시 포함됩니다.

적용 가능한 태그

  • <input type="text">, <input type="password">, <input type="email">, <input type="number">
  • <textarea>

❌  적용되지 않는 태그

  • <input type="checkbox">, <input type="radio">, <input type="button">, <input type="submit">, <input type="file">
  • <select>, <button>
  • <fieldset>, <option>, <optgroup>
<input type="text" value="홍길동" readonly />
<textarea readonly>이 텍스트는 수정할 수 없습니다.</textarea>

 

disabled가 적용되는 태그

disabled는 해당 요소를 완전히 비활성화하고, 폼 제출 시에도 제외되는 속성입니다. 이 속성은 대부분의 폼 요소에 적용할 수 있으며, 사용자가 값을 입력하거나 클릭할 수 없게 됩니다. 또한, disabled 속성이 적용된 요소는 폼 제출 시 그 값이 포함되지 않습니다.

 

 적용 가능한 태그

  • <input> (모든 타입)
  • <textarea>
  • <select>
  • <button>
  • <fieldset>
  • <option>, <optgroup>
<input type="text" value="홍길동" disabled />
<select disabled>
  <option>선택할 수 없음</option>
</select>
<button disabled>클릭할 수 없음</button>

readonlydisabled 상태에서 스타일 적용하기

readonly 속성을 활용한 스타일링

input:readonly 속성을 사용하면 값이 폼에 포함되지만 사용자는 편집할 수 없습니다.

input[readonly] {
  background-color: #f8f8f8;
  color: #999;
  border: 1px solid #ddd;
  cursor: default;
}

disabled 속성을 활용한 스타일링

disabled는 폼 제출 시 값이 포함되지 않으며, 클릭이나 포커스도 불가능합니다.

input:disabled {
  background-color: #eee;
  color: #aaa;
  border: 1px solid #ccc;
  cursor: not-allowed;
}

 

 

이렇게 이번 포스팅에서는 readonly  disabled 속성의 차이와 CSS 스타일링 방법에 대해서 알아보았습니다.

 

 

 

 

 

 

 

[Git] PR 커밋 해시를 활용한 브랜치 생성 : 쉽고 간단한 가이드

가끔 코드 리뷰나 협업 과정에서 특정 PR의 커밋 해시를 로컬 환경에서 확인해야 할 때가 있습니다. 이 글에서는 원격 저장소에서 해당 커밋을 로컬로 가져와, 그 해시를 기반으로 브랜치를 생성

dev-chim.tistory.com

 

 

[Safari] 사파리 브라우저로 iPhone 웹 페이지 디버깅하는 방법 (feat. 웹 인스펙터)

사파리 브라우저로 iPhone 웹 디버깅하는 방법에 대해서 알아보겠습니다. 웹 페이지 디버깅웹 개발을 하다 보면 데스크탑 브라우저뿐만 아니라 실제 모바일 디바이스에서의 동작을 확인하고 디

dev-chim.tistory.com

 

 

[firebase] 구글 Firebase로 무료 웹호스팅하는 방법에 대해서 알아보자

이전 포스팅에서 github pages로 간단하게 사이트 url을 생성해 본 적이 있었는데요. [git] github pages로 나만의 포트폴리오 웹페이지 배포해 보기 [git] github pages로 나만의 포트폴리오 웹페이지 배포해

dev-chim.tistory.com

 

 

[HTML] 반응형으로 이미지맵 생성하는 방법

반응형으로 이미지맵을 생성하는 방법을 공유하겠습니다. 적응형 이미지맵 처리적응형으로 이미지맵을 생성하는 방법은 이전 포스팅 참고하시면 되겠습니다. [HTML] Image Map, 이미지맵으로 이미

dev-chim.tistory.com

 

 

Vite에서 모듈들 간단하게 설치해서 사용하기 (feat. sass) - 1편

프로젝트 생성 초기 폴더 구조 Vite로 프로젝트 생성 시, 초기 폴더 구조입니다 1. SASS를 설치하기 npm i sass -D package.json 파일에 sass가 설치되어 있는 것을 확인할 수 있다 SCSS로 스타일을 작성할 것

dev-chim.tistory.com

 

반응형