CSS 너비 / 높이 또는 HTML cols / rows 속성을 사용하여 텍스트 영역의 크기를 조정해야합니까?


307

포함 된 새 양식을 개발할 때마다 textarea치수를 지정해야 할 때 다음과 같은 딜레마가 발생합니다.

CSS를 사용 하거나 textarea의 속성 colsrows?

각 방법의 장단점은 무엇입니까?

이러한 속성을 사용하는 의미는 무엇입니까?

보통 어떻게됩니까?

답변:


268

둘 다 사용하는 것이 좋습니다. 클라이언트가 CSS를 지원하지 않는 경우 행과 열이 필요하고 유용합니다. 그러나 디자이너로서 나는 내가 원하는 크기를 정확히 얻도록 덮어 씁니다.

권장되는 방법은 외부 스타일 시트를 통하는 것입니다. 예 :

textarea {
  width: 300px;
  height: 150px;
}
<textarea> </textarea>


4
이것은 괜찮지 만 크기를 설정하는 임의의 공간이 낭비되고 실제로 보여주기위한 것임을 알아야합니다.
폭발 약

4
@tandu : "낭비하고 실제로 보여줄뿐"이란 무엇입니까?
BoltClock

2
행 / 콜은 사용자의 문자 크기를 기준으로합니다. 따라서 텍스트 영역에서 문자의 픽셀로 나눌 수없는 CSS 정의 너비 / 높이가 있으면 세로 및 가로로 많은 흰색이 남을 것입니다. 아마 아무도 눈치 채지 못할 것입니다.
폭발 약

21
픽셀 대신 "em"을 측정으로 사용할 수 있습니다. 1em은 모든 글꼴과 크기에서 "M"의 너비입니다. 그러나 col은 monospace 글꼴과 함께 사용하는 경우에만 관련이 있으며 대부분의 디자인에서는 그렇지 않습니다. 높이를 완벽하게 line-height맞추려면 텍스트 영역의 높이에 배수를 사용 하십시오.
kogakure

5
@LeoGalleguillos“ 클라이언트가 CSS를 지원하지 않는 경우 필요하고 유용 합니다 ”. 아무도 검증에 대해 아무 말도하지 않았습니다.
Janus Bahs Jacquet

96

textarea { height: auto; }
<textarea rows="10"></textarea>

이렇게하면 브라우저가 텍스트 영역의 높이를 행 수와 그 주변의 패딩으로 정확하게 설정하도록 트리거합니다. CSS 높이를 정확한 픽셀 수로 설정하면 임의의 공백이 남습니다.


4
불행히도, "텍스트 영역의 높이가 Firefox의 행과 일치하지 않습니다"- "rows + 1"입니다. stackoverflow.com/q/7695945/1266880
apurkrt

2
'13 년 이후로 상황이 바뀌 었는지 또는 내 특정 상황에 대해 명백하지 않은 것이 있는지 확실 height: auto;하지 않지만 CSS 설정 은 내 텍스트 영역에 전혀 영향을 미치지 않는 것 같습니다.
clozach

10

w3c에 따르면 cols와 rows는 모두 textareas의 필수 속성입니다. 행과 열은 픽셀이나 잠재적으로 임의의 다른 값이 아닌 텍스트 영역에 들어갈 문자 수입니다. 행 / 콜로 이동하십시오.


8
w3c 학교는 rows and cols 속성을 통해 설정할 수 있지만 높이와 너비를 설정하는 것이 좋습니다. w3c.org에서 textarea의 필수 속성 인 행과 열에 대한 언급은 없습니다. w3schools.com/tags/tag_textarea.asp w3.org/wiki/HTML/Elements/textarea
Michael Stramel

17
@MichaelStramel 내 대답은 4 살입니다 :)-그건 그렇고 그것은 w3c 학교 가 아닙니다 . 그들은 제휴하지 않습니다. HTML5에 더 이상 필요한 속성 개념이 있는지 확실하지 않지만 잘못 생각할 수 있습니다. 그래도 왜 너비 / 높이를 설정하는 것이 행 / 콜보다 더 좋은지 알 수 없습니다.
Explosion Pills

3
댓글을 달고이 게시물을 읽는 사람과 관련이 있다고 느꼈습니다. 또한 반응 형 디자인을 사용하면 행과 열이 JavaScript를 통해 설정되지 않으면 문제가 발생할 수 있습니다. IMO는 CSS를 통해 훨씬 더 나은 방법으로 설정합니다.
Michael Stramel

