CSS - Tính năng User Select: Hướng dẫn thân thiện cho người mới bắt đầu

Xin chào các pháp sư thiết kế web tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của CSS, cụ thể là khám phá thuộc tính user-select. Đừng lo lắng nếu bạn mới làm quen với điều này; tôi sẽ là hướng dẫn viên thân thiện của bạn, giải thích mọi thứ từng bước một. Vậy, hãy lấy một tách cà phê (hoặc trà, nếu đó là sở thích của bạn), và cùng chúng ta nhảy vào!

CSS - User Select

Tính năng user-select là gì?

Trước khi chúng ta đi vào chi tiết, hãy hiểu rõ user-select là gì. Hãy tưởng tượng bạn đang đọc một trang web, và bạn cố gắng chọn một đoạn văn bản để sao chép, nhưng bạn không thể. Đó chính là tính năng user-select trong hành động! Nó kiểm soát việc người dùng có thể chọn văn bản trên trang web hay không.

Bây giờ, bạn có thể đang nghĩ, "Tại sao chúng ta lại muốn ngăn cản người dùng chọn văn bản?" Well, có nhiều lý do:

  1. Để bảo vệ nội dung bản quyền
  2. Cải thiện trải nghiệm người dùng cho một số yếu tố tương tác nhất định
  3. Ngăn chặn việc chọn văn bản tình cờ khi người dùng tương tác với các nút hoặc các yếu tố có thể kéo

Cú pháp và các giá trị có thể

Hãy xem cách chúng ta viết thuộc tính user-select trong CSS:

selector {
user-select: value;
}

Dưới đây là bảng các giá trị có thể cho user-select:

Giá trị Mô tả
none Ngăn chặn việc chọn văn bản
auto Mặc định. Cho phép chọn văn bản dựa trên quy tắc của trình duyệt
text Cho phép chọn văn bản
all Cho phép chọn tất cả nội dung, bao gồm các容器
contain Cho phép chọn trong một yếu tố nhưng không phải của các phần tử cha

Bây giờ, hãy cùng khám phá từng giá trị này chi tiết!

CSS user-select - none

Giá trị none giống như đặt một lá chắn vô hình xung quanh văn bản của bạn. Người dùng có thể thấy nó, nhưng họ không thể chọn nó. Dưới đây là một ví dụ:

.no-select {
user-select: none;
}
<p class="no-select">Bạn không thể chọn văn bản này!</p>
<p>But you can select this one.</p>

Trong ví dụ này, người dùng sẽ không thể chọn đoạn văn bản đầu tiên, nhưng họ có thể chọn đoạn thứ hai. Đó như một phép màu, phải không?

CSS user-select - auto

Giá trị auto là cài đặt mặc định. Nó để trình duyệt quyết định khi nào văn bản nên được chọn. Nó giống như để trình duyệt của bạn là DJ tại một buổi tiệc - nó biết khi nào nên phát bài nhạc đúng!

.auto-select {
user-select: auto;
}
<p class="auto-select">Văn bản này tuân theo quy tắc chọn của trình duyệt.</p>

CSS user-select - text

Giá trị text rất đơn giản - nó cho phép chọn văn bản. Nó hữu ích khi bạn muốn覆写 một phần tử cha có thể có user-select: none.

.parent {
user-select: none;
}

.child {
user-select: text;
}
<div class="parent">
<p>Bạn không thể chọn văn bản này.</p>
<p class="child">But you can select this!</p>
</div>

Trong ví dụ này, văn bản trong đoạn thứ hai có thể được chọn, ngay cả khi div cha của nó không thể.

CSS user-select - all

Giá trị all giống như một nút "chọn tất cả" cho nội dung của bạn. Nó cho phép người dùng chọn không chỉ văn bản, mà còn các phần tử chứa.

.select-all {
user-select: all;
}
<div class="select-all">
<p>Khi bạn chọn văn bản này,</p>
<p>bạn cũng sẽ chọn toàn bộ div!</p>
</div>

Thử chọn văn bản trong ví dụ này, và bạn sẽ thấy rằng toàn bộ div cũng được chọn!

CSS user-select - contain

Giá trị contain稍微 phức tạp hơn một chút. Nó cho phép chọn trong một phần tử, nhưng ngăn chặn việc chọn mở rộng đến các phần tử cha.

.outer {
user-select: none;
}

.inner {
user-select: contain;
}
<div class="outer">
Văn bản này không thể được chọn.
<div class="inner">
But this text can be selected, and the selection won't extend to the outer div.
</div>
</div>

Điều này rất hữu ích khi bạn muốn cho phép chọn trong các khu vực cụ thể mà không ảnh hưởng đến phần còn lại của bố cục của bạn.

Tương thích trình duyệt và tiền tố

Bây giờ, đây là một mẹo từ giáo viên CSS hàng xóm thân thiện của bạn: tương thích trình duyệt! Không phải tất cả các trình duyệt đều hỗ trợ user-select theo cùng một cách. Để đảm bảo tương thích tối đa, bạn có thể cần sử dụng các tiền tố trình duyệt:

.no-select {
-webkit-user-select: none; /* Safari */
-ms-user-select: none; /* IE 10 và IE 11 */
user-select: none; /* Cú pháp tiêu chuẩn */
}

Ứng dụng thực tế

Hãy kết thúc với một số tình huống thực tế nơi user-select có thể rất hữu ích:

  1. Nút và các yếu tố tương tác: Sử dụng user-select: none để ngăn chặn việc chọn văn bản tình cờ khi người dùng nhấp vào nút.

  2. Thông báo bản quyền: Bảo vệ văn bản bản quyền của bạn với user-select: none.

  3. Mảnh mã: Sử dụng user-select: all cho các khối mã để người dùng có thể sao chép toàn bộ mảnh mã dễ dàng.

  4. Form: Áp dụng user-select: none cho các nhãn trong form để cải thiện trải nghiệm người dùng khi nhấp vào các hộp kiểm hoặc nút radio.

Nhớ rằng, với quyền lực lớn đi kèm với trách nhiệm lớn. Mặc dù user-select có thể cải thiện trải nghiệm người dùng, nhưng việc lạm dụng nó có thể làm người dùng khó chịu khi họ muốn sao chép nội dung. Luôn xem xét khả năng truy cập và nhu cầu của người dùng khi áp dụng thuộc tính này.

Và thế là bạn đã nâng cấp kỹ năng CSS của mình với thuộc tính user-select. Hãy tiếp tục thực hành, thử nghiệm và quan trọng nhất, hãy vui vẻ với CSS. Trước khi bạn biết, bạn sẽ tạo ra những trải nghiệm web không chỉ chức năng, mà còn tuyệt vời để sử dụng. Chúc bạn may mắn với mã code!

Credits: Image by storyset