更改 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
在 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