6

대답은 "예"입니다. 즉, 둘 다 사용해야합니다. 행과 열이 없으면 (그리고 명시 적으로 사용하지 않더라도 기본값이 있음) CSS가 비활성화되거나 사용자 스타일 시트에 의해 재정의되는 경우 텍스트 영역이 사용할 수 없을 정도로 작습니다. 접근성 문제를 항상 염두에 두십시오. 그 존재는 스타일 시트가 텍스트 영역의 모양을 제어 할 수있는 경우, 당신은 일반적으로 잘 전체 페이지 디자인에 훨씬 좋아 보이는 뭔가 맞는와 바람 것, 말했다 (즉, 사용자 입력을 유지하기 위해 크기를 조정할 수 있습니다 물론 좋은 맛의 한계 내에서).


6

텍스트 영역의 경우 CSS 아래에서 크기를 수정할 수 있습니다.

    <textarea  class="form-control" style=" min-width:500px; max-width:100%;min-height:50px;height:100%;width:100%;" ></textarea>

angularjs 및 angular7에서 테스트


1
이것이 Angular와 어떤 관련이 있습니까? 그리고
2010/02의

5
 <textarea style="width:300px; height:150px;" ></textarea>

19
@ user470962 Ad hominem. 구문 오류를 '<textarea style = "width : 300px; height : 150px;">'로 수정하면 코드가 정상입니다. 누군가를 모욕 할 필요가 없습니다. 보시다시피 가장 인기있는 답변은 그의 것과 다릅니다. +1
TAAPSogeking

1
@TAAP 공정성을 고려하면, 이것은 4 년 후 같은 대답입니다. -1
Rambatino

4

텍스트 영역의 크기는 cols 및 rows 속성으로 지정하거나 더 좋게 지정할 수 있습니다. CSS의 높이 및 너비 속성을 통해 cols 속성은 모든 주요 브라우저에서 지원됩니다. 한 가지 주요 차이점은 <TEXTAREA ...>컨테이너 태그입니다. 시작 태그 ()가 있습니다.


2

나는 보통을 지정하지 않지만 and 및을 height지정 합니다.width: ...rowscols

일반적으로, 내 경우 만 width하고 rows다른 elems에 베풀어 관련 봐 좋은에 텍스트 영역을 위해 필요하다. (그리고 cols다른 답변에서 설명한 것처럼 누군가 CSS를 사용하지 않으면 대체됩니다.)

((두 가지를 모두 지정 rows하고 height중복 데이터와 같은 느낌이 들까 요?))


2

텍스트 영역의 주요 특징은 확장 가능하다는 것입니다. 웹 페이지에서 텍스트 길이가 설정 한 공간을 초과하는 경우 (행을 사용하거나 CSS를 사용하는 경우) 스크롤 막대가 텍스트 영역에 나타날 수 있습니다. 'printing'to PDF-조건부 CSS 규칙을 사용하여 인쇄 된 텍스트 영역에 대해 편안하게 큰 최소 높이를 설정하십시오.

@media print { 
textarea {
min-height: 900px;  
}
}

2

매번 사용하지 않으면 줄 높이를 사용하십시오. '..'; 속성은 텍스트 영역의 높이와 텍스트 영역의 너비에 대한 너비 속성을 제어합니다.

또는 다음 CSS로 글꼴 크기를 사용할 수 있습니다.

#sbr {
  font-size: 16px;
  line-height:1.4;
  width:100%;
}

2

HTML 행과 열이 반응하지 않습니다!

CSS에서 크기를 정의합니다. 팁 : 휴대 전화에 작은 크기를 정의하면textarea:focus {};

여기에 여분의 공간을 추가하십시오. 사용자가 실제로 무언가를 작성하려는 순간 만 전개됩니다.


-11

CSS


input
{
    width: 300px;
    height: 40px;
} 


HTML


<textarea rows="4" cols="50">HELLO</textarea>

CSS로 아주 쉽게 할 수 있습니다
ASHU

CSS로 두 가지 방법으로 수행하거나 다음과 같이 수동으로 피드 할 수 있습니다. <textarea rows = "4"cols = "50"> HELLO </ textarea>
ASHU

왜 이러한 속성을 모든 요소에 적용 하시겠습니까?
blackmambo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.