TABLE OF CONTENTS

Hi 🤓 Cảm ơn bạn đã ghé thăm blog này, nếu những bài viết trên blog giúp ích cho bạn. Bạn có thể giúp blog hiển thị quảng cáo bằng cách tạm ngừng ad blocker 😫 và để giúp blog duy trì hoạt động nếu bạn muốn.
Cảm ơn bạn!

:focus-within css

:focus-within trong css khác với :focus. :focus đại diện cho một element chẳng hạn như phần tử <input> được focus vào. Ví dụ nó sẽ được kích hoạt khi người dùng click vào một phần tử hoặc sử dụng phím Tab của bàn phím.

Trong một số trường hợp chúng ta muốn thay đổi style của class parent khi ta focus vào 1 phần tử bên trong parent thì làm thế nào? Câu trả lời là chúng ta thực hiện điều này bằng :focus-within. Sau đây mình có một ví dụ nhỏ giúp các bạn hiểu về pseudo-class này.

Ở ví dụ trên các bạn để ý khi focus vào form input border ở class parent đã được đổi màu. Điều này giúp người dùng biết mình đang ở input nào ^^.

Ta sẽ làm điều đó như sau:

Phần html:

<div class="container">
  <div class="form">
    <label for="email">Your email</label>
    <input type="email" id="email" />
  </div>
  <div class="form">
    <label for="password">Your Password</label>
    <input type="password" id="password" />
  </div>
</div>
.form {
    padding-left: 10px;
    border-left: 3px solid rgb(224, 224, 224);
}
.form:focus-within {
    border-color: rgb(56, 142, 255);
}

Các bạn có thể thấy phần tử input đang ở trong phần tử có class .form. Khi kích hoạt focus của input thì ta sử dụng :focus-within cho .form và thay border-color.

Có thể hiểu rằng khi một phần tử bên trong parent được focus chúng ta có thể sử dụng focus-within cho các phần tử chứa nó.

Để hiểu hơn thì ví dụ trên mình đã thay padding cho container bằng cách thêm focus-within cho phần tử này. Khi input trong phần tử này focus ta đổi padding cho container ^^.

.container:focus-within {
    padding: 40px;
}

Đơn giản và hiệu quả đúng không 😀 Thay vì làm điều tương tự bằng cách sử dụng Javascript/Jquery thì ta đơn giản chỉ cần focus-within.

Như vậy là mình đã hướng dẫn các bạn chúng ta sử dụng focus-within. Hy vọng các bạn có thể hiểu và sử dụng nó cho trang web của mình khi cần ^^.

Chúc các bạn học tốt. Peace 😄

Có thể bạn thích ⚡
homiedev
About Me

Hi, I'm @devnav. Một người thích chia sẻ kiến thức, đặc biệt là về Frontend 🚀. Trang web này được tạo ra nhằm giúp các bạn học Frontend hiệu quả hơn 🎉😄.

Chúc các bạn tìm được kiến thức hữu ích trong blog này 😁😁.