您知道如何在Bootstrap或jQuery / JavaScript中执行以下功能吗?
您可以在Shopify上查看此演示:
这是Plunker的起点:
https://plnkr.co/edit/bd9yGmgKfK53Tpn8rCSp?p=preview
<!DOCTYPE html>
<html>
<head>
<style>
label {
display: none;
}
</style>
</head>
<body>
<label>Email</label>
<br />
<input placeholder="Email" />
</body>
</html>
非常感谢有关如何复制此功能的任何建议。
答案 0 :(得分:1)
不幸的是,CSS无法完成这一操作,因为您无法根据实际值来定位输入。 (在这里阅读更多Detect if an input has text in it using CSS -- on a page I am visiting and do not control?)
所以从上面的帖子中获取的诀窍就是听取输入信息。事件并添加一个类来标记输入有值。如果您碰巧显示一些带有预填充输入的输入,则必须在页面加载后运行该功能。
技巧的其余部分是将标签放在输入上方,并确保输入有足够的填充,这样两个文本不会重叠。我会根据您的需要为您提供造型的优点。
$('.labeled_input_group input').on("change keyup keydown",function(e){
var elem = $(this);
if(elem.val()){
elem.closest('.labeled_input_group').addClass('hasValue');
}else{
elem.closest('.labeled_input_group').removeClass('hasValue');
}
});
&#13;
.labeled_input_group{
position:relative;
}
label{
display:none;
position:absolute;
top:0px;
font-size:12px;
}
.labeled_input_group input{
}
.labeled_input_group.hasValue label{
display:block;
}
.labeled_input_group.hasValue input{
padding-top:14px;
font-size:12px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="labeled_input_group">
<label>Email</label>
<input placeholder="Email"/>
</div>
</body>
</html>
&#13;
答案 1 :(得分:0)
要复制此功能,您可以使用label
和包装元素(div
)。给div
相对位置和标签一个绝对位置并对齐,使其位于input
之上。
然后你可以连接jQuery(或者vanilla JS也会很好)并监听focus
和blur
事件。当输入被聚焦时,您可以添加另一个类的标签,然后在blur
上向上移动它,您应该通过input
检查event.target.value
的内容,看看它是否&# 39; s为空,如果是,则从标签中移除该类,使其向上移动。
希望指出你正确的方向。
要考虑的几个要点: