Aller au contenu
BDU Cauri, accueilv0.1.0
ComposantsJavaScript requis

Accordéon

L’accordéon regroupe des panneaux de contenu dont un seul titre reste visible tant qu’on ne l’ouvre pas. Il convient aux foires aux questions, aux conditions d’un produit et aux contenus longs que l’on parcourt par rubriques.

Accordéon de base#

Chaque rubrique associe un bouton accordion-button à un panneau accordion-collapse. Ici, les panneaux restent indépendants : vous pouvez en laisser plusieurs ouverts. Le premier est ouvert au chargement grâce à show ; son bouton n’a donc pas la classe collapsed.

Connectez-vous à votre espace client, puis ouvrez la rubrique « Comptes ». Le solde disponible s'affiche en FCFA et se met à jour après chaque opération.
Le plafond dépend de votre type de compte. À titre d'exemple, un compte courant peut être limité à 2 000 000 FCFA par jour pour les virements vers un autre établissement. Votre conseiller peut le relever sur demande.
Faites opposition immédiatement auprès de votre agence ou du service client, puis demandez le remplacement de la carte. Les opérations effectuées après l'opposition ne vous sont pas imputées.
<div class="accordion" id="acc-base">
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#acc-base-1" aria-expanded="true" aria-controls="acc-base-1">
        Comment consulter le solde de mon compte ?
      </button>
    </h2>
    <div id="acc-base-1" class="accordion-collapse collapse show">
      <div class="accordion-body">
        Connectez-vous à votre espace client, puis ouvrez la rubrique « Comptes ». Le solde disponible s'affiche en FCFA et se met à jour après chaque opération.
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#acc-base-2" aria-expanded="false" aria-controls="acc-base-2">
        Quel est le plafond de mes virements ?
      </button>
    </h2>
    <div id="acc-base-2" class="accordion-collapse collapse">
      <div class="accordion-body">
        Le plafond dépend de votre type de compte. À titre d'exemple, un compte courant peut être limité à 2 000 000 FCFA par jour pour les virements vers un autre établissement. Votre conseiller peut le relever sur demande.
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#acc-base-3" aria-expanded="false" aria-controls="acc-base-3">
        Que faire en cas de perte de ma carte ?
      </button>
    </h2>
    <div id="acc-base-3" class="accordion-collapse collapse">
      <div class="accordion-body">
        Faites opposition immédiatement auprès de votre agence ou du service client, puis demandez le remplacement de la carte. Les opérations effectuées après l'opposition ne vous sont pas imputées.
      </div>
    </div>
  </div>
</div>

Un seul panneau ouvert à la fois#

Ajoutez data-bs-parent sur chaque panneau, avec l’identifiant de l’accordéon : l’ouverture d’un panneau referme les autres.

Un livret d'épargne vous permet de mettre de l'argent de côté dès 5 000 FCFA, avec des retraits possibles à tout moment.
Le prêt personnel finance un projet en mensualités fixes. Utilisez le simulateur pour estimer votre mensualité avant de déposer une demande.
La carte de retrait permet de retirer des espèces aux distributeurs de la banque ; la carte de paiement sert aussi chez les commerçants.
<div class="accordion" id="acc-parent">
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#acc-parent-1" aria-expanded="true" aria-controls="acc-parent-1">
        Épargne
      </button>
    </h2>
    <div id="acc-parent-1" class="accordion-collapse collapse show" data-bs-parent="#acc-parent">
      <div class="accordion-body">
        Un livret d'épargne vous permet de mettre de l'argent de côté dès 5 000 FCFA, avec des retraits possibles à tout moment.
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#acc-parent-2" aria-expanded="false" aria-controls="acc-parent-2">
        Prêts
      </button>
    </h2>
    <div id="acc-parent-2" class="accordion-collapse collapse" data-bs-parent="#acc-parent">
      <div class="accordion-body">
        Le prêt personnel finance un projet en mensualités fixes. Utilisez le simulateur pour estimer votre mensualité avant de déposer une demande.
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#acc-parent-3" aria-expanded="false" aria-controls="acc-parent-3">
        Cartes
      </button>
    </h2>
    <div id="acc-parent-3" class="accordion-collapse collapse" data-bs-parent="#acc-parent">
      <div class="accordion-body">
        La carte de retrait permet de retirer des espèces aux distributeurs de la banque ; la carte de paiement sert aussi chez les commerçants.
      </div>
    </div>
  </div>
