更改 Bootstrap 上的下拉图标 4

Changing Dropdown Icon on Bootstrap 4

在 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 添加一个。

谢谢!

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

.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://codeply.com/go/xd2b75iUbM

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

我做了一些类似于接受的答案,将默认插入符号从 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 作为附加 class 应用到您的切换按钮。

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

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

关键是 Bootstrap 在内容隐藏时将 "collapsed" class 添加到带有 "dropdown-toggle" 的项目,并在内容隐藏时删除 class显示。

/* 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;
}

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

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

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

允许保持 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。内容 属性 可以设置为任何可用的 Unicode 值。例如,对于人字形向下 (https://fontawesome.com/icons/chevron-down?style=solid),它是 f078。

只需输入 css 边框 none。箭头由边框制成,如果删除边框则没有箭头。删除边框后,您可以添加自己的图标。

.dropdown-toggle::after{
 border: none;
 content: '\icon';
}

如果其他人通过 google 搜索如何插入下拉图标,这里有一个好方法:

<span style="color:black;" class="fa fa-caret-down pl-1"></span>

这使用 font awesome 5,并且 pl-1 在下拉图标的左侧添加了一点填充,因此间距更合适。

结果是一个与 GitHub 上的图标非常相似的图标:

对于那些不使用 font-awesome 的人,您可以简单地使用 url() CSS 函数并将 SVG 代码直接放入 CSS:

.dropdown-toggle::after{
  content: url('data:image/svg+xml; utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M192 384c-8.188 0-16.38-3.125-22.62-9.375l-160-160c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L192 306.8l137.4-137.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-160 160C208.4 380.9 200.2 384 192 384z"/></svg>');
  border: none;
  width: 10px;
  height: auto;
  margin-left: 0.4rem;
  vertical-align: middle;
}

您可以从 font awesome 下载您想要的任何 SVG:https://fontawesome.com/search?s=solid