Wie entferne ich den Pfeil in der Dropdown-Liste in Bootstrap 4?


116

Ich verwende Bootstrap 4. Ich habe versucht, den Pfeil in der Dropdown-Liste zu entfernen.

Die Antworten, die ich für Bootstrap 3 gefunden habe, funktionieren nicht mehr.

Die jsfiddle ist da .

<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>

Antworten:


175

Entfernen Sie einfach die Klasse "dropdown-toggle" aus dem Element. Das Dropdown-Menü funktioniert weiterhin, wenn Sie das Datenumschaltattribut wie folgt haben

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

Das Überschreiben von .dropdown-toggle-Klassenstilen wirkt sich auf alle Dropdowns aus. Möglicherweise möchten Sie den Pfeil in anderen Schaltflächen behalten. Deshalb scheint mir dies die einfachste Lösung zu sein.

Bearbeiten: Behalten Sie die Dropdown-Klasse bei, wenn Sie das Rahmen-Styling beibehalten möchten

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

3
Aus irgendeinem Grund funktionierten die anderen Lösungen bei mir nicht. Ich verwende Bootstrap 4. Dies war das einzige, was funktioniert hat.
— anonymousacorn

9
Das hat bei mir nicht ganz funktioniert. Die rechte Seite der Schaltfläche ist nicht mehr abgerundet.
— Jace Browning

Einfacher als das Schreiben von benutzerdefiniertem CSS mit !important:)
— hughjdavey

2
Ich habe das getestet und es funktioniert ziemlich gut! Getestet in FF, Chrome, IE und Opera - auch auf mobilen Android-Geräten mit integriertem Browser kein störender Pfeil - vielen Dank, Sir! HINWEIS: Entfernen Sie nicht das vollständige Attribut "dropdown-toggle", sondern nur das Attribut "-toggle", damit Ihr Styling für das Dropdown-Menü nicht verloren geht. "Dropdown-Toggle" wird also zu "Dropdown" - ich hoffe, das hilft.
— Kerim Yagmurcu

124

Mit CSS können Sie genau das tun:

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

11
Ich musste auch einschließen !important, damit dieses benutzerdefinierte CSS wirksam wird.
— Jace Browning

1
Dies wirkt sich auf jedes Dropdown-Menü aus, das auf anderen Seiten verwendet wird, wenn Sie dasselbe CSS verwenden.
— Pavan Nath

Fügen Sie ein weiteres Präfix hinzu, um nur den Pfeil für die Schaltfläche zu deaktivieren, z. }
— Puppylpg

34

Ich empfehle keine der vorhandenen Antworten, weil:

  • .dropdown-togglehat mehr Styling als nur das Caret. Das Entfernen der Klasse aus dem Element führt zu Stilproblemen .

  • Überschreiben .dropdown-togglemacht keinen Sinn. Nur weil Sie für ein bestimmtes Element kein Caret benötigen, heißt das nicht, dass Sie später kein Caret benötigen.

  • ::afterdeckt keine Dropdown-Varianten ab (einige verwenden ::before).

Verwenden Sie einen Benutzer .caret-offim selben Element wie Ihr .dropdown-toggleElement:

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

3
Beste Antwort, ich würde nur ein paar zusätzliche Informationen für andere Leute hinzufügen, so wie diese Klasse zusammen mit hinzugefügt werden sollte dropdown-toggle.
— Eestein


5

Wenn Sie den Pfeil durch ein anderes Symbol (z. B. FontAwesome) ersetzen möchten, müssen Sie nur den Rand des Pseudoelements von .dropdown-toggle entfernen

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

4

Ich habe die akzeptierte Antwort eine ganze Weile in meinem Projekt verwendet, bin aber gerade auf eine Variable gestoßen , die von Bootstrap verwendet wird :

$enable-caret: true !default;

Wenn Sie dies auf false setzen, wird das Caret entfernt, ohne dass ein benutzerdefinierter Code erforderlich ist.

Mein Projekt war Ruby / Rails, also habe ich das Bootstrap-Rubygem verwendet . Ich habe die Variable geändert, indem ich a importiert habe, custom-variables.scsswobei die obige Variable in meinem application.scss BEFORE the bootstrap.scssfile / files auf false gesetzt war .


2

Wenn Sie die Dropdown-Umschaltklasse wie folgt entfernen, haben alle Dropdown-Schaltflächen auf Ihrem System nicht mehr das Caret.

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

Aber vielleicht ist es nicht das, was Sie wollen. Um nur die spezifische Schaltfläche zu entfernen, fügen wir eine Klasse mit dem Namen: remoecaret ein und passen die Klasse: dropdown-toggle wie folgt an:

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

und unser HTML sieht ungefähr so ​​aus:

<div class="btn-group">
  <button class="btn btn-outline-secondary btn-sm dropdown-toggle removecaret" data-toggle="dropdown">
    <i class="fa fa-bars" aria-hidden="true"></i>
  </button>
  <ul class="dropdown-menu dropdown-menu-right">
    <li><a href="#"><a href="#"><i class="fa fa-cog" aria-hidden="true"></i>&nbsp;Edit</a></li>
  </ul>
</div>

1

Boostrap generiert dies mithilfe des CSS-Rahmens:

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

1

Wenn Sie genau nur in dieser Bootstrap-Button-Klasse möchten, machen Sie:

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

0

Haben Sie versucht, tag = "a" innerhalb der Klasse? es verbirgt den Pfeil ohne weiteres CSS.


-1

Fügen Sie der Dropdown-Deklaration der Umschaltklasse einen Pfeil ohne Pfeil hinzu


-2

Dies funktioniert mit bootsrap4 und ng-bootstrap.

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

3
Das Kopieren der zweijährigen akzeptierten Antwort, aber mit einem Tippfehler.
— miken32
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.