182 votes

Bootstrap 3 points de rupture et requêtes médias

Sur la documentation des requêtes média de Bootstrap 3, il est dit :

Nous utilisons les requêtes média suivantes dans nos fichiers Less pour créer les points de rupture clés de notre système de grille.

Petits appareils (téléphones, moins de 768px) : Aucune requête média puisque c'est la valeur par défaut dans Bootstrap

Appareils de taille moyenne (tablettes, 768px et plus) : @media (min-width: @screen-sm-min) { ... }

Grands appareils (ordinateurs de bureau, 992px et plus) : @media (min-width: @screen-md-min) { ... }

Appareils larges (grands ordinateurs de bureau, 1200px et plus) : @media (min-width: @screen-lg-min) { ... }

Devrions-nous également pouvoir utiliser les noms @screen-sm, @screen-md et @screen-lg dans nos requêtes média ? Parce que cela ne fonctionne pas pour moi. Je dois utiliser des mesures en pixels telles que @media (min-width: 768px) {...} avant que cela fonctionne. Est-ce que je fais quelque chose de mal ?

De plus, la référence à 480px pour les petits appareils est-elle une coquille ? Ne devrait-on pas dire jusqu'à 767px ? (depuis retiré de la documentation)

229voto

Sophy Points 585

Médias-queries et points d'arrêt de Bootstrap 5

// Appareils très petits (téléphones en mode portrait, moins de 576px)
// Aucune requête média pour `xs` car c'est la valeur par défaut dans Bootstrap

// Petits appareils (téléphones en mode paysage, 576px et plus)
@media (min-width: 576px) { ... }

// Appareils moyens (tablettes, 768px et plus)
@media (min-width: 768px) { ... }

// Grands appareils (ordinateurs de bureau, 992px et plus)
@media (min-width: 992px) { ... }

// Appareils extra grands (grand écrans de bureau, 1200px et plus)
@media (min-width: 1200px) { ... }

// Appareils très grands (écrans de bureau plus larges, 1400px et plus)
@media (min-width: 1400px) { ... }

Largeur minimale

// Mixins source

// Aucune requête média nécessaire pour le point d'arrêt `xs` car c'est effectivement `@media (min-width: 0) { ... }`
@include media-breakpoint-up(sm) { ... }
@include media-breakpoint-up(md) { ... }
@include media-breakpoint-up(lg) { ... }
@include media-breakpoint-up(xl) { ... }
@include media-breakpoint-up(xxl) { ... }

// Utilisation

// Exemple : Masquer à partir de `min-width: 0`, puis afficher au point d'arrêt `sm`
.custom-class {
    display: none;
}
@include media-breakpoint-up(sm) {
   .custom-class {
       display: block;
   }
}

Largeur maximale

// Aucune requête média nécessaire pour le point d'arrêt `xs` car c'est effectivement `@media (max-width: 0) { ... }`
@include media-breakpoint-down(sm) { ... }
@include media-breakpoint-down(md) { ... }
@include media-breakpoint-down(lg) { ... }
@include media-breakpoint-down(xl) { ... }
@include media-breakpoint-down(xxl) { ... }

// Exemple : Style à partir du point d'arrêt moyen et en descendant
@include media-breakpoint-down(md) {
.custom-class {
    display: block;
    }
}

Médias-queries et points d'arrêt de Bootstrap 4

// Appareils très petits (téléphones en mode portrait, moins de 576px)
// Aucune requête média car c'est la valeur par défaut dans Bootstrap

// Petits appareils (téléphones en mode paysage, 576px et plus)
@media (min-width: 576px) { ... }

// Appareils moyens (tablettes, 768px et plus)
@media (min-width: 768px) { ... }

// Grands appareils (ordinateurs de bureau, 992px et plus)
@media (min-width: 992px) { ... }

// Appareils extra grands (grand écrans de bureau, 1200px et plus)
@media (min-width: 1200px) { ... }

Bootstrap 4 fournit des CSS source en Sass que vous pouvez inclure via des mixins Sass :

@include media-breakpoint-up(xs) { ... }
@include media-breakpoint-up(sm) { ... }
@include media-breakpoint-up(md) { ... }
@include media-breakpoint-up(lg) { ... }
@include media-breakpoint-up(xl) { ... }

// Exemple d'utilisation :
@include media-breakpoint-up(sm) {
  .some-class {
    display: block;
  }
}

Médias-queries et points d'arrêt de Bootstrap 3

/*==========  Méthode Mobile First  ==========*/

/* Personnalisé, iPhone Retina */
@media only screen and (min-width : 320px) {

}

/* Appareils très petits, téléphones */
@media only screen and (min-width : 480px) {

}

/* Petits appareils, tablettes */
@media only screen and (min-width : 768px) {

}

