:invalid trong CSS - Làm Chủ Biểu Định Kiểu Với Trạng Thái Hợp Lệ!

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 max : Xác định giá trị tối thiểu và tối đa cho các trường số.
  • minlength 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> <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 :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.