CSS로 읽기 전용 속성의 스타일을 지정하는 방법은 무엇입니까?


150

현재 필드를 비활성화하기 위해 readonly = "readonly"를 사용하고 있습니다. CSS를 사용하여 속성의 스타일을 지정하려고합니다. 나는 사용을 시도했다

input[readonly] {
/*styling info here*/
}

그러나 어떤 이유로 작동하지 않습니다. 나는 또한 시도했다

input[readonly='readonly'] {
/*styling info here*/
}

그것은 작동하지 않습니다.

CSS로 읽기 전용 속성의 스타일을 어떻게 지정할 수 있습니까?


12
input[readonly]작동해야합니다. 스타일 시트의 다른 특정 셀렉터가이를 덮어 쓰지 않도록하십시오.
BoltClock

1
비활성화하려면, 읽기 전용이 아닌 disabled 속성을 사용하십시오
Sven Bieder

3
@SvenBieder Readonly와 disabled는 모두 다른 동작을합니다. 비활성화 된 필드는 아닌 양식 제출시 서버로 전송 된 읽기 전용 필드입니다.
Naren

3
input[readonly='readonly']<input readonly="readonly">예를 들어 같은 HTML을 사용하는 경우에만 작동합니다 <input readonly>. input[readonly]둘 다 일치해야합니다.
Mathias Bynens

1
!important!important설정 클래스에 있지 않는 한 재정의해야 합니까?
Matt K

답변:


204
input[readonly]
{
    background-color:blue;
}

https://curtistimson.co.uk/post/css/style-readonly-attribute-css/


24
특정 값을 가지도록 디자인되지 않은 부울 속성을 input[readonly]대신 사용해야 readonly합니다.
BoltClock

1
@BoltClock 예. 아래 답변에서 해결 방법을 참조하십시오.
Pal R

다시 쓰기 가능하게하려면 어떻게해야합니까? 수업 스타일을 제거 하시겠습니까?
Renaro Santos

@RenaroSantos HTML 변경입니다. 요소 readonly="readonly"에서 제거하십시오 input.
Curt

/ IE7 승 당신은 여전히 jQuery를 함께 선택 사용할 수 있습니다
ladieu

69

참고 textarea[readonly="readonly"]사용자가 설정 한 경우 작업 readonly="readonly"HTML에 있지만 설정하는 경우가 작동하지 않습니다 readOnly에 -attribute를 true하거나 "readonly"자바 스크립트를 통해.

JavaScript로 설정 readOnly한 경우 CSS 선택기가 작동 하려면 선택기를 사용해야합니다 textarea[readonly].

Firefox 14 및 Chrome 20에서 동일한 동작입니다.

안전을 위해 두 선택기를 모두 사용합니다.

textarea[readonly="readonly"], textarea[readonly] {
...
}

18
textarea[readonly]대신 사용할 수도 있습니다 -모든 textarea[readonly="readonly"]것이 일치하도록 보장됩니다.
BoltClock

23

안전을 위해 두 가지를 모두 사용할 수 있습니다 ...

input[readonly], input[readonly="readonly"] {
    /*styling info here*/
}

읽기 전용 속성은 "부울 속성"이며, 공백 또는 "읽기 전용"(유일한 유효한 값) 일 수 있습니다. http://www.whatwg.org/specs/web-apps/current-work/#boolean-attribute

jQuery의 .prop('readonly', true)기능 과 같은 것을 사용하면을 필요 [readonly]로하는 반면을 사용 .attr("readonly", "readonly")하면을 필요로합니다 [readonly="readonly"].


수정 : 을 사용해야 input[readonly]합니다. 포함 input[readonly="readonly"]은 중복입니다. 참조 https://stackoverflow.com/a/19645203/1766230를


20

여기에 많은 답변이 있지만 내가 사용하는 답변을 보지 못했습니다.

input[type="text"]:read-only { color: blue; }

의사 선택기에서 대시를 유의하십시오. readonly="false"이 선택기는 값에 관계없이 읽기 전용의 존재를 포착하기 때문에 입력 도 마찬가지입니다. false사양에 따르면 기술적으로 는 유효하지 않지만 인터넷은 완벽한 세상이 아닙니다. 해당 사례를 다루어야 할 경우 다음을 수행 할 수 있습니다.

