ฉันควรปรับขนาด textarea ด้วยแอตทริบิวต์ CSS width / height หรือ HTML cols / rows


307

ทุกครั้งที่ฉันพัฒนารูปแบบใหม่ที่รวมถึงtextareaฉันมีภาวะที่กลืนไม่เข้าคายไม่ออกต่อไปนี้เมื่อฉันต้องการระบุขนาดของมัน:

ใช้CSSหรือใช้textareaคุณสมบัติของcolsและrows?

ข้อดีและข้อเสียของแต่ละวิธีคืออะไร?

ความหมายของการใช้คุณลักษณะเหล่านี้คืออะไร?

ปกติแล้วจะทำอย่างไร?

คำตอบ:


268

ฉันแนะนำให้ใช้ทั้งคู่ จำเป็นต้องใช้แถวและ cols และมีประโยชน์หากไคลเอ็นต์ไม่สนับสนุน CSS แต่ในฐานะนักออกแบบฉันเขียนทับพวกเขาเพื่อให้ได้ขนาดที่ฉันต้องการ

วิธีที่แนะนำให้ทำคือใช้สไตล์ชีทภายนอกเช่น

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


4
ไม่เป็นไร แต่คุณต้องตระหนักว่าพื้นที่ว่างใด ๆ ที่คุณกำหนดขนาดด้วยกำลังจะสูญเปล่าและเป็นเพียงการแสดงเท่านั้น
ยาระเบิดใน

4
@tandu: คุณหมายถึงอะไรโดย "จะเสียและเป็นเพียงเพื่อแสดง"
BoltClock

2
แถว / cols ขึ้นอยู่กับขนาดตัวอักษรของผู้ใช้ ดังนั้นหากคุณมีความกว้าง / ความสูงที่กำหนดโดย CSS ที่ไม่สามารถหารด้วยพิกเซลของตัวละครใน textarea จะมี whitepsace ที่เหลืออยู่ในแนวตั้งและแนวนอน อาจไม่มีใครเคยสังเกตเห็น แต่พูดเพียงว่า
ยาระเบิดใน

21
คุณสามารถใช้ "em" เป็นหน่วยวัดแทนพิกเซล 1em คือความกว้างของ "M" ในแบบอักษรและขนาดใด ๆ แต่คอลัมน์มีความเกี่ยวข้องเฉพาะถ้าใช้กับแบบอักษร monospace ซึ่งในการออกแบบส่วนใหญ่ไม่ใช่กรณี เพื่อให้ได้ความพอดีที่สมบูรณ์แบบให้ใช้ความสูงหลายระดับline-heightสำหรับ textarea ของคุณ
kogakure

5
@LeoGalleguillos“ จำเป็นและมีประโยชน์หากไคลเอนต์ไม่สนับสนุน CSS ” ไม่มีใครพูดอะไรเกี่ยวกับการตรวจสอบ
Janus Bahs Jacquet

96

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

วิธีนี้จะทำให้เบราว์เซอร์ตั้งค่าความสูงของ textarea ให้ตรงกับจำนวนของแถวบวกกับการขยายรอบ ๆ การตั้งค่าความสูง CSS เป็นจำนวนพิกเซลที่แน่นอนทำให้พื้นที่ว่างโดยพลการ


4
โชคไม่ดีที่ "ความสูงของ textarea ไม่ตรงกับแถวใน Firefox" - เป็น "rows + 1" stackoverflow.com/q/7695945/1266880
apurkrt

2
ไม่แน่ใจว่าสิ่งต่าง ๆ เปลี่ยนไปตั้งแต่ '13 หรือว่ามีบางอย่างที่ไม่ชัดเจนเกี่ยวกับสถานการณ์เฉพาะของฉัน แต่การตั้งค่าheight: auto;ใน CSS ดูเหมือนจะไม่ส่งผลกระทบต่อ textarea ของฉันเลย
clozach

10

ตาม w3c, cols และแถวเป็นทั้งแอตทริบิวต์ที่จำเป็นสำหรับ textareas Rows and Cols คือจำนวนอักขระที่จะพอดีกับ textarea ไม่ใช่พิกเซลหรือค่าอื่น ๆ ไปกับแถว / cols


8
โรงเรียน w3c ระบุว่าคุณสามารถตั้งค่าผ่านแถวและแอตทริบิวต์ cols แต่การตั้งค่าความสูงและความกว้างนั้นดีกว่า ไม่มีการกล่าวถึงแถวและคอลัมน์ที่เป็นแอตทริบิวต์ที่จำเป็นสำหรับ textarea บน w3c.org w3schools.com/tags/tag_textarea.asp w3.org/wiki/HTML/Elements/textarea
Michael Stramel

17
@MichaelStramel คำตอบของฉันคือสี่ปี :) - โดยวิธีการที่มันไม่ใช่โรงเรียน w3c พวกเขาไม่ได้มีส่วนเกี่ยวข้อง ฉันไม่แน่ใจว่า HTML5 มีแนวคิดของคุณลักษณะที่ต้องการอีกต่อไป แต่ฉันอาจผิดเกี่ยวกับเรื่องนี้ ฉันยังไม่เห็นว่าทำไมการตั้งค่าความกว้าง / ความสูงจะดีกว่าแถว / cols แม้ว่า
ยาระเบิด

