Bộ tạo biểu mẫu CSS
Biểu mẫu là phần được người dùng tương tác nhiều nhất trên hầu hết các trang web, nhưng cũng là phần ít được trau chuốt nhất ở nhiều trang. Bộ tạo này xuất ra CSS cho một biểu mẫu hoàn chỉnh có kiểu dáng: lưới biểu mẫu tương thích nhiều kích thước màn hình, các cặp nhãn và trường nhập liệu, vùng văn bản, danh sách chọn và trạng thái tiêu điểm dễ thấy, tất cả theo một phong cách thống nhất. Đặt màu nhấn, bán kính bo góc và khoảng cách, rồi sao chép biểu định kiểu. CSS giữ nguyên ngữ nghĩa gốc của biểu mẫu, nhờ đó việc xác thực, thao tác bằng bàn phím và trình đọc màn hình đều hoạt động tốt.
Cách sử dụng bộ tạo
-
1
Đặt màu nhấn
Màu nhấn quyết định vòng tiêu điểm và màu viền của từng trường.
-
2
Chọn bán kính bo góc
Bán kính áp dụng cho trường nhập liệu, vùng văn bản và danh sách chọn để mọi trường có chung hình dạng.
-
3
Đặt khoảng cách
Khoảng cách kiểm soát không gian dọc giữa các trường trong lưới biểu mẫu.
-
4
Sao chép CSS
Một biểu định kiểu hoàn chỉnh bạn có thể dán và điều chỉnh mà không cần đụng đến HTML của mình.
Biểu mẫu cơ sở
<form class="form">
<label class="field">
<span class="field-label">Email</span>
<input type="email" required>
<span class="field-error">Please enter a valid email.</span>
</label>
<label class="field">
<span class="field-label">Password</span>
<input type="password" minlength="8" required>
</label>
<button type="submit" class="button">Sign up</button>
</form>
.field {
display: block;
margin-bottom: 1.25rem;
}
.field-label {
display: block;
font-weight: 500;
margin-bottom: .25rem;
}
.field input {
width: 100%;
padding: .5rem .75rem;
font: inherit;
border: 1px solid #d1d5db;
border-radius: 6px;
background: #fff;
transition: border-color 120ms, box-shadow 120ms;
}
.field input:focus-visible {
outline: none;
border-color: #2563eb;
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}
.field input:invalid:not(:placeholder-shown) {
border-color: #dc2626;
}
.field-error { display: none; color: #dc2626; font-size: .875rem; margin-top: .25rem; }
.field input:invalid:not(:placeholder-shown) ~ .field-error { display: block; }
Bốn phong cách phổ biến
| Phong cách | Là gì | Phù hợp nhất cho |
|---|---|---|
| Có viền | Đường viền quanh trường nhập liệu, nền trong suốt | Biểu mẫu trên máy tính để bàn, bố cục dày đặc |
| Gạch chân | Chỉ có đường viền phía dưới | Giao diện tối giản / dành cho mục đích biên tập |
| Nền được tô | Nền xám, không viền | Giao diện lấy cảm hứng từ Material Design |
| Nhãn nổi | Nhãn nằm bên trong và di chuyển lên trên khi được lấy nét hoặc khi nhập giá trị | Ưu tiên thiết bị di động, trang đích |
Nhãn nổi đẹp nhất, nhưng cần thêm mã đánh dấu hoặc JavaScript để phát hiện trạng thái trống. Kiểu có viền lại là phương án phổ biến và phù hợp nhất với hầu hết trường hợp.
Danh sách kiểm tra khả năng truy cập
- Nhãn hiển thị rõ ràng cho từng trường nhập liệu. Không bao giờ dùng placeholder làm nhãn duy nhất – nó sẽ biến mất khi được lấy nét và không đạt yêu cầu về độ tương phản.
<label for>hoặc thẻ<label>bao quanh. Cả hai đều hợp lệ; cách bao quanh dễ thực hiện hơn một chút.- Chỉ báo lấy nét: Không bao giờ dùng
outline: nonemà không có phương án thay thế; người dùng bàn phím rất cần nó. - Thông báo lỗi: liên kết chúng qua
aria-describedbytrên trường nhập liệu. Không chỉ dùng màu sắc để đánh dấu lỗi; hãy kèm theo một thông điệp văn bản hoặc biểu tượng. - Các trường bắt buộc: dùng thuộc tính
required; thêm dấu sao (*) vào nhãn cho người dùng nhìn thấy được. - Loại trường nhập: dùng
type="email",type="tel",type="url",type="number"; bàn phím di động sẽ tự thích ứng. - Các thuộc tính
autocomplete:autocomplete="email",autocomplete="current-password", v.v., giúp người dùng tiết kiệm đáng kể thời gian nhập liệu.
Các trạng thái xác thực gốc
CSS sử dụng các lớp giả để kiểm tra tính hợp lệ của biểu mẫu:
:required/:optional:valid/:invalid:in-range/:out-of-range(dùng cho các giá trị số có giá trị tối thiểu và tối đa):placeholder-shown(trống, placeholder hiển thị):user-invalid(không hợp lệ và người dùng đã tương tác, phù hợp với các kiểu lỗi)
Lớp giả :user-invalid là cách hiệu quả nhất để hiển thị lỗi chỉ sau khi người dùng thực hiện thao tác, giúp tránh các đường viền đỏ xuất hiện trước khi tương tác diễn ra. Tính năng này đã được triển khai trên tất cả các phiên bản chính vào khoảng năm 2023.
Trạng thái bị vô hiệu hóa
.field input:disabled {
background: #f3f4f6;
color: #9ca3af;
cursor: not-allowed;
}
Các trường nhập liệu bị vô hiệu hóa không thể được lấy nét hay gửi đi. Nếu bạn muốn chúng vẫn có thể được lấy nét để phục vụ trình đọc màn hình, hãy dùng readonly – biểu mẫu vẫn gửi giá trị nhưng người dùng không thể chỉnh sửa nó.
Câu hỏi thường gặp
Không. Placeholder sẽ biến mất ngay khi người dùng bắt đầu gõ, do đó không thể dùng làm nhãn. Ngoài ra, văn bản placeholder thường có độ tương phản thấp và không đáp ứng yêu cầu WCAG. Hãy dùng một nhãn hiển thị rõ ràng kết hợp với một placeholder tùy chọn để gợi ý về định dạng.
Vì :invalid áp dụng ngay lập tức cho các trường bắt buộc trống, nên hãy sử dụng :user-invalid (có khả năng xử lý tương tác) hoặc kết hợp :invalid:not(:placeholder-shown) như một giải pháp tạm thời trên các trình duyệt cũ.
Thay đổi giá trị của appearance: none: loại bỏ mũi tên mặc định và thêm mũi tên tùy chỉnh bằng cách sử dụng hình ảnh nền hoặc đoạn văn bản bao quanh kèm mũi tên tạo bằng pseudo-element. Các danh sách tùy chọn bên trong vẫn giữ giao diện theo thiết kế hệ điều hành và không thể tùy chỉnh bằng CSS.
Cả hai đều cần được thực hiện. Kiểm tra hợp lệ của HTML (required, type, pattern) dùng để xử lý các trường hợp đơn giản mà không cần JavaScript; JavaScript thì chịu trách nhiệm xử lý các quy tắc phức tạp (như độ mạnh của mật khẩu, sự phụ thuộc giữa các trường dữ liệu). Luôn thực hiện kiểm tra hợp lệ trên phía máy chủ – việc kiểm tra từ phía khách hàng chỉ nhằm cải thiện trải nghiệm người dùng chứ không phải đảm bảo an ninh.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bộ chuyển đổi Base64 sang Hex
Chuyển chuỗi Base64 chuẩn thành các byte nền tảng được viết dưới dạng hexadecimal liên tục in hoa. Giải mã nghiêm ngặt, lý tưởng cho token, khóa và chữ ký JWT.
Trình tạo bảng màu ngẫu nhiên
Tạo bảng màu ngẫu nhiên từ 2 đến 15 mẫu màu, chọn phong cách rực rỡ, pastel, dịu hoặc tối, rồi sao chép mã HEX hoặc biến CSS.
Trình xem hex của tệp nhị phân
Chọn một tệp và kiểm tra phần dữ liệu giới hạn từ bất kỳ offset byte hợp lệ nào dưới dạng hex dump cục bộ với cột offset, hex và ASCII.
Bộ chọn màu HEX
Chọn hoặc nhập màu HEX để xem RGB, HSL, CMYK ước tính, độ chói tương đối và tương phản với trắng và đen.