[jQuery] Dynamiczna zmiana kolorów danego linka
Ostatnio zastanawiałem się jak można w efektowny sposób pokazać najazd myszką na dany link?
Wpadłem na coś takiego, by użyć biblioteki jQuery, aby osiągnąć zamierzony efekt.
Aby przygotować taki efekt, musimy mieć:
Do tego przykładu użyłem następującego kodu HTML, ukazującego strukturę menu:
<div id="box"> <p>Pierwszy typ animacji</p> <div id="menu" class="klasa1"> <ul> <li> <a href="#"> Pierwszy</a></li> <li> <a href="#"> Drugi</a></li> <li> <a href="#"> Trzeci</a></li> <li> <a href="#"> Czwarty</a></li> </ul> </div> <p>Drugi typ animacji</p> <div id="menu" class="klasa2"> <ul> <li> <a href="#"> Pierwszy</a></li> <li> <a href="#"> Drugi</a></li> <li> <a href="#"> Trzeci</a></li> <li> <a href="#"> Czwarty</a></li> </ul> </div> <p>Trzeci typ animacji</p> <div id="menu" class="klasa3"> <ul> <li> <a href="#"> Pierwszy</a></li> <li> <a href="#"> Drugi</a></li> <li> <a href="#"> Trzeci</a></li> <li> <a href="#"> Czwarty</a></li> </ul> </div> <p>Czwarty typ animacji</p> <div id="menu" class="klasa4"> <ul> <li> <a href="#"> Pierwszy</a></li> <li> <a href="#"> Drugi</a></li> <li> <a href="#"> Trzeci</a></li> <li> <a href="#"> Czwarty</a></li> </ul> </div> </div> |
// Animacja koloru tła $(document).ready(function(){ $(".klasa1 a").hover(function() { $(this).animate({ backgroundColor: "#00aadd" }, 600); },function() { $(this).animate({ backgroundColor: "#303030" }, 400); }); // Zmiana koloru czcionki $(".klasa2 a").hover(function() { $(this).animate({ color: "#00eeff" }, 400); },function() { $(this).animate({ color: "#FFFFFF" }, 500); }); // Zmienny kolor czcionki po najechaniu. original = $('.third a').css('background-color'); $('.klasa3 a').hover(function() { //mouseover var col = 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')'; $(this).animate({'backgroundColor': col}, 1000); },function() { //mouseout $(this).animate({'backgroundColor': original},500); }); // Kolor czcionki po najechaniu nie zmienia się po cofnięciu kursora myszki $('.klasa4 a').hover(function() { // var col = 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')'; $(this).animate({'backgroundColor': col},500); },function() { //mouseout $(this).animate({'backgroundColor': col},500); }); }); |
Dzięki temu uzyskam pożądane efekty dla każdej z klas menu 🙂
Na koniec dorzucam przykładowy plik ze stylem dla tego przykładu:
body{ margin: 0; font-family: Tahoma, sans-serif } a { color: #cc2200; } p { color: #FFFFFF; } #box { margin: 20px auto; width: 800px; background: #2b2b2b; padding: 10px; } #box h1{ padding: 2px 0px; font-size: 28px; color: #fff; margin-left: 140px; } #box h2{ padding: 2px 0px; font-size: 25px; color: #fff; margin-left: 100px; } #menu{ margin: 0 auto; width: 600px; height: 40px; } #menu ul { margin: 0; list-style-type: none; } #menu ul li{ float: left; padding-left: 10px; } .klasa1 a{ font-size: 24px; text-transform: normal; letter-spacing: -0.1; color: #eeeeee; text-decoration: none; background: #303030; padding: 5px; } .klasa2 a { font-size: 20px; font-style: italic !important; color: #fff; text-decoration: none; background: #303030; padding: 5px; } .klasa3 a { font-size: 20px; font-style: italic !important; color: #fff; text-decoration: none; background: #cc0022; padding: 5px; } .klasa4 a { font-size: 20px; font-style: italic !important; color: #fff; text-decoration: none; background-color: #cc0022; padding: 5px; } |
Tutaj można obejrzeć demo z tego przykładu.
Mam nadzieję, że ten wpis okaże się Wam przydatny podczas budowania ciekawych stron WWW 🙂