You can simulate such a select through JS)
(added a variant for several selections on the page below)
For one such item:
(function(){ /*ΠΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° "ΡΠ΅Π»Π΅ΠΊΡ" - ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠ»Π°ΡΡ-Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΊΡ*/ /*ΠΠ°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΊΠ° Π² CSS Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»Π°ΡΡ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅, ΡΡΠΎΠ±Ρ Π±ΡΠ»Π° Π² ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ΅*/ document.getElementById('colorpick').addEventListener('click',function(){ document.getElementById('dropdown').classList.toggle('INVIS'); }); let check;//let, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ, ΡΡΠΈΡΠ°Ρ ΠΊΠΎΠ»-Π²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² const clr = document.getElementById('clr');//ΡΡΠΎ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΉ span ΠΏΠ΅ΡΠ΅Π΄ "Π»ΡΠ±ΠΈΠΌΡΠΉ ΡΠ²Π΅Ρ" const color = document.getElementsByClassName('color'); for(let i = 0; i < color.length; i++){ color[i].addEventListener('click',function(){ /*ΠΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌ "ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ" ΠΊΠ»Π°ΡΡ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΎΠΌ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ ΠΎΡΠ°Π½ΠΆΠ΅Π²ΡΡ Π³Π°Π»ΠΎΡΠΊΡ */ this.classList.toggle('check'); check = document.getElementsByClassName('check').length; //ΡΠ΅ΠΊΡΡ Π²Π½ΡΡΡΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ°Π²Π½ΡΠΌ ΠΊΠΎΠ»-Π²Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ², + ΡΠΊΠΎΠ±ΠΊΠΈ Π΄Π»Ρ Π²ΠΈΠ΄Π°; clr.innerText = '(' + check + ')'; if(check > 0) { clr.style.display = "inline-block"; } else {clr.style.display = "none";}//Π΅ΡΠ»ΠΈ ΡΠ±ΡΠ°Π»ΠΈ Π³Π°Π»ΠΎΡΠΊΡ ΠΈ ΡΡΠ°Π»ΠΎ 0 - Π΄Π΅Π»Π°Π΅ΠΌ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΌ }); } //ΠΠ°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΎΠΏΡΠΈΠΈ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π½ΠΈΡ
ΡΠ±ΠΈΡΠ°ΡΡ ΠΌΡΡΠΊΡ. document.getElementById('dropdown').addEventListener('mouseleave',function(){ this.classList.toggle('INVIS'); }); })();
.block {width: 30%} #colorpick { text-align: center; cursor: pointer; box-sizing: border-box; /*Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ Π½Π΅Π·Π°ΠΈΠ²ΠΈΡΠΎΠΌΡΠΈ ΠΎΡ padding*/ padding: 5px; border: 1px solid #333; user-select: none; /*ΠΠ΅ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠΊΠ°Π΅ΡΡ ΠΈ ΡΠ΅ΠΊΡΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ*/ } .color { box-sizing: border-box; padding: 2px 3px; margin: 0 1px; border-bottom: 1px solid #666; /*relative Π²Π°ΠΆΠ΅Π½, ΡΡΠΎΠ±Ρ Π³Π°Π»ΠΎΡΠΊΠ° Π½Π΅ ΡΡΠ΅Ρ
Π°Π»Π°*/ position: relative; } .color:hover {background-color: #ffe2aa; cursor: pointer;} /*ΠΡΠΎ ΠΈΠΊΠΎΠ½ΠΊΠ° Π³Π°Π»ΠΎΡΠΊΠΈ*/ .check:after { content: ""; position: absolute; right: 5px; width: 5px; height: 10px; border-bottom: 2px solid #f36700; border-right: 2px solid #f36700; transform: rotate(40deg); } .INVIS {display: none;}
<div class="block"> <div id="colorpick"><span id="clr" class="INVIS"></span> ΠΡΠ±ΠΈΠΌΡΠΉ ΡΠ²Π΅Ρ? βΌ</div> <div id="dropdown" class="INVIS"> <div class="color">ΠΠ΅Π»ΡΠΉ</div> <div class="color">Π§Π΅ΡΠ½ΡΠΉ</div> <div class="color">ΠΡΠ°ΡΠ½ΡΠΉ</div> <div class="color">ΠΡΠ°Π½ΠΆΠ΅Π²ΡΠΊΠΈΠΉ</div> <div class="color">Π€ΠΈΠ»Π°Π»Π΅ΡΠΎΠ²ΡΠΉ</div> <div class="color">ΠΠ°ΡΠΈΡΠ½ΡΠ²ΡΠΊΠΈΠΉ</div> </div> </div>
For several selects ...
Redid the option for classes. In the script, the moment is actively used that in this example, HTML has the same number of selections, pop-up windows, and a "chosen" fad (so as not to go through for once again). Therefore, these classes do not need to add anywhere else on the page.
It is inconvenient to watch the results, so itβs better here: JsFiddle , stretch the window to full screen and delve into it) Added a few demo lines to make it easier to understand what the variables were created for.
(function(){ /**/ const demo = document.getElementsByClassName('demo'); const colorpick = document.getElementsByClassName('colorpick'); const dropdown = document.getElementsByClassName('dropdown'); let check = []; let index; for(let i = 0; i < colorpick.length; i++){ check.push(0); /**/ demo[0].innerHTML = check; colorpick[i].addEventListener('mouseenter', function(){ index = i; /**/ demo[1].innerHTML = index; for(let u = 0; u < dropdown.length; u++){dropdown[u].classList.add('INVIS');} dropdown[i].classList.remove('INVIS'); }); dropdown[i].addEventListener('mouseleave',function(){ this.classList.add('INVIS'); }); } const clr = document.getElementsByClassName('clr'); const color = document.getElementsByClassName('color'); for(let i = 0; i < color.length; i++){ color[i].addEventListener('click',function(){ if( this.className.match(/check/g) ){ this.classList.remove('check'); check[index] = check[index] - 1; } else {this.classList.add('check'); check[index] = check[index] + 1;} /**/ demo[2].innerHTML = check; clr[index].innerText = '(' + check[index] + ')'; }); } })();
/*CSS Π½Π΅ ΠΌΠ΅Π½ΡΠ»*/ .block {width: 30%}.colorpick { text-align: center; cursor: pointer; box-sizing: border-box; padding: 5px; border: 1px solid #333; user-select: none;}.color, .total { box-sizing: border-box; padding: 2px 3px; margin: 0 1px; border-bottom: 1px solid #666; position: relative;}.total {background-color: #bbb;}.color:hover {background-color: #ffe2aa; cursor: pointer;} .check:after { content: ""; position: absolute; right: 5px; width: 5px; height: 10px; border-bottom: 2px solid #f36700; border-right: 2px solid #f36700; transform: rotate(40deg);}.INVIS {display: none;}
<span class="demo">0</span> β check.push(0); β ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΌΠ°ΡΡΠΈΠ², Π³Π΄Π΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π»Π΅ΠΊΡΠ° Π±ΡΠ΄Π΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ 0 (Π½ΠΎΠ»Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΡ
) <br><span class="demo">0</span> β index (ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π° ΡΠ΅Π»Π΅ΠΊΡ) <br><span class="demo">0</span> β check[index] = check[index] -/+ 1; // ΠΠΎΡ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΠΏΡΠ½ΠΊΡΡ, Π±ΡΠ°ΡΡ ΡΡΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ Π΅ΡΠ»ΠΈ Π±ΡΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊΠ»Π°ΡΡ - Π³Π°Π»ΠΎΡΠΊΡ, ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ ΠΊ ΡΠΈΡΠ»Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ +1, Π° Π΅ΡΠ»ΠΈ ΡΠ±ΡΠ°Π½ ΠΊΠ»Π°ΡΡ, -1. Π ΠΏΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΆΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΏΠΎΠ»ΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π² ΠΊΠΎΠ»-Π²Π΅ Π²ΡΠ±ΡΠ°Π½Π½ΡΡ
. <br><br> <div style="display: flex"> <div class="block"> <div class="colorpick"> ΠΡΠ±ΠΈΠΌΡΠΉ ΡΠ²Π΅Ρ? βΌ</div> <div class="dropdown INVIS"> <div class="total">ΠΡΠ±ΡΠ°Π½ΠΎ: <span class="clr">0</span></div> <div class="color">ΠΠ΅Π»ΡΠΉ</div> <div class="color">Π§Π΅ΡΠ½ΡΠΉ</div> <div class="color">ΠΡΠ°ΡΠ½ΡΠΉ</div> <div class="color">ΠΡΠ°Π½ΠΆΠ΅Π²ΡΠΊΠΈΠΉ</div> <div class="color">Π€ΠΈΠ»Π°Π»Π΅ΡΠΎΠ²ΡΠΉ</div> <div class="color">ΠΠ°ΡΠΈΡΠ½ΡΠ²ΡΠΊΠΈΠΉ</div> </div> </div> <div class="block"> <div class="colorpick"> ΠΡΠ±ΠΈΠΌΡΠΉ ΡΠ²Π΅Ρ? βΌ</div> <div class="dropdown INVIS"> <div class="total">ΠΡΠ±ΡΠ°Π½ΠΎ: <span class="clr">0</span></div> <div class="color">ΠΠ΅Π»ΡΠΉ</div> <div class="color">Π§Π΅ΡΠ½ΡΠΉ</div> <div class="color">ΠΡΠ°ΡΠ½ΡΠΉ</div> <div class="color">ΠΡΠ°Π½ΠΆΠ΅Π²ΡΠΊΠΈΠΉ</div> <div class="color">Π€ΠΈΠ»Π°Π»Π΅ΡΠΎΠ²ΡΠΉ</div> <div class="color">ΠΠ°ΡΠΈΡΠ½ΡΠ²ΡΠΊΠΈΠΉ</div> </div> </div> <div class="block"> <div class="colorpick"> ΠΡΠ±ΠΈΠΌΡΠΉ ΡΠ²Π΅Ρ? βΌ</div> <div class="dropdown INVIS"> <div class="total">ΠΡΠ±ΡΠ°Π½ΠΎ: <span class="clr">0</span></div> <div class="color">ΠΠ΅Π»ΡΠΉ</div> <div class="color">Π§Π΅ΡΠ½ΡΠΉ</div> <div class="color">ΠΡΠ°ΡΠ½ΡΠΉ</div> <div class="color">ΠΡΠ°Π½ΠΆΠ΅Π²ΡΠΊΠΈΠΉ</div> <div class="color">Π€ΠΈΠ»Π°Π»Π΅ΡΠΎΠ²ΡΠΉ</div> <div class="color">ΠΠ°ΡΠΈΡΠ½ΡΠ²ΡΠΊΠΈΠΉ</div> </div> </div> </div>