我試圖創建一種效果,當您將鼠標懸停在列表項上時,它將圖像(在完全不同的div)中的不透明度從0更改爲1。將鼠標懸停在img本身或其父元素上時,我無需在CSS中執行此操作。但是這是困擾我的。這就是我所擁有的(我對jquery真的很陌生,所以它可能都是錯誤的)。將鼠標懸停在元素上,並影響另一個div中另一元素的不透明度
<style>
#img-nav img {opacity:0.0;}
#img-nav:hover img {opacity:1.0;}
</style>
<div id=header>
<ul id="nav">
<li id="one"><a href="#">item1</a></li>
<li id="two"><a href="#">item2</a></li>
<li id="three"><a href="#">item3</a></li>
</ul></div>
<ul id="img-nav">
<li><a href="#"><img src="one.jpg" id="img-one"/></a></li>
<li><a href="#"><img src="two.jpg" id="img-two"/></a></li>
<li><a href="#"><img src="three.jpg" id="img-three"/></a></li>
</ul>
而且我懷疑的jQuery:
$("#one, #two, #three").hover(function(){
$("#img-one, #img-two, #img-three").css({ opacity:1.0 });
});
我想一件事是錯的,我需要每個三華里/ IMG組合的三個不同的懸停聲明。就像我說的,我對jquery很新,很抱歉,如果答案很簡單。我搜索了電路板,找不到解決方案。當然,我寧願找到一個CSS解決方案,但我不認爲有一個。
更新/解決方案:
@Jason。這裏是你的jQuery改變了一點,做到了我想要的。我擺脫了第一次聲明,因爲我已經在CSS中將不透明度設置爲0,並且不需要jquery來完成它。然後懸停在li上,使用.css改變圖像的不透明度。問題在於使用.css將不透明度更改爲0.它保留了內聯樣式聲明,這與我的樣式表中的規則有關。所以,現在當懸停結束時,我只需使用.removeAttr('style')刪除內聯樣式屬性。
感謝您的幫助!
$("#one").hover(function() {
$('#img-one').css({opacity : 1.0});
},
function() {
$('#img-one').removeAttr("style");
}
);
$("#two").hover(function() {
$('#img-two').css({opacity : 1.0});
},
function() {
$('#img-two').removeAttr("style");
}
);
$("#three").hover(function() {
$('#img-three').css({opacity : 1.0});
},
function() {
$('#img-three').removeAttr("style");
}
);
我不知道它是否優雅,但你的代碼更容易理解和操作。通過輕微的編輯,它可以完成我想要的任何事情:http://jsfiddle.net/KdhPG/6/,這裏是實時http://joshmccall.com/test.html。現在,當我將鼠標懸停在列表項目上並將鼠標懸停在圖像上時,現在我可以看到不透明度的變化。 – Josh
唯一的謎就是爲什麼當我添加這個jQuery時,CSS懸停在img停止工作。我的css應該允許我將鼠標懸停在img上,並在不透明度中進行更改,直到我添加了這種效果,這種效果與原始css:hover聲明(迫使我在jquery中重複該效果)有關。沒什麼大不了的。在光明的一面,我的css過渡(在不透明度上)似乎還在工作。 – Josh
很高興,@Josh –