这是第二简单的翻转效果,但我仍然找不到任何简单的解决方案。
想要的: 我有一个项目列表和一个相应的幻灯片(DIV)列表。加载后,第一个列表项应被选中(粗体),并且第一张幻灯片应可见。当用户将鼠标悬停在另一个列表项上时,应改为选择该列表项,并显示相应的幻灯片。
以下代码有效,但 很糟糕 。如何以一种优雅的方式获得这种行为?jQuery具有数十种动画效果和复杂的过渡效果,但是我没有想出这种效果的干净方法。
<script type="text/javascript"> function switchTo(id) { document.getElementById('slide1').style.display=(id==1)?'block':'none'; document.getElementById('slide2').style.display=(id==2)?'block':'none'; document.getElementById('slide3').style.display=(id==3)?'block':'none'; document.getElementById('slide4').style.display=(id==4)?'block':'none'; document.getElementById('switch1').style.fontWeight=(id==1)?'bold':'normal'; document.getElementById('switch2').style.fontWeight=(id==2)?'bold':'normal'; document.getElementById('switch3').style.fontWeight=(id==3)?'bold':'normal'; document.getElementById('switch4').style.fontWeight=(id==4)?'bold':'normal'; } </script> <ul id="switches"> <li id="switch1" onmouseover="switchTo(1);" style="font-weight:bold;">First slide</li> <li id="switch2" onmouseover="switchTo(2);">Second slide</li> <li id="switch3" onmouseover="switchTo(3);">Third slide</li> <li id="switch4" onmouseover="switchTo(4);">Fourth slide</li> </ul> <div id="slides"> <div id="slide1">Well well.</div> <div id="slide2" style="display:none;">Oh no!</div> <div id="slide3" style="display:none;">You again?</div> <div id="slide4" style="display:none;">I'm gone!</div> </div>
我不是在JS关闭的情况下显示所有幻灯片(这可能会破坏页面布局),而是将其放置在交换机中LIs real A链接到服务器端代码,该代码返回在正确的交换机上预先设置了“活动”类的页面/滑动。
$(document).ready(function() { switches = $('#switches > li'); slides = $('#slides > div'); switches.each(function(idx) { $(this).data('slide', slides.eq(idx)); }).hover( function() { switches.removeClass('active'); slides.removeClass('active'); $(this).addClass('active'); $(this).data('slide').addClass('active'); }); }); #switches .active { font-weight: bold; } #slides div { display: none; } #slides div.active { display: block; } <html> <head> <title>test</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script type="text/javascript" src="switch.js"></script> </head> <body> <ul id="switches"> <li class="active">First slide</li> <li>Second slide</li> <li>Third slide</li> <li>Fourth slide</li> </ul> <div id="slides"> <div class="active">Well well.</div> <div>Oh no!</div> <div>You again?</div> <div>I'm gone!</div> </div> </body> </html>