Obtenir des onglets bootstrap pour jouer bien avec la ma?onnerie
Feb 15, 2025 am 08:31 AM
Points clés
- Bootstrap et la ma?onnerie sont tous deux de puissants outils de développement Web, mais les utiliser en même temps peut entra?ner des erreurs de mise en page, surtout si vous masquez les onglets.
- Masonry, une bibliothèque de mise en page JavaScript Grid, est une solution viable pour créer une grille de cartes avec inégalité même s'il existe certains problèmes de compatibilité du navigateur.
- L'intégration de l'onglet bootstrap avec la ma?onnerie n'est pas facile. La grille à l'intérieur du panneau d'onglet actif par défaut peut appara?tre correctement, mais cliquer sur le lien de navigation à l'onglet pour afficher le contenu du panneau caché peut entra?ner l'empilage incorrectement les éléments de la grille.
- La solution à l'erreur de mise en page consiste à réinitialiser la bibliothèque de ma?onnerie une fois que chaque panneau est visible. Cela peut être réalisé en utilisant l'événement "montré.bs.tab". Avec cette solution, il est plus facile de créer une excellente disposition de carreaux.
Bootstrap est l'un des cadres frontaux open source les plus adoptés. Incluez Bootstrap dans votre projet et vous pourrez créer immédiatement des pages Web réactives. Si vous essayez d'utiliser de la ma?onnerie avec le widget OPM Bootstrap (l'un des nombreux composants JavaScript que Bootstrap fournit), vous rencontrerez très probablement une sorte de comportement ennuyeux.
Sur le site Web de la ma?onnerie, nous lisons que la ma?onnerie est…
Une bibliothèque de mise en page JavaScript. Il fonctionne en pla?ant des éléments dans la position optimale en fonction de l'espace vertical disponible, un peu comme un ma?on construisant une pierre sur un mur.
J'ai rencontré ce problème et cet article se concentre sur l'endroit où se situe le problème et les solutions que vous pouvez prendre.
Explication détaillée de l'onglet bootstrap
Le composant Tab Bootstrap contient deux pièces liées à la clé: l'élément de navigation de l'onglet et plusieurs panneaux de contenu. Lorsque la page se charge, le premier panneau applique la classe .active. Cela rend le panneau visible par défaut. Cette classe est utilisée via JavaScript pour basculer la visibilité du panneau via l'événement de contact de la liaison de navigation TAB: si .active existe, le panneau est visible, sinon le panneau est caché.
Si vous avez du contenu Web qui est le mieux rendu dans des blocs séparés plut?t que tous les pressés en un seul endroit, le composant de l'onglet bootstrap peut être utile.
Pourquoi choisir la ma?onnerie?
Dans certains cas, le contenu de chaque panneau convient à l'affichage dans une disposition de grille réactive. Par exemple, une gamme de projets de produits, de service et de portefeuille est des types de contenu qui peuvent être affichés dans un format de grille.
Cependant, si les hauteurs des cellules de la grille ne sont pas égales, ce qui suit peut se produire.
Il y a un grand écart entre les deux lignes de contenu et la disposition semble endommagée.
Bootstrap résout le problème de monospace avec le nouveau composant de carte basé sur Flexbox. Le simple fait d'ajouter la classe de pont de carte à un ensemble de composants de carte est suffisant pour implémenter des colonnes monospatiales.
Si vous souhaitez que la longueur de la carte soit incohérente, vous pouvez utiliser la disposition multi-colonnes CSS3. (Après tout, c'est assez bon dans l'ensemble, même avec certains problèmes de compatibilité du navigateur.) C'est la base des nouvelles options de colonne de carte disponibles avec les composants de la carte. Cependant, si vous aimez toujours les belles animations hors de la bo?te de la bibliothèque JavaScript de ma?onnerie et sa compatibilité approfondie du navigateur, JavaScript est toujours une option viable dans ce cas.
Définissez la page de démonstration
Démarrer une page de démonstration aide à illustrer que l'intégration de l'onglet bootstrap avec la ma?onnerie n'est pas aussi simple que prévu.
La page de démonstration de cet article est basée sur les modèles de démarrage fournis sur le site Bootstrap.
Ce qui suit est le cadre marqué par le composant de l'onglet bootstrap:
<ul class="nav nav-tabs" id="myTab" role="tablist"> <li class="nav-item"> <a class="nav-link active" id="home-tab" data-toggle="tab" href="http://ipnx.cn/link/6fbb2c2ee065c77a193d0057aab8fa11" role="tab" aria-controls="home" aria-selected="true">Home</a> </li> <li class="nav-item"> <a class="nav-link" id="profile-tab" data-toggle="tab" href="http://ipnx.cn/link/0bd97cb91b8d57dad18542081fb8f2b1" role="tab" aria-controls="profile" aria-selected="false">Profile</a> </li> <li class="nav-item"> <a class="nav-link" id="contact-tab" data-toggle="tab" href="http://ipnx.cn/link/18fb150bb65a5825c83969a59f3febc1" role="tab" aria-controls="contact" aria-selected="false">Contact</a> </li> </ul>
NAV La classe NAV-TABS est chargée de donner aux kaki une apparence unique. La valeur de l'attribut HREF forme la relation entre un seul onglet et son contenu d'onglet correspondant. Par exemple, une valeur href de http://ipnx.cn/link/6fbb2c2ee065c77a193d0057aab8fa11 établira une relation avec le contenu de l'onglet dans la valeur ID de la maison: cliquer sur l'onglet spécifique affichera le contenu de la div. .
De plus, veuillez noter comment bootstrap se concentre sur les propriétés d'accessibilité telles que le r?le, les contr?les Aria, etc.
Le code d'extrait de code suivant illustre la structure du contenu de l'onglet:
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab"> <h3>Tab 1 Content</h3> <div class="card-group"> <div class="card"> <img src="/static/imghw/default1.png" data-src="https://img.php.cn/" class="lazy" alt="Getting Bootstrap Tabs to Play Nice with Masonry " /> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text">Card text here.</p> <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p> </div> </div> <div class="card"> </div> <div class="card"> </div> </div> </div>
Ajoutez simplement une structure similaire à chaque partie de contenu de l'onglet correspondant à l'élément tabulation écrit ci-dessus.
Pour le code complet, consultez la démo de codepen.
Ajouter la bibliothèque de ma?onnerie
Vous pouvez télécharger la ma?onnerie à partir du site officiel en cliquant sur le bouton "Télécharger la ma?onnerie.pkgd.min.js".
Pour éviter les problèmes de mise en page, l'auteur de la bibliothèque recommande d'utiliser la ma?onnerie avec le plugin à charge d'images.
La ma?onnerie ne nécessite pas une bibliothèque jQuery pour fonctionner. Cependant, comme le composant JavaScript bootstrap utilise déjà jQuery, je vais faciliter la vie et initialiser la ma?onnerie à JQuery Way.
Ce qui suit est un extrait de l'initialisation de la ma?onnerie à l'aide de jQuery et d'images téléchargées:
var $container = $('.masonry-container'); $container.imagesLoaded( function () { $container.masonry({ columnWidth: '.card', itemSelector: '.card' }); });
Le code ci-dessus cache le div qui enveloppe tous les éléments de la carte dans une variable nommée $ conteneur.
Ensuite, utilisez quelques options recommandées pour initialiser la ma?onnerie sur $ conteneur. L'option de colonne indique la largeur de la colonne de grille horizontale. Ici, il est défini sur la largeur d'un seul élément de carte en utilisant son nom de classe. L'option ItemSelector indique quels éléments enfants à utiliser comme éléments de projet. Ici, il est également défini comme un seul élément de carte.
Il est temps de tester le code.
Oh! Quel est le problème avec la cachette du panneau?
Le code ci-dessus fonctionne bien sur les pages Web qui n'utilisent pas l'onglet bootstrap. Cependant, dans ce cas, vous vous rendrez vite compte que quelque chose d'étrange va se produire.
Tout d'abord, il a l'air plut?t bien car la grille à l'intérieur du panneau d'onglet actif par défaut s'affiche correctement:
Cependant, si vous cliquez sur le lien de navigation à l'onglet pour afficher le contenu du panneau caché, ce qui suit se produit:
La visualisation du code source révèlera que la ma?onnerie a été licenciée comme prévu, mais la position de chaque élément est mal calculée: les éléments de la grille sont tous empilés comme une pile de cartes.
et plus que cela. Le redimensionnement de la fenêtre du navigateur provoquera correctement les éléments de la grille.
Correction de l'erreur de mise en page
étant donné que les erreurs de mise en page inattendues deviennent apparentes après avoir cliqué sur le lien de navigation à l'onglet, examinons de plus près les événements déclenchés par l'onglet bootstrap.
La liste des événements est très courte. C'est ?a.
- show.bs.tab tire lorsque l'onglet s'affiche, mais avant que la nouvelle onglet ne s'affiche
- montré.bs.tab déclenche une fois l'onglet affiché.
- hide.bs.tab est licencié lorsque vous souhaitez afficher un nouvel onglet (de sorte que l'onglet actif précédent sera masqué)
- Hidden.bs.tab est tiré après s'afficher la nouvelle onglet (de sorte que l'onglet actif précédent est masqué).
étant donné que la mise en page de la ma?onnerie devient désordonnée après l'affichage de l'onglet, sélectionnez l'événement show.bs.tab. Voici le code que vous pouvez le mettre directement sous l'extrait de code précédent:
<ul class="nav nav-tabs" id="myTab" role="tablist"> <li class="nav-item"> <a class="nav-link active" id="home-tab" data-toggle="tab" href="http://ipnx.cn/link/6fbb2c2ee065c77a193d0057aab8fa11" role="tab" aria-controls="home" aria-selected="true">Home</a> </li> <li class="nav-item"> <a class="nav-link" id="profile-tab" data-toggle="tab" href="http://ipnx.cn/link/0bd97cb91b8d57dad18542081fb8f2b1" role="tab" aria-controls="profile" aria-selected="false">Profile</a> </li> <li class="nav-item"> <a class="nav-link" id="contact-tab" data-toggle="tab" href="http://ipnx.cn/link/18fb150bb65a5825c83969a59f3febc1" role="tab" aria-controls="contact" aria-selected="false">Contact</a> </li> </ul>
Ce qui suit est ce qui se passe dans le code ci-dessus:
La fonctionjQuery .Each () boucles via chaque lien de navigation et écoute pour l'événement affiché.bs.tab. Lorsque l'événement se déclenche, le panneau devient visible et la ma?onnerie est réinitialisée après le chargement des images.
Code de test
Si vous avez suivi, commencez votre démo dans votre navigateur ou essayez la démo de codepen ci-dessous pour voir les résultats:
lien de démonstration de codepen
Cliquez sur le lien de navigation Tab et notez comment le projet Grid s'adapte uniformément à chaque panneau de contenu cette fois. Le redimensionnement du navigateur fera que le projet se repositionne correctement avec de beaux effets d'animation.
c'est tout, le travail est fait!
Conclusion
Dans cet article, j'ai démontré comment intégrer le composant Tab Bootstrap avec la bibliothèque JavaScript Masonry.
Les deux scripts sont faciles à utiliser et puissants. Cependant, assemblez-les et vous affronterez des erreurs de mise en page ennuyeuses qui affectent les onglets cachés. Comme indiqué ci-dessus, l'astuce consiste à réinitialiser la bibliothèque de ma?onnerie une fois que chaque panneau est visible.
Avec cette solution, la création d'une grande disposition des carreaux sera un jeu d'enfant.
Je vous souhaite une bonne utilisation de Bootstrap!
Onglet bootstrap et FAQ de la ma?onnerie (FAQ)
(La partie FAQ doit être insérée ici, le contenu est cohérent avec la partie FAQ d'origine, et il sera légèrement réécrit au besoin pour garder le sémantique inchangé)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Il existe trois fa?ons de créer un rotateur de chargement CSS: 1. Utilisez le rotateur de base des frontières pour obtenir une animation simple via HTML et CSS; 2. Utilisez un rotateur personnalisé de plusieurs points pour atteindre l'effet de saut à travers différents temps de retard; 3. Ajoutez un rotateur dans le bouton et basculez les classes via JavaScript pour afficher l'état de chargement. Chaque approche souligne l'importance des détails de conception tels que la couleur, la taille, l'accessibilité et l'optimisation des performances pour améliorer l'expérience utilisateur.

Pour faire face à la compatibilité du navigateur CSS et aux problèmes de préfixe, vous devez comprendre les différences de prise en charge du navigateur et utiliser raisonnablement les préfixes des fournisseurs. 1. Comprendre les problèmes communs tels que Flexbox et le support de la grille, Position: Sticky Invalid et les performances d'animation sont différentes; 2. Vérifier l'état du support de la fonction de confirmation de Caniuse; 3. Utilisez correctement -webkit-, -moz-, -ms-, -o- et autres préfixes du fabricant; 4. Il est recommandé d'utiliser AutopRefixer pour ajouter automatiquement les préfixes; 5. Installez PostCSS et configurez le navigateur pour spécifier le navigateur cible; 6. Gérer automatiquement la compatibilité pendant la construction; 7. Les fonctionnalités de détection modernizr peuvent être utilisées pour les anciens projets; 8. Pas besoin de poursuivre la cohérence de tous les navigateurs,

HEMAINDIFFERENCESBetweendisplay: Inline, Block, Andinline-BlockInhtml / CSSareLayoutBehavior, SpaceUsage et StylingControl.1.InlineElementsflowWithText, Don'tStartNewLines, Ignorewidth / Height, AndonlyApplyhorizontalPadding / Marges - IdealForninetLetetStyLinSing

Utilisez l'attribut Clip-Path de CSS pour recadrer des éléments en formes personnalisées, telles que les triangles, les encoches circulaires, les polygones, etc., sans compter sur des images ou des SVG. Ses avantages incluent: 1. Prend en charge une variété de formes de base telles que le cercle, l'ellipse, le polygone, etc.; 2. Ajustement réactif et adaptable aux terminaux mobiles; 3. Facile à l'animation, et peut être combiné avec le survol ou le javascript pour obtenir des effets dynamiques; 4. Il n'affecte pas le flux de disposition et ne culte que la zone d'affichage. Les usages communs sont tels que le chemin de clip circulaire: cercle (50pxatcenter) et trame de clip Triangle: polygone (50% 0%, 100 0%, 0 0%). Avis

La définition du style de liens que vous avez visité peut améliorer l'expérience utilisateur, en particulier dans les sites Web à forte intensité de contenu pour aider les utilisateurs à mieux naviguer. 1. Utilisez CSS: Pseudo-classe visité pour définir le style du lien visité, tels que les changements de couleur; 2. Notez que le navigateur permet uniquement la modification de certains attributs en raison des restrictions de confidentialité; 3. La sélection des couleurs doit être coordonnée avec le style global pour éviter la brutalité; 4. Le terminal mobile peut ne pas afficher cet effet et il est recommandé de le combiner avec d'autres invites visuelles telles que les logos auxiliaires ic?nes.

Pour créer des images réactives à l'aide de CSS, elle peut être principalement réalisée grace aux méthodes suivantes: 1. Utilisez la largeur maximale: 100% et hauteur: Auto pour permettre à l'image de s'adapter à la largeur du conteneur tout en maintenant la proportion; 2. Utilisez les attributs SRCSET et tailles de HTML pour charger intelligemment les sources d'image adaptées à différents écrans; 3. Utilisez l'objet-ajustement et la position d'objet pour contr?ler le recadrage d'images et l'affichage de la mise au point. Ensemble, ces méthodes garantissent que les images sont présentées clairement et magnifiquement sur différents appareils.

Le choix des unités CSS dépend des exigences de conception et des exigences réactives. 1.PX est utilisé pour la taille fixe, adaptée à un contr?le précis mais au manque d'élasticité; 2.EM est une unité relative, qui est facilement causée par l'influence de l'élément parent, tandis que REM est plus stable en fonction de l'élément racine et convient à la mise à l'échelle globale; 3.VW / VH est basé sur la taille de la fenêtre, adaptée à la conception réactive, mais l'attention doit être accordée aux performances sous des écrans extrêmes; 4. Lors du choix, il doit être déterminé en fonction de la question de savoir si les ajustements réactifs, les relations de hiérarchie d'éléments et la dépendance de la fenêtre. Une utilisation raisonnable peut améliorer la flexibilité et la maintenance de la disposition.

Différents navigateurs ont des différences dans l'analyse CSS, ce qui entra?ne des effets d'affichage incohérents, y compris principalement la différence de style par défaut, la méthode de calcul du modèle de bo?te, le niveau de support Flexbox et la disposition de la grille et le comportement incohérent de certains attributs CSS. 1. Le traitement de style par défaut est incohérent. La solution consiste à utiliser cssreset ou normaliser.css pour unifier le style initial; 2. La méthode de calcul du modèle de bo?te de l'ancienne version de IE est différente. Il est recommandé d'utiliser la taille d'une bo?te: Border-Box de manière unifiée; 3. Flexbox et Grid fonctionnent différemment dans les cas de bord ou dans les anciennes versions. Plus de tests et utilisent Autoprefixer; 4. Certains comportements d'attribut CSS sont incohérents. Caniuse doit être consulté et rétrogradé.
