我有一个文本输入字段,其中嵌入了一些标签文本。当用户单击以在字段中键入时,在焦点上我正在使标签文本缩放一点并将其移动到文本字段的顶部。 一切正常,直到你移动到下一个输入字段。然后你输入一个值的字段会变回默认的比例和位置。但是我希望它在用户输入内容之后保持在那里。任何帮助将不胜感激。
form {
width: 100%;
text-align: center;
padding: 45px 0;
}
form div {
background: transparent;
height: 55px;
width: 100%;
margin-bottom: 55px;
position: relative;
}
input {
width: 80%;
height: 78px;
border-radius: 25px;
border-top: 4px solid #0275F5;
border-right: 4px solid #0275F5;
border-left: 4px solid #0275F5;
border-bottom: 4px solid #0275F5;
outline: 0;
font-size: 1.6em;
font-weight: bold;
display: block;
margin: 0 auto;
text-align: center;
}
.formHeading {
font-size: 2.6em;
color: #0275F5;
text-transform: uppercase;
text-align: center;
margin-top: 0;
}
form div label {
position: absolute;
bottom: 0;
left: 0;
padding: 0 0.25em;
width: 100%;
height: calc(100% - 1em);
text-align: center;
pointer-events: none;
transition: .25s;
text-transform: uppercase;
font-size: 1.6em;
}
input:focus + label {
transform: translate3d(0, -.8em, 0) scale3d(0.55, 0.55, 1);
}

<div id="wrapper">
<h1 class="formHeading">Sign Up Form</h1>
<form action="index.html" method="post">
<div>
<input type="text" name="user_name" id="name">
<label>Name</label>
</div>
<div>
<input type="email" name="user_email" id="email">
<label>Email Address</label>
</div>
<div>
<input type="password" name="user_password" id="password">
<label>Password</label>
</div>
<div>
<input type="text" name="user_city" id="city">
<label>City</label>
</div>
<div>
<input type="text" name="user_gender" id="gender">
<label>Gender</label>
</div>
</form>
</div>
&#13;
答案 0 :(得分:1)
我不认为这可以在没有javascript的情况下完成(编辑:我看到你添加了jquery和javascript,所以这个要求应该不是问题) 。据我所知,没有办法在输入内容的CSS中匹配输入,所以你需要JS为这些输入添加一个类。
以下是使用jQuery的解决方案的草稿,但您也可以使用普通的JS。
$('input').blur(function() {
console.log($(this).val());
if ($(this).val() !== '') {
$(this).addClass('hasvalue')
} else {
$(this).removeClass('hasvalue');
}
});
form {
width: 100%;
text-align: center;
padding: 45px 0;
}
form div {
background: transparent;
height: 55px;
width: 100%;
margin-bottom: 55px;
position: relative;
}
input {
width: 80%;
height: 78px;
border-radius: 25px;
border-top: 4px solid #0275F5;
border-right: 4px solid #0275F5;
border-left: 4px solid #0275F5;
border-bottom: 4px solid #0275F5;
outline: 0;
font-size: 1.6em;
font-weight: bold;
display: block;
margin: 0 auto;
text-align: center;
}
.formHeading {
font-size: 2.6em;
color: #0275F5;
text-transform: uppercase;
text-align: center;
margin-top: 0;
}
form div label {
position: absolute;
bottom: 0;
left: 0;
padding: 0 0.25em;
width: 100%;
height: calc(100% - 1em);
text-align: center;
pointer-events: none;
transition: .25s;
text-transform: uppercase;
font-size: 1.6em;
}
input:focus + label,
input.hasvalue + label {
transform: translate3d(0, -.8em, 0) scale3d(0.55, 0.55, 1);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="wrapper">
<h1 class="formHeading">Sign Up Form</h1>
<form action="index.html" method="post">
<div>
<input type="text" name="user_name" id="name">
<label>Name</label>
</div>
<div>
<input type="email" name="user_email" id="email">
<label>Email Address</label>
</div>
<div>
<input type="password" name="user_password" id="password">
<label>Password</label>
</div>
<div>
<input type="text" name="user_city" id="city">
<label>City</label>
</div>
<div>
<input type="text" name="user_gender" id="gender">
<label>Gender</label>
</div>
</form>
</div>