更改Bootstrap 4上的下拉图标

问题描述 投票:9回答:5

在Bootstrap 3上,这非常简单,你只需要改变跨度并添加你想要的任何图标。但Bootstrap 4的情况似乎并非如此。或者我可能错过了一些东西?

无论如何,这是它的基本代码:

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

有人可以告诉我是否可以更改此下拉图标以及如何更改?我想从fontawesome中添加一个。

谢谢!

html css twitter-bootstrap bootstrap-4 twitter-bootstrap-4
5个回答
29
投票

你必须像这样隐藏插入符号图标..

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

然后添加fontawesome图标..

<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown button
    <i class="fa fa-heart"></i>
</button>

http://www.codeply.com/go/xd2b75iUbM

或者,只需从按钮中删除dropdown-toggle类,因为它的唯一目的似乎是显示插入符号图标。


3
投票

我做了类似于接受的答案,将默认插入符号从font-awesome更改为垂直省略号,如下所示:

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

.dropdown-toggle-ellipsis::before {
  display: inline-block;
  padding: 0.5rem;
  font: normal normal normal 14px/1 FontAwesome;
  content: "\f142";
}

只需将dropdown-toggle-ellipsis作为附加类应用于切换按钮。

与此解决方案的主要区别在于,实际图标(此处为\f142)现在已在样式表中定义,而不是在标记中定义。当然,这取决于你的情况。


1
投票

默认插入符号不是图标,而是具有以下属性的边框:

border-top: .3em solid;
border-right: .3em solid transparent;
border-bottom: 0;
border-left: .3em solid transparent;

因此,如果你将.dropdown-toggle::after设置为border:none!important,你可以使用content来设置你想要的图标。

我使用的代码是这样的:

.dropdown-toggle::after {
border: none!important;
font: normal normal normal 14px/1 FontAwesome;
content: "\f107"!important; /* the desired FontAwesome icon */
vertical-align: 0; /* to center vertically */

使用此方法,您还可以在下拉列表可见时更改FontAwesome图标,这要归功于它添加的.show类:

li.menu-item.show a.dropdown-toggle.::after {
content: "\f106"!important /* the different icon */
}

0
投票

使用其他答案中的建议,我在我的应用程序的主要CSS文件中为下拉切换添加了规则。

关键是Bootstrap在内容被隐藏时将“折叠”类添加到具有“下拉切换”的项目,并在显示内容时删除该类。

/* Align Bootstrap default Dropdown icon closer to vertical center of collapsed icon. */
.dropdown-toggle::after {
    vertical-align: 0.15em;
}

/* Make Dropdown icon point right when collapsed, with Browser default vertical alignment. */
.collapsed.dropdown-toggle::after {
    border-top: 0.3em solid transparent;
    border-left: 0.3em solid;
    border-bottom: 0.3em solid transparent;
    border-right: 0;
    vertical-align: unset;
}

0
投票

一种解决方案,允许保持HTML原样,只需添加一个CSS规则:

.dropdown-toggle::after {
  border: none;
  font: normal normal normal 12px/1 'Font Awesome 5 Free';
  content: "\f078";
  vertical-align: 0;
}

这适用于Font Awesome 5. content属性可以设置为任何可用的Unicode值。例如,对于雪佛龙(https://fontawesome.com/icons/chevron-down?style=solid),它是f078。

© www.soinside.com 2019 - 2024. All rights reserved.