2011-07-12 14 views
5

aşağıdaki html var:CSS değişikliğinde iki bağlantılar ikisinde de üzerine gelindiğinde

<div id="main"> 
    <div id="home" class="section"> 
     <ul> 
      <li class="home_li"><a href="#home" class="goto_home">Home</a></li> 
      <li class="about_li"><a href="#about" class="goto_about">About us</a></li> 
      <li class="contact_li"><a href="#contact" class="goto_contact">Contact</a></li> 
     </ul> 
    </div> <!-- End home --> 

    <div id="nav"> 
     <ul> 
      <li class="home_li"><a href="#home" class="goto_home"></a></li> 
      <li class="about_li"><a href="#about" class="goto_about"></a></li> 
      <li class="contact_li"><a href="#contact" class="goto_contact">Contact</a></li> 
     </ul> 
    </div> <!-- End nav --> 
</div> <!-- End main --> 

Ne yapmaya çalışıyorum biri süpürdü edilirken her iki bağlantıların durumunu değiştirmektir. Örneğin, <div id="home">'un altında 'about' üzerine inersem, her iki bağlantıyı da istiyorum, bu da <div id="nav">'un altında birinin opaklıkla görüntülenmesini sağlar.

Mümkünse JS'den uzak durmaya çalışıyorum. Şimdiye kadar CSS ile yaptığım girişimde yan yana olan seçmenler vardı, ancak bu benim için yeni bir şeydi, bu yüzden işe yarayamadım.

#home .about_li a:hover + #nav .about_li a { 
     opacity: .5; 
    } 

Bu yalnızca CSS ile yapılabilir mi?

DÜZENLEME: cevaplar için

teşekkürler. Bitişik seçicinin çalışabilmesi için HTML'yi nasıl değiştirmem gerekir? Sitenin geri kalanını ciddi bir şekilde etkilemiyorsa (yapının şu ana kadar tamamlanmış hali varsa) bir deneme yapıp birkaç ince ayar yapabilirim.

BAŞKA DÜZENLEME:

Tamam, bu seçicileri hakkında biraz daha okudum ve şimdi anladım. Ana divanın içinde olmanın kardeş olduklarını düşünürdüm: P ve şimdi neden işe yaramadığını görüyorum. Sadece CSS kullanmak için bir geçici çözüm bulabilir miyim ve buraya geri gönderecek mi göreceğiz. a elemanlar birbirlerinin kardeşleri olmadıklarından Aksi takdirde, JS :(

+0

Ne işe yaramadı çünkü CSS kuralınız #home altında #home altındaki bir etiketin diğerinin bitişiğindeki bir kardeşi için bir etiket arıyor. Bunu yapmak için JS'ye ihtiyacınız olduğunu düşünüyorum. –

+0

CSS bunu gerçekten yapamaz. HTML'yi büyük ölçüde değiştirmiş olsaydı bile, bir seçeneğin üzerine geldiğinizde ilk bağlantı değişikliğini yapamazsınız. JQuery'ye teslim ol! – thirtydot

+0

@brunn: http://jsfiddle.net/hweEr/4/ – Jawad

cevap

2

Maalesef, yapı tek başına CSS seçicileri için çok karmaşık olan gidersiniz, ama o kadar üzerinde iç div s, ve.

O

1

hayır, HTML yapısını değiştirecek, ya değilse jQuery

1

kullanabilirsiniz. aksi takdirde şans bitti, jQuery gibi JavaScript kütüphaneleri ile çok kolay bu CSS ile yapılamaz Her ne kadar bir grup JS'yi yüklemekten uzak durma çabalarınızı alkışlıyorum, özellikle de ağır ağırlık t kütüphaneleri.

İlgili konular