Как насчет этого обходного пути:
- Когда выбирается меню выбора, он получает атрибут размера, равный всем содержащим его элементам опций, так что он перемещается вместе с элементом в окне, так как онисчезает.
- Если вы добавите немного стиля CSS, пользователю не станет очевидным, что размер элемента выделения изменился, пока он / она находится в процессе выбора опции.
- К сожалению, стандартная стрелкастиль отличается в зависимости от браузера. Мое решение выглядит лучше в chrome, но не оптимально в Firefox, например, поэтому следует добавить дополнительную оптимизацию для конкретного браузера.
Вот соответствующий код:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>example</title>
<style>
#box {
width: 100px;
height: 100px;
border: 1px solid black;
}
#options {
overflow: hidden;
}
#first::after {
content: " ⯆ ";
font-size: 10px;
}
</style>
</head>
<body>
<div id="box"></div>
<select name="selectionarea" id="options" onclick="makeBoxDisappear();expandSelect()" onfocusout="minimizeSelect()">
<option value="option1" id="first">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>
<option value="option5">option5</option>
</select>
<script>
function makeBoxDisappear() {
setTimeout(() => document.getElementById("box").style.display = "none", 1000);
}
function expandSelect() {
document.getElementById("options").size="5";
}
function minimizeSelect() {
document.getElementById("options").size="1";
}
</script>
</body>
</html>