3
ฉันรู้ว่าหลังจากที่ฉันแสดงความคิดเห็น แต่ก็ยังรู้สึกว่ามันมีความเกี่ยวข้องสำหรับทุกคนที่อ่านโพสต์นี้ นอกจากนี้ด้วยการออกแบบที่ตอบสนองได้แถวและ cols อาจทำให้เกิดปัญหาเว้นแต่ว่าจะถูกตั้งค่าผ่าน JavaScript IMO นั้นทำให้การตั้งค่าผ่าน CSS เป็นวิธีที่ดีกว่ามาก
Michael Stramel

6

คำตอบคือ "ใช่" นั่นคือคุณควรใช้ทั้งคู่ ไม่มีแถวและ cols (และมีค่าเริ่มต้นแม้ว่าคุณจะไม่ได้ใช้อย่างชัดเจน) textarea นั้นมีขนาดเล็กอย่างผิดปกติหาก CSS ถูกปิดใช้งานหรือแทนที่โดยสไตล์ชีทของผู้ใช้ โปรดคำนึงถึงความสามารถในการเข้าถึงเสมอ ที่ถูกกล่าวว่าถ้าสไตล์ชีทของคุณได้รับอนุญาตให้ควบคุมลักษณะที่ปรากฏของ textarea คุณจะปิดท้ายด้วยบางสิ่งที่ดูดีขึ้นมากโดยรวมเข้ากับการออกแบบหน้าโดยรวมดีและสามารถปรับขนาดให้สอดคล้องกับการป้อนข้อมูลของผู้ใช้ ( ภายในขอบเขตของรสนิยมที่ดีแน่นอน)


6

สำหรับพื้นที่ข้อความเราสามารถใช้ css ด้านล่างเพื่อกำหนดขนาด

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

ทดสอบในเชิงมุมและเชิงมุม 7


1
สิ่งนี้เกี่ยวข้องกับแองกูลาร์? และวิธีนี้เพิ่มเมื่อเทียบกับคำตอบที่มีอยู่จาก 2010 /
Lazar Ljubenović

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

19
@ user470962 Ad hominem หากคุณแก้ไขข้อผิดพลาดทางไวยากรณ์เป็น '<textarea style = "width: 300px; height: 150px;">' ดังนั้นรหัสก็ใช้ได้ ไม่จำเป็นต้องดูถูกใครสักคน อย่างที่คุณเห็นคำตอบที่ได้รับความนิยมไม่เหมือนเขา +1
TAAPSogeking

1
@ TPSPSogeking ในความเป็นธรรมนี้เป็นคำตอบเดียวกัน 4 ปีต่อมา -1
Rambatino

4

ขนาดของ textarea สามารถระบุได้โดยแอ็ตทริบิวต์ cols และแถวหรือดีกว่า; ผ่าน CSS 'คุณสมบัติความสูงและความกว้าง แอตทริบิวต์ cols ได้รับการสนับสนุนในเบราว์เซอร์หลักทั้งหมด ความแตกต่างหลักอย่างหนึ่งคือนั่น<TEXTAREA ...>คือแท็กคอนเทนเนอร์: มันมีแท็กเริ่มต้น ()


2

ฉันมักจะไม่ได้ระบุheightแต่ไม่ระบุwidth: ...และและrowscols

โดยปกติในกรณีของฉันมีเพียงwidthและrowsจำเป็นสำหรับ textarea ที่ดูดีเมื่อเทียบกับคนอื่น ๆ (และcolsเป็นทางเลือกหากบางคนไม่ใช้ CSS ดังที่อธิบายไว้ในคำตอบอื่น ๆ )

((ระบุทั้งสองrowsและให้heightความรู้สึกเหมือนกับข้อมูลที่ซ้ำกันที่ฉันคิด))


2

คุณลักษณะที่สำคัญของ textareas คือสามารถขยายได้ ในหน้าเว็บนี้อาจส่งผลให้แถบเลื่อนปรากฏบนพื้นที่ข้อความหากความยาวข้อความเกินพื้นที่ที่คุณตั้งไว้ (ไม่ว่าจะใช้แถวหรือว่าใช้ CSS ซึ่งอาจเป็นปัญหาเมื่อผู้ใช้ตัดสินใจที่จะพิมพ์โดยเฉพาะอย่างยิ่ง 'การพิมพ์' เป็น PDF - ดังนั้นตั้งค่าความสูงขั้นต่ำสุดสำหรับ textareas ที่พิมพ์ด้วยกฎ CSS แบบมีเงื่อนไข:

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

2

หากคุณไม่ใช้ทุกครั้งให้ใช้ความสูงของบรรทัด: '.. '; property ควบคุมความสูงของ textarea และ width เพื่อความกว้างของ textarea

หรือคุณสามารถใช้ประโยชน์จากขนาดตัวอักษรโดยทำตาม 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.