
Je mehr ich über jQuery lerne, desto natürlicher fühlt es sich an. Wahrscheinlich, weil es so eng mit CSS verbunden ist. Aus Designperspektive ist die Syntax für jQuery
„Wenn ich dies tue, lasse CSS dies tun.“
Der gebräuchlichere Slogan ist
Finde etwas, tue etwas.
…was auch großartig ist.
Anstatt CSS als Seitenlayout und zur Formatierung Ihrer Seite beim Laden zu betrachten, können Sie es nun für Animationen verwenden und es dynamisch ändern, um auf Ereignisse zu reagieren, die auf Ihrer Seite auftreten. Nehmen wir zum Beispiel ein Menü. Sie können das „Klick“-Ereignis, das beim Klicken auf ein Menü auftritt, nutzen, um viele Dinge zu tun.
Diese Beispielseite hat drei Menüpunkte und drei Inhaltsbereiche: Home, About und Contact. Standardmäßig ist der Home-Button ausgewählt, was bedeutet, dass seine Menügrafik volle Deckkraft hat und sein Inhaltsbereich angezeigt wird.
#home {
display: block;
padding: 30px;
}
#home-button {
opacity: 1.0;
border-bottom: 1px solid black;
}
Standardmäßig sind die anderen Menüpunkte ausgeblendet und ihre Inhaltsbereiche versteckt, wie hier
#about {
display: none;
padding: 30px;
}
#about-button {
opacity: 0.5;
border-bottom: 1px solid black;
}
Mit jQuery können wir auf dieses Klick-Ereignis lauschen und entsprechend handeln. Dies ist, was passieren soll
- BLENDE das angeklickte Menüelement EIN.
- BLENDE alle anderen Menüpunkte AUS.
- ZEIGE den entsprechenden Inhaltsbereich an.
- VERSTECKE alle anderen Inhaltsbereiche.
Da der Home-Button standardmäßig aktiv ist, betrachten wir nun den jQuery-JavaScript-Code für den About-Button
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#about-button").click(function(){
$(this).animate({
opacity: 1.0,
borderWidth: 5
}, 600 );
$("#home")
.css({
display: "none"
});
$("#about")
.css({
display: "block"
});
$("#contact")
.css({
display: "none"
});
$("#home-button").animate({
opacity: 0.5,
borderWidth: 1
}, 600 );
$("#contact-button").animate({
opacity: 0.5,
borderWidth: 1
}, 600 );
});
});
</script>
Ihr vollständiger JavaScript-Code würde für alle drei Buttons ähnliche Blöcke enthalten. Wie ich bereits erwähnt habe, lerne ich hier gerade, also gibt es wahrscheinlich einen intelligenteren Weg, dies zu schreiben, aber dies sind die Grundlagen und sie funktionieren.
UPDATE: Das ist viel intelligenter.
$("#page-wrap div.button").click(function(){
$clicked = $(this);
// if the button is not already "transformed" AND is not animated
if ($clicked.css("opacity") != "1" && $clicked.is(":not(animated)")) {
$clicked.animate({
opacity: 1,
borderWidth: 5
}, 600 );
// each button div MUST have a "xx-button" and the target div must have an id "xx"
var idToLoad = $clicked.attr("id").split('-');
//we search trough the content for the visible div and we fade it out
$("#content").find("div:visible").fadeOut("fast", function(){
//once the fade out is completed, we start to fade in the right div
$(this).parent().find("#"+idToLoad[0]).fadeIn();
})
}
//we reset the other buttons to default style
$clicked.siblings(".button").animate({
opacity: 0.5,
borderWidth: 1
}, 600 );
});
Schön, Chris. In FF 2 ist der Cursor beim Hovern standardmäßig. Vielleicht kann man schnell `cursor:pointer` in das CSS einfügen.
Ich mag jQuery
Cheers, Kumpel
Das ist wirklich schön, Chris.
Jetzt muss ich mir ein neues Projekt ausdenken, um jQuery auszuprobieren.
Und es ist deine Schuld.
…und ich danke dir – in Großbuchstaben – dafür :)
Hallo Chris,
Vielleicht ein besserer Weg, Ihre Animation durchzuführen
$(document).ready(function(){
$(„#page-wrap div.button“).click(function(){
if($(this).css(“opacity“) != „1“)
{
$(this).actualBtn.animate({
opacity: 1,
borderWidth: 5
}, 600 );
}
$(this).siblings().animate({
opacity: 0.5,
borderWidth: 1
}, 600 );
});
});
Sie müssen wahrscheinlich einige Verbesserungen vornehmen, um den angezeigten Content-Div zu filtern, aber das ist für Sie wohl keine große Sache.
Wenn Sie möchten, mache ich es
Super. Ich lerne gerade selbst jQuery, also freue ich mich, dass du hier etwas machst
Gute Arbeit, Chris. Mein einziger Vorschlag wäre, die Dauer zu beschleunigen. Aber super!
jQuery ist bei weitem meine bevorzugte JavaScript-Bibliothek, und hier ist ein weiteres Beispiel dafür, warum. Gut gemacht.
Hmm, der Inhalt verschiebt sich nach oben und unten mit der Dicke des unterlegenden schwarzen Balkens, zumindest in Firefox.
Danke für einen weiteren guten jQuery-Beitrag.
Guter Beitrag, Chris. Ich würde auch vorschlagen, vielleicht das History-Plugin für jQuery einzubinden, damit Sie trotzdem die Vorwärts- und Zurück-Buttons verwenden können.
Ihre Fähigkeiten verbessern sich :)
Weiß jemand, wie man ein Hintergrundbild beim MouseOver auf ein LI-Element einblendet und beim MouseOut natürlich ausblendet? Ich habe nach jQuery-Code gesucht, und alles, was ich fand, behandelte nur die Farbe.
Der Rand „springt“ beim ersten Auswählen eines Buttons in FF. Irgendwelche Ideen, wie man das beheben kann?
Was ist mit Internet Explorer? Dort funktioniert es nicht ganz richtig. Man muss zweimal klicken, damit die Dinge anfangen zu funktionieren.
—
Jason
Wenn die Farben für den Text in CSS geändert werden, erscheint der Text beim Zurückkehren in Firefox und Safari (möglicherweise auch IE) mit verringerter Deckkraft. Irgendwelche Ideen?
Gute Arbeit!
Ich suche nach einem Fade für dynamische Inhalte. Ich meine, ich lade externe Inhalte aus einer externen serverseitigen Datei in ein Div, und dieses Laden sollte beim Laden mit einem Fade-Effekt erfolgen. Gibt es so etwas, wie ich es mir vorstelle?
Jquery hilft uns wirklich sehr, Mann… Ich meine, für Webdesigner wie mich… null Java-Kenntnisse, aber hey!~ Jquery macht all die tollen Effekte und Zeug!!!
Danke fürs Teilen… (Salut)
Ich liebe, was Sie hier getan haben, tolle Arbeit und vielen Dank fürs Teilen. Eine Sache jedoch: Ich bin neu hier und ich habe mich gefragt, wenn ich ein Div (Nivo Slider) in das Div mit der ID „home“ einfüge, wird der Inhalt beim Laden angezeigt, aber wenn ich auf das Div mit der ID „about“ klicke und dann zurück zum Home-Tab, wird der Inhalt nicht angezeigt. Wie kann ich das beheben?
Ich kann Ihnen mein HTML und CSS senden, wenn Sie möchten, und es würde helfen.