input[type="text"]:read-only:not([read-only="false"]) { color: blue; }

textarea 같은 방식으로 작동합니다.

textarea:read-only:not([read-only="false"]) { color: blue; }

HTML은 지금뿐만 아니라 지원하는 것을 명심 type="text"하지만, 같은 다른 텍스트 유형의 슬루 number, tel, email, date, time, url각 필요한 것 등은 선택에 추가 할 수 있습니다.


2
나도 그래. LOL 그래, 맞아! 지금은 :read-only다른 psuedo 선택기는 W3C 표준에 추가되었으며 IE 10 Preview 빌드 10547 이상과 함께 사용할 수 있습니다.
IAmNaN

6

이를 수행하는 몇 가지 방법이 있습니다.

첫 번째가 가장 널리 사용됩니다. 모든 주요 브라우저에서 작동합니다.

input[readonly] {
 background-color: #dddddd;
}

위의 내용은 readonly연결된 모든 입력을 선택하지만 아래의 내용은 원하는 항목 만 선택합니다. demo원하는 입력 유형 으로 교체하십시오 .

input[type="demo"]:read-only {
 background-color: #dddddd;
}

이것은 첫 번째 대안이지만 많이 사용되지는 않습니다.

input:read-only {
 background-color: #dddddd;
}

:read-only선택은 크롬, 오페라, 사파리에서 지원됩니다. Firefox는을 사용합니다 :-moz-read-only. IE는 :read-only선택기를 지원하지 않습니다 .

당신은 또한 사용할 수 input[readonly="readonly"]있지만 이것은 input[readonly]내 경험에서 와 거의 동일 합니다.


4
input[readonly], input:read-only {
    /* styling info here */
}

읽기 전용 입력 필드에 대한 모든 경우 를 포함 해야합니다 ...


입력 : 읽기 전용 "읽기 전용, 장애인을 기반으로 쉽게 스타일링 폼을 목표로 가변성 의사 클래스와의 contentEditable HTML 속성"는있는 그대로가 여기에 언급, css-tricks.com/almanac/selectors/r/read-write-read , 다양한 구현은 상당히 기이합니다.
peater

이것은 이상하지만 입력 [읽기 전용] 만 FF 58에서 나를 위해 일했습니다
Pavel_K

3

만의 첫 글자를 대문자로

input[readOnly] {
      background: red !important;
    }
<input type="text" name="country" value="China" readonly="readonly" />


2

ID로 입력을 선택한 다음 input[readonly="readonly"]CSS에 태그 를 추가하면 다음과 같습니다.

 #inputID input[readonly="readonly"] {
     background-color: #000000;
 }

작동하지 않습니다. 부모 클래스를 선택하거나 ID를 입력 한 다음 입력해야합니다. 다음과 같은 것 :

 .parentClass, #parentID input[readonly="readonly"] {
     background-color: #000000;
 }

직장에서 새 티켓을 기다리는 동안 내 2 센트 : D


"ID로 입력을 선택하는 경우"– OP가 아닌 OP는 무엇입니까? 그것이 사실이더라도 잘못되었으므로 하위 컴비 네이터를 제거하면됩니다.
Quentin

AH 좋아, input [readonly = "readonly"] # inputID와 같은 것을 입력해야한다는 것을 의미합니까? / 나 .. 당신 맞아요 바보
softwareplay

1

모든 브라우저에서 작동하려면 다음을 사용하십시오.

 var readOnlyAttr = $('.textBoxClass').attr('readonly');
    if (typeof readOnlyAttr !== 'undefined' && readOnlyAttr !== false) {
        $('.textBoxClass').addClass('locked');
    }

2
타겟 고객이 2 %가되지 않기를 바랍니다.
Bacco

클래스 '잠김'은 무엇입니까 ??
AdiT

$ ( '. textBoxClass'). addClass ( 'locked')는 'locked'를 포함합니다
Pal R
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.