Vâng, câu hỏi này được hỏi nhiều lần trước đây và câu trả lời điển hình ngắn gọn là: Nó không thể được thực hiện bằng CSS thuần túy. Có tên: Cascading Style Sheets chỉ hỗ trợ tạo kiểu theo hướng xếp tầng, không lên.
Nhưng trong hầu hết các trường hợp mà hiệu ứng này được mong muốn, như trong ví dụ đã cho, vẫn có khả năng sử dụng các đặc điểm xếp tầng này để đạt được hiệu ứng mong muốn. Hãy xem xét đánh dấu giả này:
<parent>
<sibling></sibling>
<child></child>
</parent>
Bí quyết là cung cấp cho anh chị em có cùng kích thước và vị trí với cha mẹ và tạo kiểu cho anh chị em thay vì cha mẹ. Điều này sẽ trông giống như cha mẹ được tạo kiểu!
Bây giờ, làm thế nào để tạo kiểu cho anh chị em?
Khi con được lơ lửng, bố mẹ cũng vậy, nhưng anh chị em thì không. Các anh chị cũng vậy. Điều này kết luận trong ba đường dẫn chọn CSS có thể để tạo kiểu cho anh chị em:
parent sibling { }
parent sibling:hover { }
parent:hover sibling { }
Những con đường khác nhau cho phép một số khả năng tốt đẹp. Chẳng hạn, việc giải phóng thủ thuật này trên ví dụ trong câu hỏi dẫn đến câu đố này :
div {position: relative}
div:hover {background: salmon}
div p:hover {background: white}
div p {padding-bottom: 26px}
div button {position: absolute; bottom: 0}
Rõ ràng, trong hầu hết các trường hợp, thủ thuật này phụ thuộc vào việc sử dụng định vị tuyệt đối để tạo cho anh chị em có cùng kích thước với cha mẹ, và vẫn để con xuất hiện bên trong bố mẹ.
Đôi khi, cần phải sử dụng một đường dẫn chọn có trình độ cao hơn để chọn một yếu tố cụ thể, như thể hiện trong câu đố này thực hiện thủ thuật nhiều lần trong menu cây. Khá đẹp thực sự.