Heute lernen wir, wie Sie den Bootstrap 4-Registerkarten "Deep Linking" hinzufügen. Um besser zu verstehen, woran wir arbeiten, schauen Sie sich die Demo-Seite an und achten Sie auf zwei Dinge:
Wir werden drei Hauptschritte skizzieren. HTML, CSS und JavaScript. Für alle drei wird ein gewisses Maß an Kompetenz vorausgesetzt. Aufgeregt zu sehen, wie wir das bauen werden? Wenn die Antwort ja ist, lass uns anfangen!
Wir beginnen mit einer Starter-Vorlage aus der Bootstrap-Dokumentation.
Hinzufügen von Deep Linking zur Komponente "Bootstrap 4 Tabs"
Um die Registerkarten zu erstellen, verwenden wir Beispielcode für die von Bootstrap bereitgestellte Registerkomponente:
Als Nächstes geben wir einige CSS-Regeln für unsere Komponente an. Nichts Besonderes, nur einige Grundstile. Es ist erwähnenswert, dass wir in einem früheren Tutorial ähnliche Stile zum Erstellen einer benutzerdefinierten Registerkomponente verwendet haben.
Hier sind die Anfangsstile:
.nav-mytabs margin-top: 2rem; .nav-mytabs li: nicht (: letztes Kind) margin-right: 7px; .nav-mytabs a position: relative; oben: 4px; Polsterung: 10px 25px; Grenzradius: 2px 2px 0 0; Hintergrund: weiß; Farbe schwarz; Deckkraft: 0,7; Übergang: alle 0,1s Easy-In-Out; .nav-mytabs a.aktiv, .nav-mytabs a: hover Deckkraft: 1; oben: 0; .mytab-content position: relativ; z-Index: 2; Polsterung: 25px; Grenzradius: 0 4px 4px 4px; Hintergrund: weiß;
Wenn HTML und CSS vorhanden sind, ist es an der Zeit, den erforderlichen JavaScript-Code zu prüfen (dies ist das wichtigste Bit)..
Wenn das DOM fertig ist, rufen wir die Seiten-URL ab und verwenden einen regulären Ausdruck, um den nachfolgenden Schrägstrich zu entfernen. Zum Beispiel, wenn die ursprüngliche URL lautet etwas/
, Die geänderte URL wird sein etwas
.
Als Nächstes prüfen wir, ob die URL einen Hash enthält. In diesem Fall möchten wir den Inhalt der zweiten oder dritten Registerkarte anzeigen (in unserem Beispiel). Dazu führen wir folgendes aus:
Tab
Methode.replaceState
Methode.Jedes Mal, wenn wir auf eine Registerkarte klicken, machen wir Folgendes:
href
Attributwert dieser Registerkarte. In unserem Fall sind die möglichen Werte #Zuhause
, #Geschichte
, # Stadtattraktionen
.replaceState
Methode.Hier ist das JavaScript, das sich um all das kümmert:
$ (document) .ready (() => lass url = location.href.replace (/ \ / $ /, ""); if (location.hash) const hash = url.split ("#"); $ ('# myTab a [href = "#' + hash [1] +" "] '). tab (" show "); url = location.href.replace (/ \ / # /," # "); history.replaceState (null, null, url); setTimeout (() => $ (window) .scrollTop (0);, 400); $ ('a [data-toggle = "tab"]'). on ("click", function () let newUrl; const hash = $ (this) .attr ("href"); if (hash == "#home") newUrl = url.split ("#") [ 0]; else newUrl = url.split ("#") [0] + hash; newUrl + = "/"; history.replaceState (null, null, newUrl);););
Die Demo sollte in allen aktuellen Browsern gut funktionieren. Der Einfachheit halber habe ich keinen JavaScript-Compiler (z. B. Babel) verwendet, aber in Ihrem eigenen Code müssen Sie dies möglicherweise tun.
In diesem Lernprogramm ist es uns gelungen, das Verhalten der Registerkarten von Bootstrap 4 anzupassen, indem jeder Registerkarte eine identifizierbare URL zugewiesen wurde, wodurch der Inhalt navigierbarer und gemeinsam nutzbar ist. Beachten Sie, dass der hier implementierte Prozess auch auf jedes andere Framework oder sogar auf eine benutzerdefinierte Registerkomponente angewendet werden kann.
Wenn Sie etwas nicht verstanden haben oder Ihnen etwas unklar erscheint, lassen Sie es mich in den folgenden Kommentaren wissen!