我在屏幕中间有一个文本框,但是当我点击它时,没有注册任何点击。我认为这是一个CSS Z-Index问题。我该如何诊断和解决这个问题?
div#container {
z-index:-1;
position:relative;
height:300px;
width:300px;
margin:0 auto;
background-color: #E9E9E9;
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.25);
padding-top: 8px;
}
h2 {
text-align:center;
}
#container input[type="submit"] {
position:absolute;
bottom:0;
left:0;
height:50px;
width:100%;
}
#container input[type="text"], #container input[type="password"] {
position:absolute;
outline:0;
border:none;
padding:0;
margin:0;
height:50px;
top:50px;
width:100%;
}
#container input[type="password"] {
top:150px;
}
.overlay {
position:absolute;
top:0;
left:0;
z-index:2;
height:100%;
width:100%;
background:gray;
text-align:center;
line-height:300px;
box-shadow:inset 0 120px 0 0 darkgray, inset 0 122px 0 0 gray, inset 0 124px 0 0 darkgray, inset 0 -120px 0 0 darkgray, inset 0 -122px 0 0 gray, inset 0 -124px 0 0 darkgray;
}
body:hover .overlay {
display:none;
}
<div id="container">
<h2>LOGIN</h2>
<input type="text" id="name" placeholder="Enter your Name" />
<input type="password" id="password" placeholder="Enter your Password" />
<input type="submit" id="submit" value="Login" />
<div class="overlay">LOGIN HERE</div>
</div>
我的问题是我实际上无法点击输入。我试过玩布局,但我似乎无法获得输入'可点击'。
有人可以解释如何解决这个问题吗?
答案 0 :(得分:8)
在将实际元素分层放在其他元素之上/之后时,应该使用Z-index,并且不应该为输入赋予负值 - 特别是当你的body元素(我相信)默认为0时。 / p>
这意味着将值设置为低于0(即负值)意味着您的元素将置于正文之后。
所以,如果这是一个输入元素,你实际上无法点击它作为'你将点击身体而不是',而不是实际输入。
在极少数情况下,您会在输入上放置z-index(大部分时间您并不需要声明一个),而不是设置负值,请尝试使用低正值。这样它应该在身体之上(除非这已经改变)。
这是一个简短的例子:
body {
background: tomato;
}
input {
z-index: -2;
position: relative;
}
<input type="text" placeholder="i'm unclickable!" />
通过使用正值(0或更大),您可以选择文本框
body{
background:tomato;
}
input{
position:relative;
z-index:0;
}
<input type="text" placeholder="i'm now clickable!"/>
在上面的示例中,您最终可以完全删除z-index。
有关z-index
媒体资源的详情,请参阅其documentation
答案 1 :(得分:4)
问题在于z-index
元素的div#container
属性被指定为-1。
将元素的z-index设置为更高的值,如1000等。
div#container {
background-color: #E9E9E9;
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.25);
clear: left;
height: 75px;
margin: 0 auto 13px;
overflow: auto;
padding-top: 8px;
position: relative;
text-align: center;
width: 510px;
z-index: 1000;
}