Я использовал выбранный плагин js для создания нескольких выборок. Я пытаюсь настроить его стиль. Я хочу, чтобы когда элемент не выбран, слева был маленький серый квадрат. Если элемент выбран, он отобразит маленький синий квадрат. В настоящее время у меня есть изображение, содержащее 2 маленьких квадрата, я попытался показать квадрат слева, но он показывает оба квадрата, я хочу, чтобы отображалась только верхняя или нижняя половина. Как я могу это сделать? Это то, что я пытался попробовать.
.chosen-container-multi.chosen-with-drop .chosen-drop .chosen-results li::before {
content: url('https://image.ibb.co/iLpwap/Selection_Icon.png');
position: relative;
padding-right: 10px;
}






Использование листа спрайтов в качестве содержимого псевдоэлемента ::before не позволит вам обрезать его так, как вы хотите.
Вместо этого используйте лист спрайтов в качестве фонового изображения и соответствующим образом измените размер псевдоэлемента.
В выбранном состоянии переместите фоновое изображение так, чтобы была видна синяя область.
var config = {
'.chosen-select': {},
'.chosen-select-deselect': {
allow_single_deselect: true
},
'.chosen-select-no-single': {
disable_search_threshold: 10
},
'.chosen-select-no-results': {
no_results_text: 'Oops, nothing found!'
},
'.chosen-select-rtl': {
rtl: true
},
'.chosen-select-width': {
width: '95%'
}
}
for (var selector in config) {
$(selector).chosen(config[selector]);
}.chosen-container-multi .chosen-choices li.search-choice {
line-height: 30px !important;
margin: 5px 5px 5px 0 !important;
}
.chosen-container-multi.chosen-with-drop .chosen-drop .chosen-results li::before {
content: ""; /* Changed */
position: relative;
z-index: 100000;
margin-right: 10px; /* Changed */
display: inline-block; /* Added */
width: 22px; /* Added */
height: 24px; /* Added */
background: url(https://image.ibb.co/iLpwap/Selection_Icon.png); /* Added */
}
.chosen-container-multi.chosen-with-drop .chosen-drop .chosen-results li.result-selected::before {
background-position: 0 -24px; /* Added */
}
.chosen-container-multi .chosen-drop .result-selected {
color: #444 !important;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.7/chosen.jquery.js"></script>
<link href = "https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.7/chosen.min.css" rel = "stylesheet"/>
<select chosen multiple data-placeholder = "Select a item" class = "chosen-select" style = "width: 400px;">
<option value = "18">Item Test 1</option>
<option value = "19">Item Test 2</option>
<option value = "20">Item Test 3</option>
<option value = "" selected = "selected">Select a Item</option>
</select>Я обновил код, можете проверить
http://jsfiddle.net/L6kmd3rb/14/
.chosen-container-multi .chosen-choices li.search-choice {
line-height: 30px !important;
margin: 5px 5px 5px 0 !important;
}
.chosen-container-multi.chosen-with-drop .chosen-drop .chosen-results li::before {
content: url('https://image.ibb.co/iLpwap/Selection_Icon.png');
position: relative; /*or absolute*/
z-index: 100000; /*a number that's more than the modal box*/
padding-right: 10px;
height:20px;
display:block;
overflow:hidden;
}
.chosen-container-multi .chosen-drop .result-selected {
color: #444 !important;
}
Спасибо
Это не работает. Когда элемент выбран, синий значок не отображается.
Вы не можете сделать это с изображением в свойстве
content. Вы можете сделать фоновое изображение спрайт псевдоэлемента, а затем настроитьbackground-position.