2015-10-26 82 views
-2

即時通訊使用一個平臺,只接受html/css在線,我被要求做一個下拉菜單,當我懸停在一個元素上,它調整大小,並有一個圖像顯示它。問題是,當我懸停在一個元素上,我不能懸停和調整第二個,除非我把鼠標放在這個。Z索引 - 懸停菜單

我試圖用z index -1向後移動懸停元素,但是轉換得到了真正的錯誤並且不斷地上升和下降。

<div id="mapa-expanduno"></div> 
<div id="mapa-expanddos"></div> 
<div id="mapa-expandtres"></div> 
<div id="mapa-expandcuatro"></div> 

<style type="text/css"> 
div { 
    position: absolute; 
} 
#mapa-expanduno { 
    border: 1px solid blue; 
    margin-left: 55px; 
    width: 110px; 
    height: 125px; 
} 
#mapa-expanduno:hover { 
    width:914px; 
    height: 450px; 
    margin-left: 0px; 
    background: url(); 
    background-repeat: no-repeat; 
} 
#mapa-expanddos { 
    border: 1px solid red; 
    margin-left: 286px; 
    width: 110px; 
    height: 125px; 
} 
#mapa-expanddos:hover { 
    width:914px; 
    height: 450px; 
    z-index: -1; 
    margin-left: 0px; 
    background: url(); 
    background-repeat: no-repeat; 
} 
#mapa-expandtres { 
    border: 1px solid lightgreen; 
    margin-left: 518px; 
    width: 110px; 
    height: 125px; 
} 
#mapa-expandtres:hover { 
    width:914px; 
    height: 450px; 
    z-index: -1; 
    margin-left: 0px; 
    background: url(); 
    background-repeat: no-repeat; 
} 
#mapa-expandcuatro { 
    border: 1px solid black; 
    margin-left: 750px; 
    width: 110px; 
    height: 125px; 
} 
#mapa-expandcuatro:hover { 
    width:914px; 
    height: 450px; 
    margin-left: 0px; 
    background: url(); 
    background-repeat: no-repeat; 
} 
</style> 

Demo

感謝上的建議。

+0

你能舉一個例子,例如在這個問題的snmippet中,它演示了這個問題嗎?從你的描述來看,問題不是很清楚。這聽起來像你的問題是,當你徘徊在一個div,你不能在同一時間盤旋在另一個? –

+0

「除非我把鼠標放在這個上面」是什麼意思?我上面添加的演示程序似乎按照您的意圖工作。 – isherwood

回答

0

我切換到兄弟關係:

div { 
 
    position: absolute; 
 
} 
 
.outer { 
 
    cursor: pointer; 
 
    width: 110px; 
 
    height: 125px; 
 
} 
 
.inner { 
 
    position: fixed; 
 
    top: 0; 
 
    left: 0; 
 
    width: 914px; 
 
    height: 450px; 
 
    z-index: -1; 
 
    display: none; 
 
} 
 
#mapa-expanduno { 
 
    border: 1px solid blue; 
 
    margin-left: 10%; 
 
} 
 
#mapa-expanduno:hover + .inner { 
 
    display: block; 
 
    background: url(http://lorempixel.com/1200/900/nature/4); 
 
    background-repeat: no-repeat; 
 
} 
 
#mapa-expanddos { 
 
    border: 1px solid red; 
 
    margin-left: 30%; 
 
} 
 
#mapa-expanddos:hover + .inner { 
 
    display: block; 
 
    background: url(http://lorempixel.com/1200/900/nature/3); 
 
    background-repeat: no-repeat; 
 
} 
 
#mapa-expandtres { 
 
    border: 1px solid lightgreen; 
 
    margin-left: 50%; 
 
} 
 
#mapa-expandtres:hover + .inner { 
 
    display: block; 
 
    background: url(http://lorempixel.com/1200/900/nature/2); 
 
    background-repeat: no-repeat; 
 
} 
 
#mapa-expandcuatro { 
 
    border: 1px solid black; 
 
    margin-left: 70%; 
 
} 
 
#mapa-expandcuatro:hover + .inner { 
 
    display: block; 
 
    background: url(http://lorempixel.com/1200/900/nature/1); 
 
    background-repeat: no-repeat; 
 
}
<div class="outer" id="mapa-expanduno"></div> 
 
<div class="inner"></div> 
 
<div class="outer" id="mapa-expanddos"></div> 
 
<div class="inner"></div> 
 
<div class="outer" id="mapa-expandtres"></div> 
 
<div class="inner"></div> 
 
<div class="outer" id="mapa-expandcuatro"></div> 
 
<div class="inner"></div> 
 
<div id="preloader" style="position: absolute; left: -999em;"> 
 
    <img src="http://lorempixel.com/1200/900/nature/3" /> 
 
    <img src="http://lorempixel.com/1200/900/nature/4" /> 
 
    <img src="http://lorempixel.com/1200/900/nature/1" /> 
 
    <img src="http://lorempixel.com/1200/900/nature/2" /> 
 
</div>

JSFiddle demo

這裏的a version with some transitions

0

我不知道這是否有幫助,因爲問題不清楚,但我會嘗試提供幫助。 如果沒有HTML,很難確切知道這裏發生了什麼。

您可以在「:hover」選擇器之後添加一個「> [需要更改的元素]」選擇器。

所以它會是這樣的

parent_element{ 
    margin-left: 750px; 
    width: 110px; 
    height: 125px; 
    background: url(); 
    background-repeat: no-repeat; 
} 
parent_element:hover > child_element{ 
    width:914px; 
    height: 450px; 
    margin-left: 0px; 
    background: url(); 
    background-repeat: no-repeat; 
} 

如果不是,你將不得不使用JavaScript來進行更改的子元素。 你也可以考慮在你的css中使用轉換,這會使盒子增長。

+0

我知道。這可以很容易地解決JS,但我被要求只在HTML/CSS上做。我會去嘗試孩子的元素,但我不認爲這是我想要的(對於這個問題的糟糕解釋抱歉,英語不是我的第一語言,並且在解釋這種類型的東西時更難)。不管怎樣,謝謝你! –

+0

你可以使用子元素,但這就是懸停後會出現的元素。 http://stackoverflow.com/questions/3225891/what-does-the-greater-than-sign-css-selector-mean然而,除非正在改變的事物是一個孩子,否則這將不起作用。而且你設置的方式,沒有任何兒童/父母關係,即你將所有這些作爲單獨的DIV。請參閱@isherwood對您如何設置的迴應。 – APrioriRainbows