</div>

Version sans bordures#

Ajoutez accordion-flush pour retirer la bordure extérieure, les angles arrondis et le fond. L’accordéon s’intègre alors dans une carte ou une zone déjà encadrée.

Les frais sont prélevés chaque mois et apparaissent sur votre relevé.
Les virements entre vos propres comptes sont gratuits ; les autres sont facturés selon la grille tarifaire.
<div class="accordion accordion-flush border rounded" id="acc-flush">
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#acc-flush-1" aria-expanded="false" aria-controls="acc-flush-1">
        Frais de tenue de compte
      </button>
    </h2>
    <div id="acc-flush-1" class="accordion-collapse collapse" data-bs-parent="#acc-flush">
      <div class="accordion-body">Les frais sont prélevés chaque mois et apparaissent sur votre relevé.</div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#acc-flush-2" aria-expanded="false" aria-controls="acc-flush-2">
        Frais de virement
      </button>
    </h2>
    <div id="acc-flush-2" class="accordion-collapse collapse" data-bs-parent="#acc-flush">
      <div class="accordion-body">Les virements entre vos propres comptes sont gratuits ; les autres sont facturés selon la grille tarifaire.</div>
    </div>
  </div>
</div>

Classes

Classes
ClasseRôle
accordionConteneur de l’ensemble. Son id sert de cible à data-bs-parent.
accordion-itemUne rubrique : un en-tête et son panneau.
accordion-headerTitre de la rubrique (h2 à h6 selon votre hiérarchie) qui contient le bouton.
accordion-buttonBouton qui ouvre et ferme le panneau. Ajoutez collapsed quand le panneau est fermé.
accordion-collapsePanneau repliable. Combinez-le avec collapse, et avec show pour l’ouvrir au chargement.
accordion-bodyContenu du panneau, avec son espacement interne.
accordion-flushVariante sans bordure extérieure ni angles arrondis, à poser sur accordion.

Options JavaScript

L’accordéon repose sur le composant de repli. Les options se passent par attributs data-bs-* ou dans l’objet de configuration. Voir aussi la page Repli.

Options JavaScript
OptionTypeDéfautDescription
parentsélecteur ou élémentnullSi renseigné, les autres panneaux de ce conteneur se referment à l’ouverture du panneau. Attribut : data-bs-parent.
togglebooléentrueBascule le panneau dès la création de l’instance. Passez { toggle: false } pour créer l’instance sans changer l’état du panneau.

Méthodes et événements

Les événements sont émis sur le panneau (accordion-collapse), pas sur le bouton.

Méthodes et événements
NomDescription
toggle()Ouvre le panneau s’il est fermé, le ferme sinon. Rend la main avant la fin de l’animation.
show()Ouvre le panneau. Sans effet s’il est déjà ouvert ou en cours d’animation.
hide()Ferme le panneau. Sans effet s’il est déjà fermé ou en cours d’animation.
dispose()Détruit l’instance et libère les écouteurs.
getInstance(element)Méthode statique : renvoie l’instance associée à l’élément, ou null.
getOrCreateInstance(element, options)Méthode statique : renvoie l’instance existante ou en crée une.
show.bs.collapseAu début de l’ouverture. preventDefault() annule l’ouverture.
shown.bs.collapseQuand le panneau est entièrement ouvert, animation terminée.
hide.bs.collapseAu début de la fermeture. preventDefault() annule la fermeture.
hidden.bs.collapseQuand le panneau est entièrement fermé, animation terminée.

Attributs data-bs

Attributs data-bs
AttributOù le poserRôle
data-bs-toggle="collapse"BoutonActive le comportement d’ouverture et de fermeture.
data-bs-target="#id"BoutonSélecteur du panneau à piloter.
data-bs-parent="#id"PanneauGarde un seul panneau ouvert dans l’accordéon désigné.
aria-expandedBoutontrue si le panneau est ouvert, false sinon. Le script le met à jour.
aria-controlsBoutonIdentifiant du panneau contrôlé.

