html - 下拉选项不随选择框移动
问题描述
我有一个 div,其中的一些内容在 5 秒后被隐藏,但在它下面,我有一个带有一些选项的下拉菜单。So what happens when the select box is open and at the same time the div gets hidden, the options box remains in the same place and doesn't shift upwards with the select box.
创建自定义下拉菜单不是一种选择。以及使上述 div 绝对或固定。使下拉模糊也不是一种选择。有人能告诉我这种默认行为是否可以以某种方式改变吗?
- 客户不同意定制解决方案。
- 客户端不希望上述 div 浮动或定位绝对或固定。他想要相同的设置,但这个东西已经修好了。
关闭选择框或使用 blur() 也不是客户想要的。
<!DOCTYPE html> <html> <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> <body> <div class='war'>SOME RANDOM CODE which gets hidden after 5 seconds. Make sure to open the drop down</div> <select> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="opel">Opel</option> <option value="audi">Audi</option> </select> <script> setTimeout(function(){ $(".war").hide(); }, 3000); </script> </body> </html>
解决方案
这个解决方法怎么样:
- 单击选择菜单时,它会获得一个大小属性,该属性与其包含的所有选项元素一样大,因此它会随着窗口中的元素一起移动,因为它会消失。
- 如果您添加一些 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>
推荐阅读
- linux - 轮询环境文件以进行更改
- python - CV2.imread() Python 图像未加载且未显示错误
- flutter - 如何确保用户和聊天机器人之间的对话保留在应用程序中 - Dialogflow
- r - 调试我无法正常运行的 R 代码
- vb.net - 在 VB.NET 中查找图片中的对象并返回其位置
- uml - UML 中的服务类表示
- r - R - 将数据帧逐列拆分为列表,同时保留第二列,然后按列名重命名列表元素
- php - 如何使用 Codeigniter 在 Guzzle 中使用原始数据?
- matlab - 无法在 MATLAB 中绘制 CT 信号图
- project-reactor - 通过 wildfly 10 使用 elasticache 的生菜 6.0.2(为 OSGI 部署定制)