bootstrap-select 库使用 font-awesome 作为下拉图标
bootstrap-select library using font-awsome for dropdown icon
我正在使用 bootstrap-select 进行搜索 UI 我正在做,一切正常,图书馆有很多不错的选择。我想将默认的下拉图标替换为我的字体 awsome 图标,这样我就可以控制图标的样式。我已经尝试了他们默认的图标更改方式,但它不起作用,我在这里做错了什么。
默认图标
想要的图标
这是我尝试过但没有成功的图标更改功能
$('.selectpicker').selectpicker({
iconBase: 'fa',
tickIcon: 'fa-chevron-down',
});
有没有 css 方法来做到这一点?如果有像上面那样的工作函数就更好了
这是我目前的工作
.dnow-searchWizard-wrap .dropdown.bootstrap-select button.btn-light {
background-color: #fff;
padding: 1rem;
}
.dnow-searchWizard-wrap .btn-primary {
padding: 1rem;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>slick slider</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
crossorigin="anonymous">
<link href="https://unpkg.com/ionicons@4.4.8/dist/css/ionicons.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/css/bootstrap-select.min.css">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<section class="dnow-searchWizard-wrap bg-light p-5">
<div class="container">
<div class="row text-center">
<div class="col-lg-12 mb-4">
<h2>H2 Find Solutions That Work for You</h2>
</div>
<div class="col-lg-12 mb-4">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit do eiusmod.</p>
</div>
</div>
<div class="row">
<div class="col-lg-2 align-self-center">
<p><strong>I AM LOOKING FOR</strong></p>
</div>
<div class="col-lg-3">
<div class="form-group">
<select class="selectpicker form-control">
<optgroup label="Picnic">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Camping">
<option>Tent</option>
<option>Flashlight</option>
<option>Toilet Paper</option>
</optgroup>
</select>
</div>
</div>
<div class="col-lg-1 align-self-center text-center">
<p><strong>IN</strong></p>
</div>
<div class="col-lg-3">
<div class="form-group">
<select class="selectpicker form-control">
<optgroup label="Picnic">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Camping">
<option>Tent</option>
<option>Flashlight</option>
<option>Toilet Paper</option>
</optgroup>
</select>
</div>
</div>
<div class="col-lg-3">
<button class="btn btn-primary">Show My Results</button>
</div>
</div>
</div>
</section>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
crossorigin="anonymous"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/bootstrap-select.min.js"></script>
<!-- (Optional) Latest compiled and minified JavaScript translation files -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/i18n/defaults-*.min.js"></script>
<script>
$(document).ready(function () {
$('.selectpicker').selectpicker({
iconBase: 'fa',
tickIcon: 'fa-check',
});
});
</script>
</body>
</html>
可以使用下面的 css 使用矢量图像来完成此操作。也可以使用“:after”并使用 'content' 样式来完成它,但我还没有尝试过。如果没有其他人帮助,我至少给了你一个可行的解决方案。
.changedSelect {
padding: 0 32px 0 5px !important;
-webkit-appearance: none;
-moz-appearance: none;
background-color: white;
background-image: url('../DropDownArrow.png');
background-repeat: no-repeat;
background-position: right 5px center;
background-size: 20px 20px;
}
/*Hide the original drop down arrow on internet explorer*/
.changedSelect::-ms-expand {
display: none;
};
更新:作为一个了不起的人,浏览器不允许您在 select 上使用 :after 和内容 CSS 添加超棒的字体图标,这意味着到目前为止据我所知,除非您添加包装器,否则我发布的解决方案是添加自定义箭头的唯一方法。根据从 IvanS
添加的评论,可以使用 before 和 after 将 Font Awesome 图标添加到普通 div
bootstrap 4 使用边框技巧添加其下拉图标,因此在使用下拉 ::after 添加我自己的图标后,我不得不将所有边框覆盖为 none 以删除默认图标。您可以对下拉菜单执行相同的操作。
.dropdown-toggle::after {
font-family: "Ionicons";
/* display: inline-block; */
content: '\f123';
/* width: 0;
height: 0;
margin-left: 0.255em;
vertical-align: 0.255em; */
border-top: none;
border-right: none;
border-bottom: none;
border-left: none;
margin-right: 1rem;
}
.dropup .dropdown-toggle::after {
/*display: inline-block;
width: 0;
height: 0;
margin-left: .255em;
vertical-align: .255em;*/
font-family: "Ionicons";
content: "\f126";
border-top: 0;
border-right: 0;
border-bottom: 0;
border-left: 0;
}
我正在使用 bootstrap-select 进行搜索 UI 我正在做,一切正常,图书馆有很多不错的选择。我想将默认的下拉图标替换为我的字体 awsome 图标,这样我就可以控制图标的样式。我已经尝试了他们默认的图标更改方式,但它不起作用,我在这里做错了什么。
默认图标
想要的图标
这是我尝试过但没有成功的图标更改功能
$('.selectpicker').selectpicker({
iconBase: 'fa',
tickIcon: 'fa-chevron-down',
});
有没有 css 方法来做到这一点?如果有像上面那样的工作函数就更好了
这是我目前的工作
.dnow-searchWizard-wrap .dropdown.bootstrap-select button.btn-light {
background-color: #fff;
padding: 1rem;
}
.dnow-searchWizard-wrap .btn-primary {
padding: 1rem;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>slick slider</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
crossorigin="anonymous">
<link href="https://unpkg.com/ionicons@4.4.8/dist/css/ionicons.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/css/bootstrap-select.min.css">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<section class="dnow-searchWizard-wrap bg-light p-5">
<div class="container">
<div class="row text-center">
<div class="col-lg-12 mb-4">
<h2>H2 Find Solutions That Work for You</h2>
</div>
<div class="col-lg-12 mb-4">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit do eiusmod.</p>
</div>
</div>
<div class="row">
<div class="col-lg-2 align-self-center">
<p><strong>I AM LOOKING FOR</strong></p>
</div>
<div class="col-lg-3">
<div class="form-group">
<select class="selectpicker form-control">
<optgroup label="Picnic">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Camping">
<option>Tent</option>
<option>Flashlight</option>
<option>Toilet Paper</option>
</optgroup>
</select>
</div>
</div>
<div class="col-lg-1 align-self-center text-center">
<p><strong>IN</strong></p>
</div>
<div class="col-lg-3">
<div class="form-group">
<select class="selectpicker form-control">
<optgroup label="Picnic">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Camping">
<option>Tent</option>
<option>Flashlight</option>
<option>Toilet Paper</option>
</optgroup>
</select>
</div>
</div>
<div class="col-lg-3">
<button class="btn btn-primary">Show My Results</button>
</div>
</div>
</div>
</section>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
crossorigin="anonymous"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/bootstrap-select.min.js"></script>
<!-- (Optional) Latest compiled and minified JavaScript translation files -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/i18n/defaults-*.min.js"></script>
<script>
$(document).ready(function () {
$('.selectpicker').selectpicker({
iconBase: 'fa',
tickIcon: 'fa-check',
});
});
</script>
</body>
</html>
可以使用下面的 css 使用矢量图像来完成此操作。也可以使用“:after”并使用 'content' 样式来完成它,但我还没有尝试过。如果没有其他人帮助,我至少给了你一个可行的解决方案。
.changedSelect {
padding: 0 32px 0 5px !important;
-webkit-appearance: none;
-moz-appearance: none;
background-color: white;
background-image: url('../DropDownArrow.png');
background-repeat: no-repeat;
background-position: right 5px center;
background-size: 20px 20px;
}
/*Hide the original drop down arrow on internet explorer*/
.changedSelect::-ms-expand {
display: none;
};
更新:作为一个了不起的人,浏览器不允许您在 select 上使用 :after 和内容 CSS 添加超棒的字体图标,这意味着到目前为止据我所知,除非您添加包装器,否则我发布的解决方案是添加自定义箭头的唯一方法。根据从 IvanS
添加的评论,可以使用 before 和 after 将 Font Awesome 图标添加到普通 divbootstrap 4 使用边框技巧添加其下拉图标,因此在使用下拉 ::after 添加我自己的图标后,我不得不将所有边框覆盖为 none 以删除默认图标。您可以对下拉菜单执行相同的操作。
.dropdown-toggle::after {
font-family: "Ionicons";
/* display: inline-block; */
content: '\f123';
/* width: 0;
height: 0;
margin-left: 0.255em;
vertical-align: 0.255em; */
border-top: none;
border-right: none;
border-bottom: none;
border-left: none;
margin-right: 1rem;
}
.dropup .dropdown-toggle::after {
/*display: inline-block;
width: 0;
height: 0;
margin-left: .255em;
vertical-align: .255em;*/
font-family: "Ionicons";
content: "\f126";
border-top: 0;
border-right: 0;
border-bottom: 0;
border-left: 0;
}