Variables Sass

À définir avant l’import de Cauri. Les valeurs par défaut sont celles du thème BDU.

Variables Sass
VariableDéfautRôle
$accordion-padding-y1remEspacement vertical des boutons et des panneaux.
$accordion-padding-x1.25remEspacement horizontal des boutons et des panneaux.
$accordion-colorvar(--bs-body-color)Couleur du texte du panneau.
$accordion-bgvar(--bs-body-bg)Fond de l’accordéon.
$accordion-border-widthvar(--bs-border-width)Épaisseur des bordures.
$accordion-border-colorvar(--bs-border-color)Couleur des bordures.
$accordion-border-radiusvar(--bs-border-radius)Arrondi des angles (5 px dans Cauri).
$accordion-button-colorvar(--bs-body-color)Couleur du texte du bouton.
$accordion-button-active-bgvar(--bs-primary-bg-subtle)Fond du bouton quand le panneau est ouvert.
$accordion-button-active-colorvar(--bs-primary-text-emphasis)Texte du bouton quand le panneau est ouvert.
$accordion-icon-width1.25remLargeur du chevron.
$accordion-icon-color$body-colorCouleur du chevron fermé.
$accordion-icon-active-color$primary-text-emphasisCouleur du chevron ouvert.
$accordion-icon-transitiontransform .2s ease-in-outAnimation du chevron.
$accordion-icon-transformrotate(-180deg)Rotation du chevron à l’ouverture.
$accordion-button-iconSVG en data: URIImage du chevron fermé ; $accordion-button-active-icon pour l’état ouvert.

Personnalisation#

Les variables Sass modifient l’accordéon pour tout le site. Pour un seul accordéon, redéfinissez les propriétés CSS --bs-accordion-* sur son conteneur.

// Global : avant l'import de Cauri
$accordion-button-active-bg: #EEF3EA;
$accordion-button-active-color: #212121;
$accordion-padding-y: 1.25rem;

// Local : sur un accordéon précis
.accordion-compact {
  --bs-accordion-btn-padding-y: 0.5rem;
  --bs-accordion-body-padding-y: 0.5rem;
  --bs-accordion-active-bg: #EEF3EA;
  --bs-accordion-active-color: #212121;
}

Piloter l'accordéon en JavaScript#

const panneau = document.querySelector('#acc-base-2');
const repli = bootstrap.Collapse.getOrCreateInstance(panneau, { toggle: false });

panneau.addEventListener('shown.bs.collapse', () => {
  console.log('Panneau ouvert');
});

repli.show();

Bonnes pratiques

À faire

  • Utilisez un titre court et explicite pour chaque bouton : il doit résumer le contenu du panneau.
  • Ouvrez par défaut le panneau le plus utile, ou aucun si les rubriques sont d’égale importance.
  • Ajoutez data-bs-parent quand les contenus sont longs, pour garder la page lisible.
  • Choisissez le niveau de titre (h2, h3…) de accordion-header selon la structure de la page.

À éviter

  • Ne cachez pas dans un accordéon une information indispensable à tous (frais, échéances, mentions obligatoires).
  • N’imbriquez pas plusieurs accordéons : la lecture devient pénible, surtout sur mobile.
  • N’ajoutez pas de lien ou de bouton d’action essentiel uniquement dans un panneau fermé.

Accessibilité

  • Le bouton doit être un vrai button placé dans un titre ; gardez aria-expanded et aria-controls cohérents avec l’état.
  • Le clavier fonctionne par défaut : Tab pour atteindre un bouton, Entrée ou Espace pour l’ouvrir.
  • Les panneaux fermés sont masqués aux lecteurs d’écran ; n’y placez pas de contenu qui doit rester annoncé.
  • Les animations sont supprimées pour les personnes qui ont demandé une réduction des animations.
Charte provisoire, déduite du site public de la BDU CI. Elle sera remplacée par la charte officielle.