145 votes

Comment supprimer la flèche dans la liste déroulante dans Bootstrap 4 ?

J'utilise Bootstrap 4. J'ai essayé de supprimer la flèche dans la liste déroulante.

Le site réponses J'ai trouvé que pour Bootstrap 3 ne fonctionne plus.

Le jsfiddle est ici .

<div class="dropdown open">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown
  </button>
  <div class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <a class="dropdown-item" href="#">Action</a>
    <a class="dropdown-item" href="#">Another action</a>
  </div>
</div>

245voto

iko Points 897

Il suffit de supprimer la classe "dropdown-toggle" de l'élément. La liste déroulante fonctionnera toujours si vous avez l'attribut data-toggle comme suit

<button role="button" type="button" class="btn" data-toggle="dropdown"> 
    Dropdown Without Arrow
</button>

Le remplacement des styles de la classe .dropdown-toggle affecte toutes les listes déroulantes et vous pouvez vouloir conserver la flèche dans d'autres boutons, c'est pourquoi cette solution me semble la plus simple.

3 votes

Pour une raison quelconque, les autres solutions ne fonctionnaient pas pour moi. J'utilise Bootstrap 4. C'est la seule chose qui a fonctionné.

11 votes

Cela n'a pas vraiment fonctionné pour moi. Le côté droit du bouton n'est plus arrondi.

0 votes

Plus simple que d'écrire un CSS personnalisé avec !important :)

139voto

Clyff Points 2908

Avec css, vous pouvez le faire :

.dropdown-toggle::after {
    display:none;
}

11 votes

Je devais aussi inclure !important pour que ce CSS personnalisé prenne effet.

1 votes

Cela aura un impact sur toutes les listes déroulantes utilisées dans d'autres pages si vous utilisez le même CSS.

0 votes

Ajouter un préfixe supplémentaire pour désactiver uniquement la flèche du bouton, par exemple : .btn.btn-outline-secondary.dropdown-toggle::after { display:none !important ; }

52voto

rybo111 Points 1318

Je ne recommande aucune des réponses existantes, car.. :

  • .dropdown-toggle a plus de style que juste le caret. La suppression de la classe de l'élément entraîne problèmes de style .

  • Remplacement de .dropdown-toggle n'a pas de sens. Ce n'est pas parce que vous n'avez pas besoin d'un signe d'insertion sur un élément particulier que vous n'en aurez pas besoin plus tard.

  • ::after ne couvre pas variantes de liste déroulante (certains utilisent ::before ).

Utiliser un .caret-off à la place :

.caret-off::before {
    display: none;
}
.caret-off::after {
    display: none;
}

5 votes

Meilleure réponse, j'ajouterais juste quelques informations supplémentaires pour les autres personnes, comme cette classe devrait être ajoutée avec dropdown-toggle .

1 votes

Cette réponse est très utile. no-arrow option, n'a pas aidé.

1 votes

Excellente réponse. Dans mon cas, j'ai dû ajouter !important . Eg : display: none !important; .

14voto

supprimez la classe "dropdown-toggle".

8 votes

C'est plutôt un commentaire

1 votes

C'est ce que la réponse acceptée a dit six mois avant celui-ci : " Il suffit de supprimer la classe "dropdown-toggle" de l'élément. "

6voto

Logan Franklin Points 31

Si vous souhaitez remplacer la flèche par une autre icône (par exemple, FontAwesome), il vous suffit de supprimer la bordure du pseudo-élément .dropdown-toggle.

.dropdown-toggle::after { border: none; }

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