如何更改 bootstrap 上的默认手风琴 svg 图标 5
How to change the default accordion svg icon on bootstrap 5
我想更改手风琴的默认 bootstrap 图标
我想使用 <i class="bi bi-plus-circle"></i>
和 <i class="bi bi-dash-circle"></i>
bootstrap icons.
而不是默认箭头图标
手风琴折叠时显示一个图标,未折叠时显示另一个图标。
想要的结果:
当前结果:
据我所知,默认箭头图标来自这里(截断):
.accordion-button::after {
background-image: url(data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e);
}
它基本上设置为背景图像。
当用户切换时,背景图像旋转 180 度:
.accordion-button:not(.collapsed)::after {
background-image: url(data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e);
transform: rotate(
-180deg);
}
我想到的第一件事是将两个 svg 替换为所需的 bootstrap 图标 svg 并删除旋转。
所以我尝试用 bootstrap 图标 svg 替换当前的 SVG:
.accordion-button::after {
order: -1;
margin-left: 0;
margin-right:0.5em;
background-image: url(data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529' fill-rule='evenodd' d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z' d='M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z'/%3e%3c/svg%3e);
background-color: white;
}
不幸的是,它没有用。我把svg代码放错了吗?有没有更好的方法来实现这一目标?
(随意编辑代码并尝试任何 bootstrap 图标的 svg 代码)
我找到了解决方案,基本上我们需要对那些 bootstrap 图标 svg 进行编码,以便将其用作 css 背景图像。
Here is an online solution 我找到了。
现在,使用此代码:
.accordion-button::after {
order: -1;
margin-left: 0;
margin-right:0.5em;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-plus-circle' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z'/%3E%3Cpath d='M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z'/%3E%3C/svg%3E");
background-color: white;
}
有效!
Sass 选项:
你没有提到你是否正在使用 sass(我可以看到)但是如果你是,Bootstrap 5 为手风琴图标状态提供 2 sass 变量你可以覆盖:
$accordion-button-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>");
$accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>");
https://getbootstrap.com/docs/5.1/components/accordion/#variables
Bootstrap 5 也有一个 escape_svg
函数(我想这就是它的名字)来转义 SVG 中的字符。
您需要包含此处概述的变量覆盖:https://getbootstrap.com/docs/5.1/customize/sass/#variable-defaults
可能看起来工作量很大,但一旦使用 sass 进行设置,就可以更轻松地覆盖和扩展 Bootstrap 中的内容。
我想更改手风琴的默认 bootstrap 图标
我想使用 <i class="bi bi-plus-circle"></i>
和 <i class="bi bi-dash-circle"></i>
bootstrap icons.
手风琴折叠时显示一个图标,未折叠时显示另一个图标。
想要的结果:
当前结果:
据我所知,默认箭头图标来自这里(截断):
.accordion-button::after {
background-image: url(data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e);
}
它基本上设置为背景图像。
当用户切换时,背景图像旋转 180 度:
.accordion-button:not(.collapsed)::after {
background-image: url(data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e);
transform: rotate(
-180deg);
}
我想到的第一件事是将两个 svg 替换为所需的 bootstrap 图标 svg 并删除旋转。
所以我尝试用 bootstrap 图标 svg 替换当前的 SVG:
.accordion-button::after {
order: -1;
margin-left: 0;
margin-right:0.5em;
background-image: url(data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529' fill-rule='evenodd' d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z' d='M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z'/%3e%3c/svg%3e);
background-color: white;
}
不幸的是,它没有用。我把svg代码放错了吗?有没有更好的方法来实现这一目标?
(随意编辑代码并尝试任何 bootstrap 图标的 svg 代码)
我找到了解决方案,基本上我们需要对那些 bootstrap 图标 svg 进行编码,以便将其用作 css 背景图像。
Here is an online solution 我找到了。
现在,使用此代码:
.accordion-button::after {
order: -1;
margin-left: 0;
margin-right:0.5em;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-plus-circle' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z'/%3E%3Cpath d='M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z'/%3E%3C/svg%3E");
background-color: white;
}
有效!
Sass 选项:
你没有提到你是否正在使用 sass(我可以看到)但是如果你是,Bootstrap 5 为手风琴图标状态提供 2 sass 变量你可以覆盖:
$accordion-button-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>");
$accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>");
https://getbootstrap.com/docs/5.1/components/accordion/#variables
Bootstrap 5 也有一个 escape_svg
函数(我想这就是它的名字)来转义 SVG 中的字符。
您需要包含此处概述的变量覆盖:https://getbootstrap.com/docs/5.1/customize/sass/#variable-defaults
可能看起来工作量很大,但一旦使用 sass 进行设置,就可以更轻松地覆盖和扩展 Bootstrap 中的内容。