Ir para o conteúdo principal Pular para a navegação de documentos
in English

Componentes

Saiba como e por que construímos quase todos os nossos componentes de forma responsiva e com classes base e modificadoras.

Aulas básicas

Os componentes do Bootstrap são amplamente construídos com uma nomenclatura de modificador de base. Agrupamos o maior número possível de propriedades compartilhadas em uma classe base, como .btn, e agrupamos estilos individuais para cada variante em classes modificadoras, como .btn-primaryou .btn-success.

Para construir nossas classes modificadoras, usamos os @eachloops do Sass para iterar sobre um mapa Sass. Isso é especialmente útil para gerar variantes de um componente $theme-colorse criar variantes responsivas para cada ponto de interrupção. À medida que você personaliza esses mapas Sass e recompila, você verá automaticamente suas alterações refletidas nesses loops.

Confira nossos mapas Sass e documentos de loops para saber como personalizar esses loops e estender a abordagem de modificador de base do Bootstrap para seu próprio código.

Modificadores

Muitos dos componentes do Bootstrap são construídos com uma abordagem de classe modificadora de base. Isso significa que a maior parte do estilo está contida em uma classe base (por exemplo, .btn), enquanto as variações de estilo estão confinadas a classes modificadoras (por exemplo, .btn-danger). Essas classes modificadoras são construídas a partir do $theme-colorsmapa para personalizar o número e o nome de nossas classes modificadoras.

Aqui estão dois exemplos de como fazemos um loop no $theme-colorsmapa para gerar modificadores para os componentes .alerte .list-group.

// 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);
}

Responsivo

Esses loops Sass também não se limitam a mapas de cores. Você também pode gerar variações responsivas de seus componentes. Veja, por exemplo, nosso alinhamento responsivo das listas suspensas, onde misturamos um @eachloop para o $grid-breakpointsmapa Sass com uma consulta de mídia incluída.

// 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;
      }
    }
  }
}

Se você modificar seu $grid-breakpoints, suas alterações serão aplicadas a todos os loops que iteram nesse mapa.

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

Para obter mais informações e exemplos sobre como modificar nossos mapas e variáveis ​​Sass, consulte a seção Sass da documentação do Grid .

Criando o seu próprio

Recomendamos que você adote essas diretrizes ao construir com o Bootstrap para criar seus próprios componentes. Nós estendemos essa abordagem para os componentes personalizados em nossa documentação e exemplos. Componentes como nossos textos explicativos são construídos exatamente como nossos componentes fornecidos com classes base e modificadoras.

Esta é uma chamada. Nós o construímos sob medida para nossos documentos para que nossas mensagens para você se destaquem. Possui três variantes por meio de classes modificadoras.
<div class="callout">...</div>

Em seu CSS, você teria algo como o seguinte, onde a maior parte do estilo é feita via .callout. Em seguida, os estilos únicos entre cada variante são controlados por meio da classe modificadora.

// Base class
.callout {}

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

Para os textos explicativos, esse estilo exclusivo é apenas um border-left-color. Ao combinar essa classe base com uma dessas classes modificadoras, você obtém sua família de componentes completa:

Esta é uma chamada de informação. Texto de exemplo para mostrá-lo em ação.
Esta é uma chamada de aviso. Texto de exemplo para mostrá-lo em ação.
Esta é uma chamada de perigo. Texto de exemplo para mostrá-lo em ação.