I am using Bootstrap 4. I tried to remove the arrow in dropdown.
The answers I found for Bootstrap 3 do not work any more.
The jsfiddle is here.
<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>
Simply remove "dropdown-toggle" class from the element. The dropdown will still work if you have the data-toggle attribute as follows
overriding .dropdown-toggle class styles affects all dropdowns and you may want to keep the arrow in other buttons, that's why this looks me the simplest solution.
I don't recommend any of the existing answers because:
.dropdown-toggle
has more styling than just the caret. Removing the class from the element causes styling issues.Overriding
.dropdown-toggle
doesn't make sense. Just because you don't need a caret on some particular element, doesn't mean you won't need one later.::after
doesn't cover dropdown variants (some use::before
).Use a custom
.caret-off
class instead:remove the "dropdown-toggle" class
Boostrap generates this using the CSS border:
This works on bootsrap4 and ng-bootstrap.
I was using the accepted answer for quite a while in my project but just now stumbled across a variable used by bootstrap:
If you set this to false then the caret will be removed without having to do any custom code.
My project was Ruby/Rails so I was using the bootstrap-rubygem. I changed the variable by importing a
custom-variables.scss
with the above variable set to false in myapplication.scss
BEFORE thebootstrap.scss
file/files.