【发布时间】:2021-12-21 13:29:43
【问题描述】:
我有一个应用程序,其中有一个容器,在该容器内,用户可以在输入中键入一个值,而他键入一个自动完成框(具有 z-index 属性的元素)显示在输入下方,一旦他按回车键,输入值保存在标签内。 html 和 css 的简要示例可以在 this codepen 中看到(下面的代码相同)
.main {
align-items: center;
display: flex;
height: 100vh;
justify-content: center;
width: 100vw;
}
.tag-container {
align-content: flex-start;
border: 1px solid black;
display: flex;
flex-direction: center;
flex-wrap: wrap;
gap: 5px;
overflow-y: scroll;
padding: 5px;
height: 70px;
width: 600px;
}
.tag {
display: flex;
justify-content: center;
align-items: center;
border: 1px solid black;
height: 30px;
width: 100px;
}
.input {
height: 25px;
width: 145px;
}
.auto-complete-box {
background: #F6F2F2;
border: 1px solid black;
position: absolute;
height: 150px;
text-align: center;
width: 150px;
z-index: 1;
}
<div class="main">
<div class="tag-container">
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class=input-container>
<input
class="input"
type="text"
placeholder="input"
/>
<div class="auto-complete-box">
Auto Complete Box
</div>
</div>
</div>
</div>
问题是当我的容器开始滚动时(添加了更多标签),z-index 元素似乎没有跟随它。就像在这个codepen example 中一样(下面的代码相同)
.main {
align-items: center;
display: flex;
height: 100vh;
justify-content: center;
width: 100vw;
}
.tag-container {
align-content: flex-start;
border: 1px solid black;
display: flex;
flex-direction: center;
flex-wrap: wrap;
gap: 5px;
overflow-y: scroll;
padding: 5px;
height: 70px;
width: 600px;
}
.tag {
display: flex;
justify-content: center;
align-items: center;
border: 1px solid black;
height: 30px;
width: 100px;
}
.input {
height: 25px;
width: 145px;
}
.auto-complete-box {
background: #F6F2F2;
border: 1px solid black;
position: absolute;
height: 150px;
text-align: center;
width: 150px;
z-index: 1;
}
<div class="main">
<div class="tag-container">
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class="tag">Tag</div>
<div class=input-container>
<input
class="input"
type="text"
placeholder="input"
/>
<div class="auto-complete-box">
Auto Complete Box
</div>
</div>
</div>
</div>
有没有办法只用 CSS 来实现我想要的?
提前致谢!
【问题讨论】:
-
你需要
position: relativeinput-container -
嘿@RobertoZvjerković,感谢您的回答,但如果我将
position: relative添加到input-container,z-index 元素将不会将自己定位在其他元素之上... -
你为什么不用
datalist? developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist -
嘿@RatajS!这实际上是个好主意!
datalist将按照我想要的方式工作。感谢您的宝贵时间!