簡體   English   中英

Javascript樣式覆蓋CSS懸停

[英]Javascript style overriding CSS hover

為了使這一點更清楚,我將在下面使用我的代碼:

我有一個分隔容器“ c_container”:

<div id="c_container">
<div id="c_tab">Menu</div>
<div id="c_main">MenuContent</div>
</div>

然后,我使用CSS來控制其樣式:

#c_container {
    width: 550px;
    height: 265px;
    position: fixed;
    left: -550px;
    margin-left: 35px;
    top: 50%;
    margin-top: -100px;
}
#c_container:hover{
    margin-left: 0px;
    left: -40px;
}

然后,在使用onClick函數中的Javascript更新樣式后:

function hideForm(){
    var msg = document.getElementById("c_container");
    msg.style.left = "-550px";
}

CSS懸停僅影響margin屬性,而不像以前那樣影響left屬性。 就像javascript已將其鎖定。

jQuery的:

//Normal: 
$('elementNameOrID').hover (function () {
    $(this).css('left', 0);
}, function () {
    $(this).animate('left', -500);
}); 

//Nice:
$('elementNameOrID').hover (function () {
    $(this).animate({left: 0});
}, function () {
    $(this).animate({left: -500});
}); 

JS:

onclick = function () {
    document.getElementById("div").style.left = '-550px';
};

旁注:使用div作為元素的名稱不是一個好主意,並且在閱讀代碼時會造成混亂和誤導。

在onclick函數中出現逗號問題...

onclick="document.getElementById('div').style.left='-550px;'"

“ div”不是id的好名字。

您的CSS令人困惑。 適用DIV標簽

div {
   position: fixed;
   left: -550px;
}
div:hover{
   left: 0px;
}

要么

#DIV_ID { ... } 

要么

.CLASSNAME { ...} 

編輯

我謹記下您的示例... http://jsfiddle.net/PAg9M/1/並為我工作。 你需要什么?

用JavaScript樣式添加的樣式正在創建內聯樣式,該樣式的優先級高於樣式表。 要解決此問題,您可以在樣式表中添加!important

#c_container:hover{
    margin-left: 0px;
    left: -40px !important;
}

您正面臨此問題,因為內聯CSS比“樣式”標記中的優先級更高,並且javascript添加了內聯CSS。

所以應該只使用javascript來做到這一點-

修改您的html-

<div id="c_container" onmouseover="style.left='0'" onmouseout="style.left='-550'">
<div id="c_tab">Menu</div>
<div id="c_main">MenuContent</div>
</div>

這樣可以解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM