pinterest linkedin behance copy

Composants

Découvrez comment et pourquoi nous construisons presque tous nos composants de manière réactive et avec des classes de base et de modification.

Cours de base

Les composants de Bootstrap sont en grande partie construits avec une nomenclature de modificateur de base. Nous regroupons autant de propriétés partagées que possible dans une classe de base, comme .btn, puis regroupons les styles individuels pour chaque variante dans des classes de modificateurs, comme .btn-primary ou .btn-success.

Pour construire nos classes de modificateurs, nous utilisons les boucles @each de Sass pour itérer sur une carte Sass. Ceci est particulièrement utile pour générer des variantes d'un composant par notre $theme-colors et créer des variantes réactives pour chaque point d'arrêt. Au fur et à mesure que vous personnalisez ces cartes Sass et recompilez, vous verrez automatiquement vos modifications reflétées dans ces boucles.

Consultez notre documentation sur les cartes et les boucles Sass pour savoir comment personnaliser ces boucles et étendre la base de Bootstrap. approche modificateur à votre propre code.

Modificateurs

De nombreux composants de Bootstrap sont construits avec une approche de classe de modificateur de base. Cela signifie que la majeure partie du style est contenue dans une classe de base (par exemple, .btn) tandis que les variations de style sont confinées aux classes de modificateurs (par exemple, .btn-danger). Ces classes de modificateurs sont construites à partir de la carte $theme-colors pour personnaliser le nombre et le nom de nos classes de modificateurs.

Voici deux exemples de la façon dont nous parcourons la carte $theme-colors pour générer des modificateurs pour .alert et .list-group composants.

// Generate contextual modifier classes for colorizing the alert.

@each $state, $value in $theme-colors {
  $alert-background: shift-color($value, $alert-bg-scale);
  $alert-border: shift-color($value, $alert-border-scale);
  $alert-color: shift-color($value, $alert-color-scale);
  @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {
    $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));
  }
  .alert-#{$state} {
    @include alert-variant($alert-background, $alert-border, $alert-color);
  }
}
// List group contextual variants
//
// Add modifier classes to change text and background color on individual items.
// Organizationally, this must come after the `:hover` states.

@each $state, $value in $theme-colors {
  $list-group-variant-bg: shift-color($value, $list-group-item-bg-scale);
  $list-group-variant-color: shift-color($value, $list-group-item-color-scale);
  @if (contrast-ratio($list-group-variant-bg, $list-group-variant-color) < $min-contrast-ratio) {
    $list-group-variant-color: mix($value, color-contrast($list-group-variant-bg), abs($list-group-item-color-scale));
  }

  @include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);
}

Responsive

Ces boucles Sass ne se limitent pas non plus aux cartes de couleurs. Vous pouvez également générer des variantes réactives de vos composants. Prenons par exemple notre alignement réactif des listes déroulantes où nous mélangeons une boucle @each pour la carte $grid-breakpoints Sass avec une requête multimédia incluse.

// We deliberately hardcode the `bs-` prefix because we check
// this custom property in JS to determine Popper's positioning

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-up($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    .dropdown-menu#{$infix}-start {
      --bs-position: start;

      &[data-bs-popper] {
        right: auto;
        left: 0;
      }
    }

    .dropdown-menu#{$infix}-end {
      --bs-position: end;

      &[data-bs-popper] {
        right: 0;
        left: auto;
      }
    }
  }
}

Si vous modifiez vos $grid-breakpoints, vos modifications s'appliqueront à toutes les boucles itérant sur cette carte.

$grid-breakpoints: (
  xs: 0,
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1200px,
  xxl: 1400px
);

Pour plus d'informations et d'exemples sur la façon de modifier nos cartes et variables Sass, veuillez vous référer à la section Sass de la documentation Grid .

Créer le votre

Nous vous encourageons à adopter ces directives lors de la construction avec Bootstrap pour créer vos propres composants. Nous avons nous-mêmes étendu cette approche aux composants personnalisés dans notre documentation et nos exemples. Des composants comme nos légendes sont construits comme nos composants fournis avec des classes de base et de modificateur.

Ceci est une légende. Nous l'avons conçu sur mesure pour nos documents afin que nos messages se démarquent. Il a trois variantes via des classes de modificateurs.
<div class="callout">...</div>

Dans votre CSS, vous auriez quelque chose comme ce qui suit où la majeure partie du style est effectuée via .callout. Ensuite, les styles uniques entre chaque variante sont contrôlés via la classe de modificateur.

// Base class
.callout {}

// Modifier classes
.callout-info {}
.callout-warning {}
.callout-danger {}

Pour les légendes, ce style unique est juste un border-left-color. Lorsque vous combinez cette classe de base avec l'une de ces classes de modificateurs, vous obtenez votre famille de composants complète :

Ceci est une légende d'information. Exemple de texte pour le montrer en action.
Ceci est une légende d'avertissement. Exemple de texte pour le montrer en action.
Ceci est une légende de danger. Exemple de texte pour le montrer en action.

© 2010-2024 QZYcodes by Quazerty.