javascript - 反应自动完成下拉位置按下其他输入元素
问题描述
我有自动完成下拉菜单,我已经关注了这个链接。我在显示下拉项目方面面临问题。
正如我在链接中所示,下拉项目显示在div
标签poistion
中relative
css
.autocomplete-wrapper {
width: 300px;
position: absolute;
display: inline-block;
}
.autocomplete-wrapper > div {
width: 100%;
z-index: 1;
}
.autocomplete-wrapper input {
border: 1px solid #cecece;
padding: 5px 5px;
border-radius: 3px;
font-size: 12px;
width: 100%;
}
.autocomplete-wrapper input:focus {
border-color: #0F67FF;
box-shadow: none;
outline: none;
}
.autocomplete-wrapper Autocomplete{
position: absolute;
z-index: -1;
}
.autocomplete-wrapper .dropdown {
width: 100%;
padding: 0;
text-align: left;
max-height: 280px;
overflow: hidden;
overflow-y: auto;
background-color: #ffffff;
border: 1px solid #0F67FF;
border-top: none;
z-index: 2;
}
.autocomplete-wrapper .item {
display: block;
cursor: pointer;
font-size: 10px;
padding: 10px;
}
.autocomplete-wrapper .item.selected-item {
background-color: #0069ff;
color: #FAFBFC;
}
.autocomplete-wrapper .item:hover {
background-color: #0069ff;
color: #FAFBFC;
}
我尝试给出position
asabsolute
但它与其他输入元素重叠。我希望下拉的位置不应该干扰其他输入元素,比如传统的反应选择下拉。
代码
<div className="autocomplete-wrapper"> <label htmlFor="title">Vehilce No</label> <Autocomplete value={state.val} items={vehicles} getItemValue={item => item.numberPlate} shouldItemRender={renderVehicleNumber} renderMenu={item => ( <div className="dropdown"> {item} </div> )} renderItem={(item, isHighlighted) => <div className={`item ${isHighlighted ? 'selected-item' : ''}`}> {item.numberPlate} </div> } onChange={(event, val) => setState({ val })} onSelect={val => setState({ val })} /> </div> </div> <div className="form-group"> <label htmlFor="price"> </label> <span> </span> </div> <div className="form-group" style={{position: "static"}}> <label htmlFor="price">Price</label> <input type="number" className="form-control" id="price" required value={creditEntry.price} onChange={handleInputChange} name="price" /> </div> <div className="form-group"> <label htmlFor="price">Litre</label> <input type="number" className="form-control" id="price" required value={creditEntry.litre} onChange={handleInputChange} name="price" /> </div>
解决方案
我已经添加
z-index: 500;
position: fixed;
到包装样式.autocomplete-wrapper .dropdown {...
。现在看起来像这样
.autocomplete-wrapper .dropdown {
width: 100%;
padding: 0;
text-align: left;
max-height: 280px;
overflow: hidden;
overflow-y: auto;
background-color: #ffffff;
border: 1px solid #0F67FF;
border-top: none;
z-index: 500;
position: fixed;
}
两者都是使其发挥作用所必需的z-index: 500;
。position: fixed;
推荐阅读
- c++ - 如何在 gnu++11 标准中编写“用于常量的嵌套 if...else 语句”而不发出警告?
- php - qbxml 中的特殊字符
- javascript - 如何正确地将我的 javascript 链接到我的 html 表单?
- node.js - 在没有 Xcode 的情况下无法在 Mac 上安装 npm?
- c - 如何为 chroot 项目设置 ide
- sql - 过滤时 SQL 视图慢。有没有一种干净的方法来提高性能?
- python - 根据从 Arduino 到串口的通知向 gmail 发送电子邮件
- python-3.x - Pyinstaller modulenotfound 错误:没有模块名称'mysql'
- ios - 当我为 iOS 编译某些东西时,使用了哪些架构?
- javascript - 将嵌套对象更改为相同的对象,其值为对象的对象是以父对象为原型的对象