Określanie rozmiarów pól CSS

Jeden wiersz kodu do automatycznego określania rozmiaru elementów z edytowalną treścią.

Aby utworzyć pole do wprowadzania danych o odpowiednim rozmiarze bez użycia tagu field-sizing, należało oszacować średni rozmiar pola tekstowego lub użyć JavaScriptu, aby zliczać znaki i zwiększać wysokość lub szerokość elementu w miarę wpisywania tekstu przez użytkownika. Innymi słowy, nie było to łatwe i wiązało się z błędami podczas próby śledzenia treści wprowadzonych przez użytkownika.

W przypadku field-sizing potrzebujesz 1 wiersza kodu CSS, aby umożliwić dostosowanie rozmiaru do treści. Ten styl określania rozmiaru oparty na treści sprawdza się również w przypadku nie tylko obszaru tekstowego.

textarea, select, input {
  field-sizing: content;
}

Specyfikacja | Wyjaśnienie

Lubisz krótkie filmy?

Wes Bos i Jhey na Twitterze publikują świetny film przedstawiający field-sizing.

Na które elementy wpływa wielkość pól?

Oto lista elementów <form>, nad którymi pracuje field-sizing, wraz z podsumowaniem wpływu tego elementu na każdy z nich.

<textarea>

Dane wejściowe zwijają się do wartości min-inline-size lub pasują do symbolu zastępczego.

Podczas pisania dane wejściowe powiększają się w kierunku wiersza, aż osiągną maksymalny rozmiar w tekście. W tym momencie tekst się zawija, a rozmiar bloku powiększa się, aby zmieścić się w nowym wierszu.

<select> i <select multiple>

Wybrany element zmniejsza się, aby pasował do wybranej opcji.

Wybrana wartość z atrybutem multiple rośnie, aby pasować do najszerszej opcji i być równa wysokości, aby zmieścić się w liczbie opcji.

<input type="text">, <input type="email"> i <input type="number">

Dane wejściowe zwijają się do wartości min-inline-size lub pasują do symbolu zastępczego.

Gdy użytkownicy wpisują tekst, dane wejściowe powiększają się w kierunku linii wejściowej, aż osiągną wartość max-inline-size, co oznacza, że wartość wejściowa się przesuwa.

<input type="file">

Dane wejściowe zostaną zwinięte w dół do przycisku i wstępnie wypełnionej nazwy pliku.

Po przesłaniu pliku dane wejściowe będą miały szerokość przycisku i tekst nazwy pliku.

Przeglądanie, testowanie i porównywanie wyników

Oto interaktywny, zwięzły przykład działania „przed” i „po” każdego elementu formularza, na które wpływa parametr field-sizing.

Wypróbuj w Codepen

Bliżej

Gdy używasz elementu [placeholder], obiekt zastępczy staje się treścią. Już wcześniej wspomnieliśmy o tym, ale zostało to objaśnione, ponieważ ważne jest, aby wiedzieć, jaki jest styl formularza. Długa lub krótka zmienna spowoduje zmianę wewnętrznego rozmiaru danych wejściowych w polu field-sizing: content.

Wypróbuj w Codepen

Obsługa stylów pustych i przepełniających się

Korzystanie z usługi field-sizing wymaga wykonania dodatkowych czynności. Zadaniem AhmadShadeed jest defensywny CSS, w którym celem nie jest dokładne określenie, jak coś ma działać lub wyglądać, a nie chronić go przed niepożądanym stanem wizualnym. Wcześniej dane wejściowe miały sporo stałych rozmiarów, ale po zastosowaniu metody field-sizing: content dane wejściowe mogą być znacznie za małe lub za duże.

Zacznij od tych stylów. Dzięki nim elementy nie zwijają się do zbyt małej ramki, a w przypadku textarea nie zwiększą jej rozmiaru.

textarea {
  min-block-size: 3.5rlh;
  min-inline-size: 20ch;
  max-inline-size: 50ch;
}

select {
  min-inline-size: 5ch;
  min-block-size: 1.5lh;
}

input {
  min-inline-size: 7ch;
}

Do określania rozmiaru ta usługa porównywania cen używa jednostek względnych. Nowa jednostka lh doskonała do rozmiarów bloków. ch Sprawdza się w przypadku rozmiarów wbudowanych.

Jaka jest domyślna wartość rozmiaru pola?

Wartość domyślna field-sizing to fixed. Akceptuje ona tylko 2 wartości: fixed lub content.