Bạn muốn nâng cao trải nghiệm người dùng và tạo giao diện web trực quan? Hãy cùng khám phá sức mạnh của
:invalid
trong CSS. Đây là một pseudo-class cực kỳ hữu ích giúp bạn dễ dàng tạo kiểu cho các trường nhập liệu không hợp lệ. Nó giúp người dùng nhận biết lỗi và sửa chữa một cách nhanh chóng.
Giới thiệu về
:invalid
trong CSS
:invalid
là gì?
:invalid
là một pseudo-class trong CSS. Nó cho phép bạn chọn và tạo kiểu cho các phần tử
<input>
,
<textarea>
hoặc các phần tử form khác khi nội dung của chúng không hợp lệ theo quy định của HTML. Trạng thái này thường dựa trên các thuộc tính như
required
,
pattern
,
type
(ví dụ: email, number), hoặc các ràng buộc được thiết lập bằng JavaScript. Tìm hiểu thêm về CSS tại
CSS là gì?
và khám phá cách nó thay đổi diện mạo trang web.
Tại sao nên sử dụng
:invalid
?
- Cải thiện trải nghiệm người dùng: Cung cấp phản hồi trực quan ngay lập tức khi người dùng nhập sai thông tin.
- Tăng tính thẩm mỹ: Tạo giao diện chuyên nghiệp và dễ nhìn bằng cách làm nổi bật các trường lỗi.
- Giảm thiểu lỗi nhập liệu: Giúp người dùng dễ dàng nhận biết và sửa lỗi trước khi gửi form.
- Nâng cao khả năng tiếp cận: Hỗ trợ người dùng gặp khó khăn trong việc đọc hiểu, bằng cách cung cấp dấu hiệu trực quan rõ ràng về lỗi.
Cách sử dụng
:invalid
Cú pháp cơ bản
input:invalid { /* Các thuộc tính CSS */ }
Ví dụ, bạn có thể thay đổi màu viền, màu nền hoặc hiển thị một biểu tượng lỗi khi một trường không hợp lệ. Hãy tùy chỉnh để phù hợp với thiết kế trang web của bạn.
Ví dụ minh họa
Giả sử bạn có một trường nhập email bắt buộc:
<input type="email" required>
Bạn có thể sử dụng CSS sau để tạo kiểu cho trường khi email không hợp lệ:
input:invalid { border: 2px solid red; background-color: #ffe6e6; } input:valid { border: 2px solid green; background-color: #e6ffe6; }
Khi người dùng nhập một địa chỉ email không đúng định dạng, viền của trường sẽ chuyển sang màu đỏ và nền có màu hồng nhạt. Khi địa chỉ email hợp lệ, viền sẽ chuyển sang màu xanh và nền có màu xanh nhạt.
Kết hợp
:invalid
với các pseudo-class khác
Bạn có thể kết hợp
:invalid
với các pseudo-class khác như
:focus
hoặc
:hover
để tạo hiệu ứng tương tác tốt hơn:
input:invalid:focus { border-color: darkred; box-shadow: 0 0 5px red; }
Khi trường không hợp lệ và đang được focus, viền sẽ đậm hơn và có thêm hiệu ứng đổ bóng màu đỏ.
Các thuộc tính HTML thường dùng với
:invalid
-
required
: Đánh dấu trường là bắt buộc phải điền. -
pattern
: Xác định một biểu thức chính quy mà giá trị của trường phải khớp. -
type
: Xác định loại dữ liệu mà trường chấp nhận (ví dụ: email, number, url). -
min
vàmax
: Xác định giá trị tối thiểu và tối đa cho các trường số. -
minlength
vàmaxlength
: Xác định độ dài tối thiểu và tối đa cho các trường văn bản.
Sử dụng các thuộc tính này kết hợp với
:invalid
sẽ giúp bạn kiểm soát dữ liệu nhập vào một cách hiệu quả hơn.
Lưu ý khi sử dụng
:invalid
- Đảm bảo rằng bạn cung cấp thông báo lỗi rõ ràng và dễ hiểu cho người dùng. Chỉ thay đổi màu sắc có thể không đủ cho tất cả mọi người.
-
Kiểm tra tính tương thích của trình duyệt, mặc dù
:invalid
được hỗ trợ rộng rãi, nhưng vẫn nên kiểm tra trên các trình duyệt cũ. - Sử dụng JavaScript để bổ sung các kiểm tra phức tạp hơn nếu cần thiết.
Bằng cách tuân thủ các lưu ý này, bạn sẽ tạo ra trải nghiệm người dùng tốt hơn và đảm bảo tính toàn vẹn của dữ liệu.
Làm thế nào để kiểm tra xem một trường có hợp lệ hay không bằng JavaScript?
Bạn có thể sử dụng thuộc tính
validity
của phần tử form để kiểm tra tính hợp lệ. Ví dụ:
element.validity.valid
sẽ trả về
true
nếu trường hợp lệ và
false
nếu không.
Tôi có thể tùy chỉnh thông báo lỗi mặc định của trình duyệt không?
Có, bạn có thể sử dụng JavaScript để chặn thông báo lỗi mặc định và hiển thị thông báo tùy chỉnh của riêng bạn. Sử dụng phương thức
setCustomValidity()
để thiết lập thông báo lỗi tùy chỉnh.
:invalid
có hoạt động với tất cả các loại phần tử form không?
:invalid
hoạt động chủ yếu với các phần tử
<input>
,
<textarea>
và
<select>
. Nó phụ thuộc vào việc phần tử có hỗ trợ kiểm tra tính hợp lệ hay không.
Làm thế nào để tắt kiểu dáng
:invalid
khi không cần thiết?
Bạn có thể sử dụng JavaScript để xóa các thuộc tính
required
,
pattern
hoặc các thuộc tính ràng buộc khác, hoặc thêm một class vào phần tử và sử dụng CSS để ghi đè kiểu dáng
:invalid
.
Sự khác nhau giữa
:invalid
và
:required
trong CSS là gì?
:required
chọn các phần tử bắt buộc phải điền, bất kể chúng có hợp lệ hay không.
:invalid
chọn các phần tử không hợp lệ, ngay cả khi chúng không bắt buộc. Một trường bắt buộc có thể không hợp lệ nếu nó trống hoặc không đáp ứng các quy tắc ràng buộc.