hàng của textarea và thuộc tính cols trong CSS


Câu trả lời:


107

widthheightđược sử dụng khi đi tuyến đường css.

<!DOCTYPE html>
<html>
    <head>
        <title>Setting Width and Height on Textareas</title>
        <style>
            .comments { width: 300px; height: 75px }
        </style>
    </head>
    <body>
        <textarea class="comments"></textarea>
    </body>
</html>

11
Theo câu trả lời của người dùng2928048 bên dưới, nếu bạn sử dụng "em" thay vì "px" thì bạn có thể chỉ định chiều rộng và chiều cao tính bằng ký tự như với các thuộc tính 'hàng' và 'cols'. Tôi thậm chí làm việc với IE6.
Swanny

Mặc dù tôi đồng ý với việc sử dụng emđể chỉ định chiều cao, tôi nghi ngờ rằng nó có thể được sử dụng để chỉ định chiều rộng. Nó có thể hoạt động với phông chữ đơn cách (sau khi tìm ra tỷ lệ chiều rộng: chiều cao của các ký tự và sửa đổi giá trị chiều rộng tương ứng), và đó là nó. Ngoại trừ không gian đơn, độ rộng ký tự không cố định, vì vậy tôi không nghĩ emhoặc colsthuộc tính có thể giúp khi chỉ định chiều rộng.
akinuri

Tôi có thể sai, nhưng px đã không làm việc cho tôi; em đã làm.
Jesse Steele

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

Nó tương đương với:

textarea {
    height: 4em;
    width: 50em;
}

trong đó 1em tương đương với kích thước phông chữ hiện tại, do đó làm cho vùng văn bản rộng 50 ký tự. xem tại đây .


39
Để chính xác hơn, bạn cần phải thực hiện paddingline-heighttrong tài khoản. Giả sử bạn có phần đệm bằng một nửa em ở trên cùng và ở dưới cùng và chiều cao của dòng là 1,2em, thì chiều cao cho 4 hàng sẽ là 1 + 4 * 1.2 = 5,8em.
nalply

2
@nalply giải pháp của bạn là chính xác. Vấn đề là 4em = 4 x cỡ chữ mà không phải là yếu tố đệm cũng như chiều cao dòng
Nicholas

3
Nếu bạn có kích thước hộp thuộc tính: hộp nội dung; bạn sẽ không phải lo lắng về phần đệm, vì vậy bạn chỉ duy trì với chiều cao dòng.
mikewasmike

2
Nice @nalply, cảm ơn vì cách tiếp cận. Thêm một chút vào câu trả lời của bạn, hàm CSS3 (calc3) có thể dễ dàng tính toán chiều rộng / chiều cao: giả sử tôi có một textarea với padding-top và padding-bottom 4px, và tôi muốn nó cao 3 hàng, chiều cao sẽ là height: calc(3em + 8px);.
GBU

Mặc dù rowsthuộc tính là (phần nào) đáng tin cậy, tôi sẽ không dựa vào colsthuộc tính trừ khi tôi sử dụng phông chữ đơn cách trên vùng văn bản. Xem fiddle cập nhật của @ AlexanderScholz .
akinuri

16

Tôi không nghĩ bạn có thể. Tôi luôn luôn đi với chiều cao và chiều rộng.

textarea{
width:400px;
height:100px;
}

Điều tuyệt vời khi làm theo cách CSS là bạn hoàn toàn có thể tạo kiểu cho nó. Bây giờ bạn có thể thêm những thứ như:

textarea{
width:400px;
height:100px;
border:1px solid #000000;
background-color:#CCCCCC;
}

4

Theo tôi biết, bạn không thể.

Bên cạnh đó, đó không phải là những gì CSS dành cho. CSS là để tạo kiểu và HTML là để đánh dấu.


1
CSS là để tạo kiểu biểu diễn trực quan của một phần tử. Điều này bao gồm chiều rộng và chiều cao của một vùng văn bản.
Sampson

Chúng không giống nhau, trình duyệt tính đến chiều cao của văn bản trên mỗi hàng bao gồm line-height, paddingtrên bộ chứa (không tính chiều cao dựa trên box-sizing), thậm chí có tính đến các tỷ lệ khung hình khác nhau được sử dụng để đảm bảo hộp văn bản hiển thị số đã đặt hàng văn bản mà bạn không thể đạt được bằng cách sử dụng chiều cao css.
William Isted

0

Tôi chỉ muốn đăng một bản demo bằng calc () để đặt hàng / chiều cao, vì không ai làm.

body {
  /* page default */
  font-size: 15px;
  line-height: 1.5;
}

textarea {
  /* demo related */
  width: 300px;
  margin-bottom: 1em;
  display: block;
  
  /* rows related */
  font-size: inherit;
  line-height: inherit;
  padding: 3px;
}

textarea.border-box {
  box-sizing: border-box;
}

textarea.rows-5 {
  /* height: calc(font-size * line-height * rows); */
  height: calc(1em * 1.5 * 5);
}

textarea.border-box.rows-5 {
  /* height: calc(font-size * line-height * rows + padding-top + padding-bottom + border-top-width + border-bottom-width); */
  height: calc(1em * 1.5 * 5 + 3px + 3px + 1px + 1px);
}
<p>height is 2 rows by default</p>

<textarea>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</textarea>

<p>height is 5 now</p>

<textarea class="rows-5">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</textarea>

<p>border-box height is 5 now</p>

<textarea class="border-box rows-5">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</textarea>

Nếu bạn sử dụng các giá trị lớn cho phần đệm (ví dụ: lớn hơn 0,5em), bạn sẽ bắt đầu thấy văn bản tràn ra khu vực nội dung (hộp) và điều đó có thể khiến bạn nghĩ rằng chiều cao không chính xác là x hàng ( mà bạn đặt), nhưng nó là. Để hiểu những gì đang diễn ra, bạn có thể muốn xem Mô hình hộp và các trang kích thước hộp .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.