/* Appareils moyens, ordinateurs de bureau */
@media only screen and (min-width : 992px) {

}

/* Grands appareils, écrans larges */
@media only screen and (min-width : 1200px) {

}

/*==========  Méthode Non-Mobile First  ==========*/

/* Grands appareils, écrans larges */
@media only screen and (max-width : 1200px) {

}

/* Appareils moyens, ordinateurs de bureau */
@media only screen and (max-width : 992px) {

}

/* Petits appareils, tablettes */
@media only screen and (max-width : 768px) {

}

/* Appareils très petits, téléphones */
@media only screen and (max-width : 480px) {

}

/* Personnalisé, iPhone Retina */
@media only screen and (max-width : 320px) {

}

Médias-queries et points d'arrêt de Bootstrap 2.3.2

@media only screen and (max-width : 1200px) {

}

@media only screen and (max-width : 979px) {

}

@media only screen and (max-width : 767px) {

}

@media only screen and (max-width : 480px) {

}

@media only screen and (max-width : 320px) {

}

Ressources :

40voto

Lance Turri Points 111

Bootstrap ne documente pas très bien les requêtes multimédias. Ces variables @screen-sm, @screen-md, @screen-lg font en réalité référence à des variables LESS et non à du simple CSS.

Lorsque vous personnalisez Bootstrap, vous pouvez changer les points d'arrêt des requêtes multimédias et lorsque cela est compilé, les variables @screen-xx sont changées en la largeur en pixels que vous avez définie comme screen-xx. C'est ainsi qu'un framework comme celui-ci peut être codé une fois puis personnalisé par l'utilisateur final pour répondre à ses besoins.

Une question similaire ici pourrait apporter plus de clarté: Requêtes multimédias Bootstrap 3.0

Dans votre CSS, vous devrez toujours utiliser des requêtes multimédias traditionnelles pour remplacer ou ajouter à ce que Bootstrap fait.

En ce qui concerne votre deuxième question, il ne s'agit pas d'une faute de frappe. Une fois que l'écran passe en dessous de 768px, le framework devient totalement fluide et se redimensionne à n'importe quelle largeur d'appareil, supprimant le besoin de points d'arrêt. Le point d'arrêt à 480px existe car il y a des changements spécifiques qui interviennent dans la mise en page pour une optimisation mobile.

