textarea's wiersze i atrybut cols w CSS


Odpowiedzi:


107

widthi heightsą używane podczas wybierania trasy 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>

12
Zgodnie z poniższą odpowiedzią użytkownika2928048, jeśli użyjesz „em” zamiast „px”, możesz określić szerokość i wysokość w znakach, tak jak w przypadku atrybutów „rows” i „cols”. Wydaje mi się, że działa nawet z IE6.
Swanny,

Chociaż zgadzam się z użyciem emdo określenia wysokości, wątpię, czy można go użyć do określenia szerokości. To może pracować z czcionek o stałej szerokości (po zastanawianie się proporcji szerokości do wysokości znaków i modyfikowania wartości szerokości odpowiednio), i to wszystko. Z wyjątkiem monospace, szerokości znaków nie są stałe, więc nie sądzę, emczy colsatrybut może pomóc przy określaniu szerokości.
akinuri

Może się mylę, ale px nie działa dla mnie; oni zrobili.
Jesse Steele

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

Odpowiada:

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

gdzie 1em odpowiada aktualnemu rozmiarowi czcionki, więc obszar tekstowy powinien mieć szerokość 50 znaków. zobacz tutaj .


39
Aby być bardziej dokładny, trzeba wziąć paddingi line-heightna koncie. Powiedzmy, że masz dopełnienie pół em na górze i na dole i wysokość linii 1,2 em, wtedy wysokość dla 4 rzędów będzie wynosić 1 + 4 * 1,2 = 5,8 em.
nalply

2
@nalply, że twoje rozwiązanie jest poprawne. Problem polega na tym, że 4em = 4 x rozmiar czcionki, który nie bierze pod uwagę wypełnienia ani wysokości linii
Nicholas

3
Jeśli masz rozmiar pola właściwości: content-box; nie będziesz musiał martwić się o wypełnienie, więc pozostajesz tylko przy wysokości linii.
mikewasmike

2
Miło @nalply, dzięki za podejście. Dodając trochę do twojej odpowiedzi, funkcja calc () CSS3 może ułatwić obliczenia szerokości / wysokości: powiedzmy, że mam obszar tekstowy z padding-top i padding-bottom 4px i chcę, aby miał 3 rzędy wysokości, wysokość byłaby height: calc(3em + 8px);.
GBU

Chociaż rowsatrybut jest (nieco) niezawodny, nie polegałbym na colsatrybucie, chyba że używam czcionek o stałej szerokości w obszarze tekstu. Zobacz zaktualizowane skrzypce @ AlexanderScholz .
akinuri

16

Myślę, że nie możesz. Zawsze wybieram wysokość i szerokość.

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

fajną rzeczą w robieniu tego w stylu CSS jest to, że możesz go całkowicie zmienić. Teraz możesz dodać takie rzeczy jak:

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

4

O ile wiem, nie możesz.

Poza tym to i tak nie jest to, do czego służy CSS. CSS służy do stylizacji, a HTML do znaczników.


1
CSS służy do stylizacji wizualnej reprezentacji elementu. Obejmuje to szerokość i wysokość obszaru tekstowego.
Sampson,

Nie są one takie same, przeglądarka uwzględnia wysokość tekstu w każdym wierszu, w tym line-height, paddingna pojemniku (nie obliczając wysokość na podstawie box-sizing), nawet biorąc pod uwagę różne proporcje czcionek stosowanych w celu zapewnienia wyświetlaczach tekstowym numer zestawu wierszy tekstu, których nie można uzyskać za pomocą wysokości css.
William Isted

0

Chciałem tylko opublikować demo przy użyciu funkcji calc () do ustawiania wierszy / wysokości, ponieważ nikt tego nie zrobił.

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>

Jeśli użyjesz dużych wartości dopełnień (np. Większych niż 0.5em), zaczniesz widzieć tekst, który przepełnia obszar zawartości (-boks), co może prowadzić do pomysłu, że wysokość nie jest dokładnie x wierszy ( że ustawiłeś), ale tak jest. Aby zrozumieć, co się dzieje, możesz zajrzeć do sekcji Model pudełkowy i strony z rozmiarami pudełek .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.