Vandaag leren we hoe we "deep linking" kunnen toevoegen aan de Bootstrap 4-tabbladen. Om beter te begrijpen waar we naartoe werken, bekijk de demopagina en let op twee dingen:
We zullen drie hoofdstappen beschrijven; de HTML, de CSS en de JavaScript. Een bepaald competentieniveau voor deze drie wordt verondersteld. Opgewonden om te zien hoe we dit gaan bouwen? Als het antwoord ja is, laten we beginnen!
We zullen beginnen met een startersjabloon uit de documentatie van Bootstrap.
Hoe Deep Linking aan de component Bootstrap 4 Tabs toe te voegen
Om de tabbladen te maken, maken we gebruik van voorbeeldcode voor het tabbladonderdeel dat Bootstrap biedt:
Vervolgens specificeren we een paar CSS-regels voor onze component. Niets bijzonders, slechts enkele basisstijlen. Het is de moeite waard te vermelden dat we in een eerdere zelfstudie soortgelijke stijlen hebben gebruikt om een aangepast tabbladonderdeel te maken.
Dit zijn de beginstijlen:
.nav-mytabs margin-top: 2rem; .nav-mytabs li: not (: last-child) margin-right: 7px; .nav-mytabs a position: relative; top: 4px; opvulling: 10px 25px; grensradius: 2px 2px 0 0; achtergrond: wit; de kleur zwart; opaciteit: 0,7; overgang: alle 0,1s gemak in-uit; .nav-mytabs a.active, .nav-mytabs a: hover opacity: 1; boven: 0; .mytab-content positie: relatief; z-index: 2; opvulling: 25px; grensradius: 0 4px 4px 4px; achtergrond: wit;
Met de HTML en CSS op zijn plaats, is het tijd om naar de vereiste JavaScript-code te kijken (dit is het belangrijke bit).
Ten eerste, wanneer de DOM gereed is, halen we de pagina-URL op en gebruiken we een reguliere expressie om de bijbehorende schuine streep te verwijderen. Bijvoorbeeld als de originele URL is iets/
, de gewijzigde URL zal zijn iets
.
Vervolgens controleren we of de URL hash bevat. Als dat het geval is, betekent dit dat we de inhoud van het tweede of derde tabblad (in ons voorbeeld) willen weergeven. Om dit te doen, voeren wij het volgende uit:
tab
methode.replaceState
methode.Elke keer dat we op een tabblad klikken, doen we het volgende:
href
attribuutwaarde van dit tabblad. In ons geval zijn de mogelijke waarden #huis
, #geschiedenis
, # City-attracties
.replaceState
methode.Hier is de JavaScript die zorgt voor dat alles:
$ (document) .ready (() => let 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);););
De demo zou goed moeten werken in alle recente browsers. Om het eenvoudig te houden, heb ik geen JavaScript-compiler (bijvoorbeeld Babel) gebruikt, maar in je eigen code zou dat wel moeten.
In deze zelfstudie zijn we erin geslaagd het gedrag van de Bootstrap 4-tabbladen aan te passen door elk tabblad een herkenbare URL te geven, waardoor hun inhoud beter navigeerbaar en deelbaar is. Houd er rekening mee dat het hier geïmplementeerde proces ook kan worden toegepast op elk ander framework of zelfs op een aangepast tabbladonderdeel.
Als er iets is dat u niet begrijpt of als iets u niet duidelijk lijkt, laat het me weten in de onderstaande opmerkingen!