Pour voir cela en action, allez sur cet exemple sur leur site (http://getbootstrap.com/examples/navbar-fixed-top/), et redimensionnez votre fenêtre pour voir comment il gère la conception après 768px.

32voto

Antonio Espinosa Points 331

Cette question a été discutée dans https://github.com/twbs/bootstrap/issues/10203 Pour l'instant, il n'y a pas de plan pour changer la grille pour des raisons de compatibilité.

Vous pouvez obtenir Bootstrap à partir de cette fourchette, branche hs : https://github.com/antespi/bootstrap/tree/hs

Cette branche vous donne un point de rupture supplémentaire à 480px, donc vous devez :

  1. Concevoir d'abord pour mobile (XS, moins de 480px)
  2. Ajouter des classes HS (petits appareils horizontaux) dans votre HTML : col-hs-*, visible-hs, ... et concevoir pour les appareils mobiles horizontaux (HS, moins de 768px)
  3. Concevoir pour les tablettes (SM, moins de 992px)
  4. Concevoir pour les ordinateurs de bureau (MD, moins de 1200px)
  5. Concevoir pour les grands appareils (LG, plus de 1200px)

Concevoir d'abord pour mobile est la clé pour comprendre Bootstrap 3. C'est le changement majeur par rapport à Bootstrap 2.x. En tant que modèle de règles, vous pouvez suivre ceci (en LESS) :

.template {
    /* règles pour mobile vertical (< 480) */

    @media (min-width: @screen-hs-min) {
       /* règles pour mobile horizontal (480 > 768)  */
    }
    @media (min-width: @screen-sm-min) {
       /* règles pour tablette (768 > 992) */
    }
    @media (min-width: @screen-md-min) {
       /* règles pour ordinateur de bureau (992 > 1200) */
    }
    @media (min-width: @screen-lg-min) {
       /* règles pour grand appareil (> 1200) */
    }
}

7voto

Enrico Points 358

Je sais que c'est un peu vieux, mais j'ai pensé que je pourrais contribuer. En me basant sur la réponse de @Sophy, voici ce que j'ai fait pour ajouter un point de rupture .xxs. Je n'ai pas pris en charge les classes visible-inline, table.visible, etc.

/*==========  Méthode Mobile First  ==========*/

  .col-xxs-12, .col-xxs-11, .col-xxs-10, .col-xxs-9, .col-xxs-8, .col-xxs-7, .col-xxs-6, .col-xxs-5, .col-xxs-4, .col-xxs-3, .col-xxs-2, .col-xxs-1 {
    position: relative;
    min-height: 1px;
    padding-left: 15px;
    padding-right: 15px;
    float: left;
  }

.visible-xxs {
  display:none !important;
}

/* Personnalisé, iPhone Retina */
@media only screen and (min-width : 320px) and (max-width:479px) {

  .visible-xxs {
    display: block !important;
  }
  .visible-xs {
    display:none !important;
  }

  .hidden-xs {
    display:block !important;
  }

  .hidden-xxs {
    display:none !important;
  }

  .col-xxs-12 {
    width: 100%;
  }
  .col-xxs-11 {
    width: 91.66666667%;
  }
  .col-xxs-10 {
    width: 83.33333333%;
  }
  .col-xxs-9 {
    width: 75%;
  }
  .col-xxs-8 {
    width: 66.66666667%;
  }
  .col-xxs-7 {
    width: 58.33333333%;
  }
  .col-xxs-6 {
    width: 50%;
  }
  .col-xxs-5 {
    width: 41.66666667%;
  }
  .col-xxs-4 {
    width: 33.33333333%;
  }
  .col-xxs-3 {
    width: 25%;
  }
  .col-xxs-2 {
    width: 16.66666667%;
  }
  .col-xxs-1 {
    width: 8.33333333%;
  }
  .col-xxs-pull-12 {
    right: 100%;
  }
  .col-xxs-pull-11 {
    right: 91.66666667%;
  }
  .col-xxs-pull-10 {
    right: 83.33333333%;
  }
  .col-xxs-pull-9 {
    right: 75%;
  }
  .col-xxs-pull-8 {
    right: 66.66666667%;
  }
  .col-xxs-pull-7 {
    right: 58.33333333%;
  }
  .col-xxs-pull-6 {
    right: 50%;
  }
  .col-xxs-pull-5 {
    right: 41.66666667%;
  }
  .col-xxs-pull-4 {
    right: 33.33333333%;
  }
  .col-xxs-pull-3 {
    right: 25%;
  }
  .col-xxs-pull-2 {
    right: 16.66666667%;
  }
  .col-xxs-pull-1 {
    right: 8.33333333%;
  }
  .col-xxs-pull-0 {
    right: auto;
  }
  .col-xxs-push-12 {
    left: 100%;
  }
  .col-xxs-push-11 {
    left: 91.66666667%;
  }
  .col-xxs-push-10 {
    left: 83.33333333%;
  }
  .col-xxs-push-9 {
    left: 75%;
  }
  .col-xxs-push-8 {
    left: 66.66666667%;
  }
  .col-xxs-push-7 {
    left: 58.33333333%;
  }
  .col-xxs-push-6 {
    left: 50%;
  }
  .col-xxs-push-5 {
    left: 41.66666667%;
  }
  .col-xxs-push-4 {
    left: 33.33333333%;
  }
  .col-xxs-push-3 {
    left: 25%;
  }
  .col-xxs-push-2 {
    left: 16.66666667%;
  }
  .col-xxs-push-1 {
    left: 8.33333333%;
  }
  .col-xxs-push-0 {
    left: auto;
  }
  .col-xxs-offset-12 {
    margin-left: 100%;
  }
  .col-xxs-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-xxs-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-xxs-offset-9 {
    margin-left: 75%;
  }
  .col-xxs-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-xxs-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-xxs-offset-6 {
    margin-left: 50%;
  }
  .col-xxs-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-xxs-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-xxs-offset-3 {
    margin-left: 25%;
  }
  .col-xxs-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-xxs-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-xxs-offset-0 {
    margin-left: 0%;
  }

}

/* Appareils Extra Small, Téléphones */
@media only screen and (min-width : 480px) {

  .visible-xs {
    display:block !important;
  }

}

/* Petits Appareils, Tablettes */
@media only screen and (min-width : 768px) {

  .visible-xs {
    display:none !important;
  }

}

/* Appareils Moyens, Ordinateurs de bureau */
@media only screen and (min-width : 992px) {

}

/* Grands Appareils, Écrans Larges */
@media only screen and (min-width : 1200px) {

}

6voto

Anthony Points 21

La référence à 480px a été supprimée. À la place, il est écrit :

/* Petits appareils (téléphones, moins de 768px) */
/* Aucune requête média car c'est la valeur par défaut dans Bootstrap */

Il n'y a pas de point de rupture en dessous de 768px dans Bootstrap 3.

Si vous voulez utiliser les mixins @screen-sm-min et d'autres, vous devez compiler avec LESS, voir http://getbootstrap.com/css/#grid-less

Voici un tutoriel sur comment utiliser Bootstrap 3 et LESS : http://www.helloerik.com/bootstrap-3-less-workflow-tutorial

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X