2011-08-15 46 views
8

Tôi đang tạo một thư viện khi bạn di chuột qua hình ảnh chính, hình thu nhỏ sẽ trở nên trong suốt. Tôi muốn đạt được điều này với CSS tinh khiết, nhưng tôi không chắc liệu điều đó có thể xảy ra hay không.Ảnh hưởng đến div: di chuột với một div

CSS:

/* should affect thumbs but not main */ 
/* obviously this code wouldn't work */ 
#main:hover, #thumbs { 
    opacity: .5; 
} 

HTML:

<div id="main"> 
    Hover over me to change #thumbs 
</div> 
<div id="thumbs"> 
    I change when you hover over #main 
</div> 

Đây có phải là có thể sử dụng CSS tinh khiết?

Trả lời

14

Chắc chắn, chỉ cần sử dụng anh chị em chọn liền kề:

#div1:hover + #div2 { 
    ... 
} 

Một ví dụ ở đây: http://jsfiddle.net/6BfR6/94/

+2

+1 tuyệt vời ... thậm chí không biết điều này đã tồn tại! http://meyerweb.com/eric/articles/webrev/200007a.html – samccone

+0

Thật tuyệt vời! Cảm ơn! Điều đó hoàn toàn hoàn hảo! Giống như anh chàng ở trên tôi, tôi không có ý tưởng nào tồn tại. Hoàn hảo. – JacobTheDev

+0

+1 Tôi không có ý tưởng bạn có thể làm điều này mà không có Javascript. –

-1

thậm chí nếu nó có, nó sẽ không làm việc trong IE :)

tôi sẽ đề nghị sử dụng sự kiện onmouseover

tuy nhiên nó là tốt đẹp câu hỏi và tôi tò mò nếu ai đó có giải pháp để làm việc đó qua trình duyệt qua css

+0

Nó không cần phải làm việc trong IE, tôi đã biết làm thế nào để viết dự phòng, nhưng tôi không nghĩ rằng tôi sẽ bận tâm với điều đó. Đó là một trang web cá nhân. – JacobTheDev

+0

@rev: xem giải pháp do Nightfirecat cung cấp. Nó là tuyệt vời và nó hoạt động trong IE 7 & 8 - tôi đã thử nghiệm – mkk

+0

Bạn có thể làm điều này với CSS một mình. Xem [câu trả lời tiện ích xếp hạng thanh tín hiệu thuần CSS của tôi] (http://stackoverflow.com/questions/4502633/how-to-affect-other-elements-when-a-div-is-hovered/32470900#32470900), trong đó cho thấy bạn có thể thay đổi kiểu dáng của các yếu tố mà ngay cả (xuất hiện) hiển thị trong DOM * trước * kiểu được di chuột. –

0

Chỉ trẻ em của bộ chọn có thể bị ảnh hưởng. Nếu không, bạn sẽ cần phải sử dụng javascript.

Ví dụ:

div:hover #childDiv { 
    background: green; 
} 
-1

Tôi nghĩ rằng bạn sẽ cần một số javascript cho điều đó.

+0

Bạn có thể làm điều này với CSS một mình. Xem [câu trả lời tiện ích xếp hạng thanh tín hiệu thuần CSS của tôi] (http://stackoverflow.com/questions/4502633/how-to-affect-other-elements-when-a-div-is-hovered/32470900#32470900), trong đó cho thấy bạn có thể thay đổi kiểu dáng của các yếu tố mà ngay cả (xuất hiện) hiển thị trong DOM * trước * kiểu được di chuột. –

+0

nghiêm túc? Downvoting sau 4 năm? –

+0

Bây giờ là sai rồi. Tôi chỉ vấp ngã câu trả lời hôm qua. Tôi không phải là người kiểm duyệt có thể đọc câu trả lời khi họ được đăng; chỉ là một người dùng ngẫu nhiên đã đến đây từ một tìm kiếm trên web. –

-1

No. Bạn sẽ phải sử dụng Javascript.

+0

Bạn có thể thực hiện việc này với CSS một mình. Xem [câu trả lời tiện ích xếp hạng thanh tín hiệu thuần CSS của tôi] (http://stackoverflow.com/questions/4502633/how-to-affect-other-elements-when-a-div-is-hovered/32470900#32470900), trong đó cho thấy bạn có thể thay đổi kiểu dáng của các yếu tố mà ngay cả (xuất hiện) hiển thị trong DOM * trước * kiểu được di chuột. –

0

# div1: hover + # div2 { ... }

hoạt động tốt trong IE 7, 8, 9 và 10. Không cần JS hoặc onovermouse và KHÔNG CHỈ trẻ em của bộ chọn có thể bị ảnh hưởng.

Thử liên kết ví dụ về "Nightfirecat".

Các vấn đề liên quan