2013-01-17 18 views
12

Przeszukałem sieć pod kątem tego, ale nie znalazłem nic podobnego.Pokaż div po najechaniu na inny element div za pomocą tylko css

Powiedzmy, że mamy div A i div B. Po najechaniu na div A, div b powinno być widoczne ON (powinno wyglądać jak nadpisanie) div A i nie być pod nim.

Powinno wyglądać tylko zawartość div A zmieniła się zawartość div B.

Jak można to zrobić w czystym CSS i HTML?

#container > div { 
    display: none 
} 
#container > div:first-child { 
    display: block 
} 
#container > div:hover + div { 
    display: block 

<div id="container"> 
    <div>A</div> 
    <div>B</div> 
</div> 
+1

Czy masz kod lub HTML można zawrzeć w pytaniu? To zawsze jest pomocne. –

+0

w czystym CSS jest to możliwe tylko wtedy, gdy div B jest dzieckiem div A. –

+0

@Sven Bieder To stwierdzenie jest błędne, może to być również rodzeństwo. – feeela

Odpowiedz

22

będzie działać, lecz tylko jeśli dwa div sąsiadują b Następuje.

#a:hover + #b { 
    background: #f00 
} 

<div id="a">Div A</div> 
<div id="b">Div B</div> 

Jeśli masz div pomiędzy użytku ~

#a:hover ~ #b { 
    background: #f00 
} 

<div id="a">Div A</div> 
<div id="c">Div C</div> 
<div id="b">Div B</div> 

Aby przejść na odwrót, niestety trzeba będzie Javascript

// Pure Javascript 
document.getElementById('b').onmouseover = function(){ 
    document.getElementById('a').style.backgroundColor = '#f00'; 
} 
document.getElementById('b').onmouseout = function(){ 
    document.getElementById('a').style.backgroundColor = ''; 
} 

// jQuery 
$('#b').hover(
    function(){$('#a').css('background', '#F00')}, 
    function(){$('#a').css('background', '')} 
); 

Pełna skrzypce http://jsfiddle.net/p7hLL/5/

+3

OMFG działa http://jsfiddle.net/_b1_/p7hLL/ – nk9

+0

Zmienia kolor tła Div B, gdy Div A jest zawieszony. W jaki sposób Div B pokazuje Div A, gdy Div A unosi się? –

+0

@ M.El-Set W ten sposób nie jest możliwe za pomocą samego CSS. – feeela

11

Jest możliwe, jeśli <div /> do pokazania jest dzieckiem e <div /> do najechania. To prawda, jeśli nie chcesz korzystać z selektora + lub ~, który nie jest zgodny z przeglądarką.

<div id="a"> 
    <div id="b"></div> 
</div> 

<style> 
    div#b { 
     display: none; 
    } 

    div#a:hover div#b { 
     display: block; 
    } 
</style> 
+0

"To jest po prostu możliwe, jeśli DIV jest dzieckiem" To jest złe. Istnieją również inne działające rozwiązania, np. ten z @PassKit. – feeela

+0

@feeela kontynuuj czytanie mojego zdania, dokonałem aktualizacji kilka minut temu – algorhythm

+1

"w ogóle nie jest kompatybilna z przeglądarką" jest nadal błędne. W istocie nie jest to obsługiwane przez IE6. W rzeczywistości ogólny selektor dla rodzeństwa jest szeroko obsługiwany i nie ma żadnych znanych błędów. Proszę zapoznać się z https://developer.mozilla.org/en-US/docs/CSS/Adjacent_sibling_selectors i https://developer.mozilla.org/en-US/docs/CSS/General_sibling_selectors – feeela

2

Jego prace, ale Twój css powinny być jak ten

<style> 
#b{display:none;} 
div#a:hover div#b{display:inline} 
</style> 
Powiązane problemy