
Diese „gleitenden“ Navigationsbalken gibt es schon eine Weile, ich dachte mir, ich versuche es selbst, da sich kürzlich die Gelegenheit bot. Es stellt sich heraus, dass es wirklich verdammt einfach ist. Ich habe zwei Beispiele dafür zusammengestellt.
Die Idee
Die Idee ist, eine Art Hervorhebung (einen Hintergrund oder eine Unterstreichung) zu haben, die Ihnen folgt, wenn Sie mit der Maus über die verschiedenen Links in der Navigation fahren. Dies geschieht mit jQuery und seinen Animationsfähigkeiten. Daher wird die „Magic Line“ nur über JavaScript hinzugefügt. Sobald sie zur Liste hinzugefügt und gestylt ist, ermittelt sie beim Überfahren der verschiedenen Links die linke Position und die Breite und animiert sich entsprechend.
HTML
Typische Liste hier… Sie hat die Klasse „group“, da sie eine horizontale Reihe sein wird und die Clearfix benötigt, um Höhe zu haben. Die ID ist für das JavaScript, um sie anzusprechen.
<nav class="nav-wrap">
<ul class="group" id="example-one">
<li class="current_page_item"><a href="#">Home</a></li>
<li><a href="#">Buy Tickets</a></li>
<li><a href="#">Group Sales</a></li>
<li><a href="#">Reviews</a></li>
<li><a href="#">The Show</a></li>
<li><a href="#">Videos</a></li>
<li><a href="#">Photos</a></li>
<li><a href="#">Magic Shop</a></li>
</ul>
</nav>
Beachten Sie die .nav-wrap div drumherum. Diese wird wegen des Stylings verwendet; die Balken gehen über die volle Bildschirmbreite, aber die Navigation ist darin zentriert. Dieses Zentrieren wirft ein Problem auf, wenn wir mit dem JavaScript beginnen.
CSS
Machen Sie die üblichen Inline-Listenelemente mit nach links gefloateten Ankern, um die Liste horizontal zu gestalten und Treppenbildung zu vermeiden. Die Magic Line ist absolut positioniert unter dem Balken, damit sie kein Zittern verursacht (Maus über einen Link, animiert darüber, Maus ist jetzt auf der Magic Line, nicht mehr auf dem Link, animiert zurück, usw.). Alles andere ist rein stilistisch.
.nav-wrap { margin: 50px auto; background-color: rgba(0, 0, 0, 0.6); border-top: 2px solid white; border-bottom: 2px solid white; }
#example-one { margin: 0 auto; list-style: none; position: relative; width: 960px; }
#example-one li { display: inline; }
#example-one li a { color: #bbb; font-size: 14px; display: block; float: left; padding: 6px 10px 4px 10px; text-decoration: none; text-transform: uppercase; }
#example-one li a:hover { color: white; }
#magic-line { position: absolute; bottom: -2px; left: 0; width: 100px; height: 2px; background: #fe4902; }
jQuery JavaScript
- Wenn der DOM bereit ist…
- Einrichtung von Variablen, einschließlich des aktuellen linken Offsets der Navigation
- Einrichtung einer Resize-Funktion am Fenster, um diesen Offset zurückzusetzen, falls er sich ändert (wegen der Zentrierung)
- Hinzufügen der Magic Line zur Navigation
- Einrichtung von Position und Breite der Magic Line für das aktuelle Seiten-Element
- Speichern Sie auch die ursprüngliche Breite und Position als Daten, damit sie zum Zurückanimieren verwendet werden können
- Beim Hovern wird die neue Breite und die neue linke Position berechnet und dorthin animiert
- Im Hover-Callback (Mouse Out) animiert es zurück zum Original
Aktualisiert, dank kluger Kommentare von Daniel und Nora Brown unten.
$(function() {
var $el, leftPos, newWidth,
$mainNav = $("#example-one");
$mainNav.append("<li id='magic-line'></li>");
var $magicLine = $("#magic-line");
$magicLine
.width($(".current_page_item").width())
.css("left", $(".current_page_item a").position().left)
.data("origLeft", $magicLine.position().left)
.data("origWidth", $magicLine.width());
$("#example-one li a").hover(function() {
$el = $(this);
leftPos = $el.position().left;
newWidth = $el.parent().width();
$magicLine.stop().animate({
left: leftPos,
width: newWidth
});
}, function() {
$magicLine.stop().animate({
left: $magicLine.data("origLeft"),
width: $magicLine.data("origWidth")
});
});
});
Demo
Sehen Sie den Pen
jQuery MagicLine von Chris Coyier (@chriscoyier)
auf CodePen.
Probleme
Opera ist damit seltsam. Es macht die ursprüngliche Breite der Magic Line zur vollen Breite des Navigationsbalkens und kürzt sie von rechts bei Hover. Ich konnte es nicht herausfinden. Wenn Sie es können, lassen Sie es mich wissen, ich werde diesen Artikel und die Demos aktualisieren.
Alternative Version
Sehen Sie sich den Demo-Link unten für eine alternative Version an, die einen Hintergrund anstelle einer Linie verwendet und Farbe sowie Position und Breite animiert. Grundsätzlich dasselbe, außer dass die CSS leicht unterschiedlich ist und das JavaScript die Farbe des neuen Listenelements aus einem rel-Attribut im HTML zieht.
Farbanimationen in jQuery erfordern das color plugin. Ich habe gerade darüber gejammert, dass es mit RGBa-Farben nicht funktioniert, und jemand hat mir einen Patch geschickt, der das tut und der im Download enthalten ist. Es tut mir wirklich leid, aber ich erinnere mich nicht mehr an seinen Namen! Melden Sie sich, wenn Sie es waren, und ich werde dies aktualisieren und den Patch Ihnen gutschreiben.
Alles Ihres
Wie immer, fühlen Sie sich frei, damit zu tun, was Sie wollen. Vorzugsweise verwenden Sie es in Firmenprojekten und verdienen Sie Schubkarren voller Geld.
Nichts Neues, Mann…
Hallo Chris,
Sie machen diese Dinge so einfach – danke für all Ihre großartigen Tipps und harte Arbeit! Meine Frage ist, kann das auch mit mehrstufigen Navigationen funktionieren? Es müsste den Effekt nicht auf die Kind-Links anwenden, aber ich möchte, dass sie herunterklappen können. Jeder Tipp dazu ist hilfreich.
Danke, Larry
Larry hat gerade die gleiche Frage gestellt, die ich auch hatte. Das ist ein großartiger Anfang, aber was muss getan werden, um mehrstufige Navigation zu unterstützen?
Obwohl ich es selbst noch nicht ausprobiert habe, könnte etwas funktionieren, indem man den Code für den `find(“a”)` Hover dupliziert und einen für `$(“li:not(:has(ul))”)` macht. Dieser hat keinen UL-Kind, also ist er kein Dropdown-Element.
Und ein weiterer für `$(“li:has(ul)”)`, der ein UL-Kind hat. In diesem Fall bewegen Sie die Magic Line horizontal dorthin, wo sie sein soll, aber bewegen Sie sie auch um die Höhe des UL-Elements nach unten.
Wenn Sie nicht möchten, dass sich die Magic Line diagonal bewegt (d.h. die kürzeste Route), dann müssen Sie die Animation so einreihen, dass sie zuerst horizontal zum LI-Element geht und sich dann vertikal nach unten bewegt (position: absolute; bottom: -(2 + UL-height)px;). Und beim MouseOut (Callback von hover()) vertikal nach oben und dann horizontal bewegen.
Ich werde das vielleicht nächstes Wochenende versuchen, aber ich bin mir nicht sicher, ob ich mich erinnern werde. Fühlen Sie sich frei, zu sehen, ob es funktioniert!
—
TeMc
Versuchen Sie, sich mit den Dropdowns (auch auf jQuery basierend) zu beschäftigen.
Danke fürs Teilen, Chris, nur eine kleine Sache. Der Download ist defekt.
Wieder eine schlaue Implementierung!
Wie immer, fühlen Sie sich frei, damit zu tun, was Sie wollen. Vorzugsweise verwenden Sie es in Firmenprojekten und verdienen Sie Schubkarren voller Geld.
Jawohl!
Eigentlich brauchte ich das so, wie es ist, für ein kommerzielles Projekt, und das hat meinen Bedarf gedeckt. Sie sind ein 5-Sterne-Hilfsarbeiter :)
Wow, einfach ein Effekt, der ziemlich gut aussieht.
Nur eine Sache, ich ziehe es vor, die Magic-Line li im HTML-Markup zu haben, anstatt sie per JavaScript anzuhängen.
Es ist nur eine Frage des Geschmacks und wahrscheinlich ist Ihr Weg besser für SEO, aber als Entwickler sehe ich gerne genau das Markup, mit dem ich arbeiten muss ;)
Daniele,
Ich habe genau das gleiche Problem… haben Sie es behoben?
Wie würden Sie dies mit WordAdds WordPress' wp_page_menu verwenden?
Genau das, was ich heute gesucht habe. Ich mag die Art und Weise, wie Sie alle Ihre Links zu vorherigen Beispielen eingerichtet haben. Ich hatte Ihre Clearfix- oder Stairstepping-Seiten noch nicht angesehen. Dies war eine großartige Möglichkeit, sie in einem bestimmten Kontext zu betrachten. Danke nochmal, Chris!
Sehen andere auch Probleme in IE8? Die Farbe der Klasse „current_page_item“ funktioniert beim Laden nicht. Ich habe versucht, die Farbe inline einzustellen, und es funktioniert immer noch nicht. Ich bin ziemlich sicher, dass es sich um ein jQuery-Problem handelt, das ich nicht gut genug kenne, um es zu beheben.
Hallo, ich sehe dasselbe, bitte mailen Sie mir, wenn eine Lösung bereitgestellt wird
Wow, dieser Effekt sieht wirklich gut aus und ist gleichzeitig sehr dezent. Tolle Arbeit! Vielen Dank fürs Teilen!
Wie immer ist Ihre Arbeit brillant, aber leicht verständlich und zu implementieren. Danke.
Wirklich schöner Effekt, ich kann nicht sagen, dass ich ihn schon oft gesehen habe, oder achte ich einfach nicht auf die Websites, die ihn verwenden!
Ich habe mir alle Browser angesehen, und IE8 ist etwas komisch damit. Ich werde heute Abend damit spielen und sehen, was los ist. Was Opera betrifft… dazu sage ich nur noch eins.
Sehr gut gemacht, Chris! Das wird sehr nützlich für Websites sein, die keine Dropdowns benötigen.
Danke Chris, ich liebe es!
Toller Artikel und schöner Effekt, Chris!
Das ganze PageOffset-Ding ist jedoch nicht wirklich notwendig. Wenn Sie die `position()`-Methode von jQuery verwenden, können Sie z.B. einfach ersetzen
mit
Ich habe es selbst ausprobiert und es funktioniert genauso gut
Danke Daniel, tolle Idee, ich habe den obigen Code, die Demo und den Download aktualisiert.
Das ist definitiv sexy Navigation!!! Danke Chris!!
Hallo Chris, das ist wirklich cool. Tötet jQuery Flash-Menüs? Oder Animation? Ich denke schon.
Es gibt eine sehr kleine Sache, die ich wissen wollte und die interessant wäre: Ist es möglich, die Magic Line beim letzten geklickten Menüpunkt stoppen zu lassen?
Am Listenelement gibt es eine Klasse (class=“current_page_item”), die dafür sorgt, dass die Linie an dieser Stelle stoppt. Für jede Seite, auf die Sie klicken, ändern Sie einfach die Klasse auf diesen Link und die Linie stoppt an diesem Link.
$(“#example-one li a”).hover(function() {
$el = $(this);
leftPos = $el.position().left;
newWidth = $el.parent().width();
$magicLine.stop().animate({
left: leftPos,
width: newWidth
});
}, function() {
$magicLine.stop().animate({
left: $magicLine.data(“origLeft”),
width: $magicLine.data(“origWidth”)
});
});
Hier wird die Magic Line mit der unten stehenden Funktion aus dem obigen Code in ihre ursprüngliche Position zurückversetzt, also können Sie diese Funktion aus dem Code verschieben und sie funktioniert.
function() {
$magicLine.stop().animate({
left: $magicLine.data(“origLeft”),
width: $magicLine.data(“origWidth”)
});
Ich habe es zuerst in Opera gesehen und dachte „genial“!! Mir war gar nicht bewusst, dass es in Opera kaputt war. Das beweist nur (zumindest für mich), dass es in verschiedenen Browsern radikal anders aussehen kann, und das ist in Ordnung.
Ich habe noch keine Debugging-Versuche unternommen, aber es gibt eine seltsame Sache… Entfernen Sie das erste Beispiel aus Ihrer Demo-Datei und das zweite Beispiel funktioniert nicht mehr. (Es sei denn, ich habe etwas furchtbar falsch gemacht – was ich nicht glaube.)
Oben im JS gibt es einige Variablen, die eingerichtet sind /* Beispiel Eins */. Stellen Sie sicher, dass diese noch da sind.
Ich versuche immer noch, damit zu arbeiten, habe die gleichen Probleme und versuche, das alles zu lernen. Wie kann ich das Obige entfernen und es trotzdem zum Laufen bringen, lol
Ich bin ein Neuling in dieser Art von Arbeit und möchte diesen Stil zu meinem neuen Web-Build für meine Website hinzufügen.
Cheers Jason
Nur neugierig, ob das
besser (schneller?) ist als
?
Wirklich schöne Demo – ich mag diese subtilen Effekte, die man ziemlich schnell und einfach mit jQuery erzielen kann.
Nein, wahrscheinlich nicht, das ist ein Fehler von mir. Es war ursprünglich da, weil ich einen `.not()`-Filter auf einige der Listenelemente anwenden musste, aber dennoch die Ankerlinks ansprechen wollte, daher `.find()`. Fühlen Sie sich frei, es auf Ihre Weise zu schreiben.
Habe es gerade auf der Website eines Kunden hinzugefügt, Danke Chris.
DUDE DU BIST DER HAMMER!!!!
Eine verdammt gute Masche, gut gemacht, Mann. Danke
Tolle Anleitung. Danke fürs Teilen!!
Ich liebe die letzte
Ich habe gerade etwas Ähnliches für ein Projekt von mir umgesetzt
hier
obwohl ich das Lava Lamp jQuery-Skript verwendet habe
Vorherige Arbeit
http://devthought.com/blog/projects-news/2007/01/cssjavascript-true-power-fancy-menu/
was inspirierte für jQuery
http://www.gmarwaha.com/blog/?p=7
Trotzdem ein schöner Artikel.
Hmmm… das ist nett. Noch etwas zum Spielen.
Habe ein wenig damit in Opera gespielt. Die Breite vom Anker statt vom übergeordneten Listenelement zu nehmen, behebt es fast… (Jetzt ist das Problem, dass es etwas zu schmal ist.) Habe versucht, das CSS anzupassen, um das zu beheben, aber es hat auch nicht ganz funktioniert.
Es scheint, dass das Problem darin liegt, dass `.width()` eines Inline-Listenelements nicht richtig funktioniert.
Meine Änderungen rückgängig gemacht und stattdessen das CSS geändert, um `inline-block` zu verwenden, wie folgt:
#example-one li { display: inline-block; }
Das funktioniert perfekt. (Zumindest in Opera. :)
Chris, tolle Arbeit mit diesem Plugin… Sie haben die Lava Lamp Behandlung übernommen und sie zu Ihrer eigenen gemacht. Und dabei eine schöne Demoseite gestaltet.
Danke für die Idee. Das ist cool
Ich liebe dieses Menü, aber ich finde es sehr frustrierend, Untermenüs hinzuzufügen. Hat jemand diesen zweiten Teil gemeistert und Untermenüs hinzugefügt oder kann mich in die richtige Richtung weisen? Ich bin kein JS-Guru, also hilft mir das Zeigen auf Code nicht viel, obwohl ich kein völliger Dummkopf bin, was das Programmieren angeht. Jede Hilfe ist willkommen.
Großartig!
Kann es mit einer `click()`-Funktion etwas verbessern, um die Magicline auf dem geklickten Link bleiben zu lassen
In der Tat, danke Pintus. Das „current_page_item“ ist der Standard-WordPress-Klassenname, der bei Verwendung von `wp_list_pages` angewendet wird. Wenn also eine neue Seite geladen wird, hat sie das und ist korrekt eingestellt. Aber wenn Sie stattdessen etwas wie AJAX verwenden, nutzen Sie dies.
Ups, sorry, das wusste ich nicht, ich habe WordPress nie ausprobiert…
Ich benutze Ajax und habe versucht, Ihren Code zu verwenden, um die Magicline auf dem geklickten Link stehen zu lassen, aber es funktioniert nicht.
Muss ich etwas an der HTML-Seite ändern?
Wo muss ich Ihren Code einfügen?
Vielen Dank!!
Okay, okay, ich habe gerade meinen Fehler gefunden ^^
Entschuldigung für den doppelten Post
Aus irgendeinem Grund kann ich die Linie nicht auf dem Link halten lassen, auf dem sie sein soll. Sie bleibt dort, kurz nachdem ich darauf klicke, aber kehrt zum Anfang zurück, wenn die neue Seite geladen wird. Wie kann ich sie dort stehen lassen?
Danke
Entschuldigung, ich habe meinen Code aufgeteilt…
Fügen Sie einfach beide Teile ein!
Ich habe also Schwierigkeiten, das mit WordPress zum Laufen zu bringen. Auf der Startseite funktioniert es, aber wenn ich zu einer anderen Seite gehe, funktioniert es nicht mehr und es merkt sich auch nie die neue Seite.
Hilfe :)
Chris, das behebt Opera und funktioniert in allen Browsern, die ich getestet habe (FF3.6, Chrome, IE8, Opera 10.10 und Safari, alle unter WinXP). Ich habe nur die Zeilen aufgelistet, die ich geändert habe.
Im Grunde habe ich die `
Das behebt einen Fehler in IE7, bei dem der Text des aktuellen Links fehlte. Danke.
Das ist so einfach und süß. Danke fürs Teilen! :)
Können Sie es so einrichten, dass es auf dem zuletzt angeklickten Element bleibt? Die obige Methode funktioniert bei mir nicht.
Hallo, ich habe dieses großartige Skript mit einem vertikalen Untermenü kombiniert…
http://www.castellolarocchetta.it/test/
Gibt es eine Möglichkeit, die Magic Line (ich habe sie in ein kleines Logo geändert) an der ursprünglichen Position (current_page_item) zu halten, anstatt nach links in der Navbar zu gehen, wenn man auf einen Untermenü-Link klickt? Vielen Dank für Ihre großartige Arbeit.
Es sieht so aus, als ob das zweite Beispiel für keine IE-Version funktioniert. Ich habe den Code noch nicht durchgesehen – aber haben das schon andere bemerkt?
Es gibt ein Problem im Code `jquery.color-RGBa-patch.js`. Es versucht, einen `rgba()`-Wert, den IE nicht erkennt, dem Hintergrund des Magic Line-Elements zuzuweisen.
Ja, ich bin sicher, dass es das ist. Stellen Sie einfach sicher, dass keine der Farbwerte RGBa sind, und Sie sollten in Ordnung sein.
Ich habe es gerade überprüft, und es ist bereits behoben. Gut, dass ich zurückgeschaut habe. Danke für die Hilfe!
Hallo Chris, Ihre Tutorials sind alle fantastisch. Ich habe durch das Ansehen und Lesen all Ihrer Artikel viel über CSS und jQuery gelernt. Sie haben mir wirklich sehr geholfen.
Währenddessen habe ich eine Frage. Eigentlich möchte ich wissen, wie Sie dieses Kommentarsystem erstellt haben?
Ich meine, jeder kann auch auf andere antworten. Während die Kommentarbox eine sehr nette Funktion hat, zeigt sie an, was in die Box eingegeben werden soll, und wenn wir mit der Maus darüber fahren, wird sie ausgegraut, aber verschwindet nicht ganz, aber wenn wir unseren Namen eingeben, verschwindet sie.
Können Sie einen Artikel zu diesem Thema schreiben? Das wäre sehr hilfreich für mich und Leute wie mich, die Anfänger sind.
Dieses Tutorial rockt. Danke.
Stellen Sie die Textarea dieses Kommentars auf `resize: "vertical"`, dann ist es beim Ändern der Größe viel besser als das.
Hallo Chris! Ich wollte letzte Woche etwas Ähnliches machen! Ich werde es mit dieser Methode noch einmal versuchen und versuchen, sie für ein WordPress-Theme zu verwenden, an dem ich gerade arbeite. Ich werde versuchen, die Dropdowns hinzuzufügen und Sie wissen zu lassen, wie es mir geht. Ihr Blog wird schnell zu meiner Lieblingsreferenz für solche Dinge… Cheers :)
Hallo! Sehr tolle Demo. Ich freue mich, sie in einem Kundenprojekt zu verwenden. Ich habe einige Tests auf gemacht und habe unter Win XP mit Explorer einige Probleme. Könnte mir jemand helfen?
Cheers:)
Ich habe das HTML sehr schlecht verwendet. Entschuldigung. Sie können die Demo auch sehen :)
Hallo Chris, ich habe nicht alle Kommentare gelesen, um zu sehen, ob das hier schon erwähnt wurde, aber ich habe das heruntergeladen und es funktioniert in Opera nicht, zumindest nicht sehr gut.
Naja, das war sinnlos, ich bin hochgerollt und bam! Da war die Lösung ^^ Sorry.
Hallo Chris, ich brauche immer noch Hilfe für IE.
http://ekolor.sitiweblecce.it
Ich habe die oben genannten Änderungen vorgenommen, aber es funktioniert immer noch nicht.
Danke :)
Ich sehe das gleiche Problem auch in IE8. Irgendwelche Ideen, Chris oder jemand, wie man das beheben kann? Bitte…
Hallo, großartiges Skript, danke – aber gibt es eine Möglichkeit, eine leichte Verzögerung bei der Bewegung der Magicline einzubauen?
Chris
Hallo Chris, ich bin ein großer Fan Ihrer Arbeit. Danke, dass Sie all diese Code-Stücke teilen.
Hallo Chris,
Danke für die Inspiration nochmals =), die Unterstrich-Sache in Beispiel 1 ist großartig…
Ich benutze dieses Plugin seit mehreren Monaten bei verschiedenen Projekten und ich bin sicher, dass dieser Effekt auch damit erzielt werden könnte… der jQuery-Code ist meiner Meinung nach schwerer, aber er funktioniert wirklich mit allen Browsern und hat sehr nützliche zusätzliche Funktionen…
Schöner Effekt, ich mag JQuery. Danke fürs Teilen
Toller Code!!
Wissen Sie, wie man ihn vertikal statt horizontal laufen lassen kann?
Ich bekomme example2 in IE zum Laufen, indem ich eine Browsererkennung in Ihr example.js einfüge. Nach „$(function(){“ können Sie etwas hinzufügen wie
Im HTML müssen Sie id=”nav1″ hinzufügen…
Ich habe auch die Änderungen in CSS von John Pisello vorgenommen.
Hallo Haichen, ich habe versucht, Ihre Tipps umzusetzen. Ich benutze auch example two, habe auch die Änderungen von John P. angewendet, aber ich habe immer noch Probleme mit IE.
Die Website-URL ist ekolor.sitiweblecce.it
Ich füge auch den Code ein
HTML
BEISPIEL.JS
Keine Änderungen…
Vielen Dank für Ihre Hilfe
Wenn Sie die Seite zuerst laden, erhalten Sie eine „falsche“ Farbe. Fügen Sie in example.js die Hintergrundzeile hinzu, um sie zu ändern.
Danke Chris. Sehr nützliche JavaScript-Menü. Aber es ist nicht perfekt in IE 6. Und ich habe den Fehler behoben. Ich habe in meinem Menü das jpg-Bild als spitzen Pfeil am unteren Rand des Menüs verwendet.
Die Seite lädt in IE6, die „magic-line“-Div ist in der Mitte des Menütextes positioniert.
Wen interessiert schon IE6? Das ist ein 9 Jahre alter Browser.
Ich unterstütze diesen Browser gar nicht mehr, wie jeder andere auch. :)
Hallo!
Sehr schöner Artikel.
Gibt es eine Möglichkeit, die rote Leiste komplett auszublenden, wenn keine Seite aktiv ist?
Ich meine, es gibt einige Seiten in meiner App, die nicht über das Menü erreichbar sind.
Wenn der Benutzer dort ist, sollte die rote Linie verschwinden, wenn sie nicht über das Menü fährt.
Irgendwelche Ideen?
Danke!
Ich versuche es noch einmal
Hallo Alfredo,
Die ID gehört zu Ihren Links. Sie müssen so aussehen
Wie Sie sehen können, haben die Links standardmäßig rgb. Wenn der Browser kein IE ist, macht jQuery rgba. Transparenz ist also nur für Nicht-IEs.
Bitte löschen Sie meinen vorherigen Beitrag
danke
Danke Haichen:)
Habe die Änderungen vorgenommen, aber es funktioniert immer noch nicht..
Haben Sie Geduld;)
Ich füge den JS-Code ein, um Ihnen zu zeigen
Vielen Dank
Mit freundlichen Grüßen,
Alfredo
In Ihrem CSS müssen Sie einen Fallback für rgba einfügen.
Fügen Sie beide Definitionen in das CSS ein.
und dies
IE nimmt das rgb und die meisten anderen das rgba.
Und es gibt zwei #nav1, aber das scheint kein Problem zu sein.
Habe dies mit Ihrem Code ausprobiert und es hat in IE funktioniert.
Hoffentlich hilft das.
Danke Meister!:)) Jetzt läuft alles gut. Sie haben mir sehr geholfen. Vielen Dank:)
Mit freundlichen Grüßen,
Alfredo
Ich habe einen weiteren Punkt hinzugefügt („falsche“ Farbe) versehentlich einige Kommentare weiter oben, aber vielleicht haben Sie ihn gesehen.
haichen
:-)
Hallo!
Ich hatte das Problem in Opera, aber ich habe „display:inline“ durch „float:left“ ersetzt und es hat funktioniert.
Mein HTML-Code ist etwas anders, daher füge ich ihn hier ein
HTML
Und das CSS
Das JS ist dasselbe.
Danke!
Hallo! Hat jemand example 1 in IE zum Laufen gebracht? Danke
Danke für das Teilen dieses Artikels. Ich werde Ihren Code für mein Projekt verwenden.
Gibt es eine Möglichkeit, das Menü beim Benutzen anderer Links zu wechseln? Zum Beispiel habe ich eine „Nachrichten“-Seite auf meiner Website (news.html); und ich möchte, dass sich das Menü nicht nur ändert, wenn ich auf einen Nachrichtenlink im Menü klicke, sondern auch auf einen zufälligen Nachrichtenlink aus dem Hauptteil der Website. Ein weiteres Problem ist, dass ich IFRAME als Hauptteil der Website verwende. Ich dachte, ich brauche so etwas
Das ist der Code im IFRAME-Body; außerdem habe ich dies
im Hauptindex-Seiten-Code.
Aber es funktioniert nicht. Beachten Sie, dass, wenn ich alert(‚parent.document.getElementById(‚a1‚).className‘); verwende, die Nachricht mit dem Text „testclass“ normal angezeigt wird.
Wahrscheinlich muss ich eine zusätzliche Funktionalität des example.js-Skripts auslösen? Wie kann ich das machen?
Das ist lächerlich raffiniert. Meine Güte, ich möchte meine eigene Website zerlegen, nur um diese Art von Navigation zu implementieren. Danke fürs Teilen!!!
Tolles Stück Coding, es ist eine riesige Hilfe, eine CSS-jQuery-basierte Navigation statt einer hässlichen Flash-Variante zu haben!
Gut gemacht, Chris!
Ich habe Probleme damit in IE8..
Es funktioniert in allen anderen getesteten Browsern..
In IE... wenn man über den Link fährt und dann mit der Maus weggeht, rennt die Linie weg :P
Sie läuft komplett von der Seite nach rechts... erzeugt eine horizontale Scrollleiste. Ideen?
Könnte dies nicht mit einer CSS:hover-Klasse gemacht werden?
Fantastisches Menü! Ich habe einen Kontaktbereich und möchte, dass der Button separat ist, damit er rechts angezeigt wird. Ist das möglich? Ich habe hinzugefügt
.right_page_item a { float: right; color: white !important; }
zum CSS und zur Webseite, aber immer noch kein Erfolg
Hallo,
Tolles Tutorial.
Ich hatte ein Problem mit IE8 im Standardmodus (in der Kompatibilitätsansicht war es aber in Ordnung) – die anfängliche Breite des current_page_item, die diesen Punkt tatsächlich leer machte, bis ich mit der Maus darüber fuhr. Nicht gut. Es scheint ein Problem mit der Ermittlung der Breite eines Inline-Elements in IE8 zu geben (obwohl der Fehler nicht auftrat, als newWidth beim Überfahren eines neuen Elements ermittelt wurde – seltsam, oder?).
Das Ändern des CSS von folgendem
#example-one li { display: inline; }
in
#example-one li { display: inline-block; }
löst das Problem. Es scheint auch das Opera-Problem zu lösen, das Sie in Ihrem Tutorial erwähnen!
Machen Sie weiter so.
Danke für die Idee und das Tutorial! Ich habe es auf meinem Blog mit einer leichten Modifikation implementiert. Es gibt eine Oberlinie und eine Unterlinie in meinem Theme.
Ich habe ein Problem
Ich möchte das 2. Beispiel von MagicLine verwenden, aber wenn ich jQuery 1.8.3 implementiere (ich brauche es für fancybox), ändert sich die Farbe nicht mehr :(
Wie wird es funktionieren, wenn es auf einer Seite aktiv ist.
Es funktioniert so: http://www.ministranten.stvitus.de/new/
Ich möchte ein aktives Element hinzufügen, wenn es geklickt wird oder das hervorgehobene Menü, aber wie?
Das ist meine Frage :/
Hat jemand eine Lösung für das Untermenü-Problem gefunden? Vielleicht eine kleine Demo oder so? Bitte!!! :)
Entschuldigung, aber es gibt einen Fehler im JavaScript-Code
leftPos = $el.position().left;sollte sein
leftPos = $el.parent().position().left;Und vielen Dank fürs Teilen.
Und ich habe vergessen, auch diesen Fehler zu erwähnen
.css("left", $("li.current_page_item a").position().left)sollte sein
.css("left", $("li.current_page_item").position().left)All dies, weil, wenn Sie sich auf die ‚a‘-Tag-Position beziehen, ist sie ; und wird immer ; 0 (Null) zurückgeben
Nochmals vielen Dank
Was wäre die Änderung, um die Animation nur bei Klick zu aktivieren? Ich habe das .hover-Ereignis in ein .click-Ereignis geändert
$("#example-one li").find("a").click(function() {aber natürlich gibt es ein Aufblitzen des Roten unter der Auswahl, bevor die Animation stattfinden kann. Wie kann ich dieses Aufblitzen vermeiden?Wissen Sie was, ich habe das total verbockt. Das .click funktioniert perfekt, ich hatte versehentlich eine zweite Animate-Funktion zum Skript hinzugefügt. Ich liebe dieses Plugin jetzt noch mehr!
Das war fast genau das, was ich gesucht habe!
Musste dies für einen Kunden verwenden und habe folgende Änderungen vorgenommen
Nur die obige Zeile
Die Zeile musste nur so breit sein wie der Link
Die Linie konnte beim Wechseln zwischen Ankern nicht zurückspringen
current_page_item musste die gleiche Farbe behalten, wenn :hover, aber andere mussten sich bei :hover ändern
Schauen Sie sich den Fiddle an
http://jsfiddle.net/alexwcoleman/Dwv7X/
(Mein jQuery/JavaScript ist nicht stark, also wenn es Vorschläge gibt…)
Hallo,
Ich möchte dieses MagicLine für eine vertikale Navigation verwenden. Daher habe ich die Frage: Kann die magische Linie vertikal statt horizontal funktionieren? Oder gibt es dafür ein Tutorial?
Ich versuche, das Plugin zu aktualisieren, um es auf einer Website zu verwenden, die JQuery 1.9 oder 2.0 verwendet. Weiß jemand aus dem Stegreif, welche der enthaltenen Funktionen in der JS veraltet/ersetzt wurden?
Hallo
Danke für all die schönen Dinge.
Ein Problem, das ich habe, wenn ich position:relative auf das li-Tag anwende. Das funktioniert nicht.
Ich musste
position:relativezu#example-one li ahinzufügen, um die magic-line tatsächlich hinter den Links zu sehen, ohne sie war sie darüber, da sie die z-index-Einstellungen ignorierteHallo,
Ich bin kein Coder, aber normalerweise bin ich kompetent genug, um Code an meine Bedürfnisse anzupassen, und kann meine eigenen Implementierungen normalerweise durch Recherche herausfinden. In diesem Fall stoße ich an meine Grenzen.
Ich weiß nicht, ob mir jemand helfen kann. Ich versuche, dies auf einer Website zu verwenden, die ich für Squarespace erstelle. Ich habe jQuery-Addons schon oft gemacht, aber ich bekomme dieses hier nicht zum Laufen. Ich habe das Skript geändert, um meine Vorlagenklassen und IDs widerzuspiegeln, und es mit einem Codeblock getestet, den ich mitten auf meiner Seite eingefügt habe. Aber aus irgendeinem Grund bekomme ich es nicht zum Laufen mit dem tatsächlichen Menü oben auf dem Bildschirm.
Ich habe das Gefühl, dass der Teil des Codes, der den Hoverbereich über den Links findet, den Cursor wegen etwas im CSS der Vorlage nicht sieht. Jede Hilfe wäre SEHR dankbar. Sie können die Seite unter
http://boxjelly.squarespace.com
&
$(„.cf li a“).hover(function() {
Sollte der Teil des Codes, der sucht, weiter untersucht werden? z.B.
$(„.desktopnav nav.main-Nav div.nav-wrapper ul.cf li a…
Ich weiß nicht, ob das Sinn macht
-Matt
Oh, und das ist der gesamte Code, den ich verwende + das CSS
$(function() {
});
//Magic Line
//.cf { margin: 0 auto; list-style: none; position: relative; }
//.cf li { display: inline; }
//.cf li a { color: #bbb; font-size: 14px; display: block; float: left; text-decoration: none; text-transform: uppercase; }
//.cf li a:hover { color: white; }
#magic-line { position: absolute; bottom: -2px; left: 0; width: 100px; height: 2px; background: #fe4902; }
Ich habe die meisten Stilelemente auskommentiert, da das Navigationsmenü bereits Stilelemente angewendet hat.