<分区>
<分区>
我正在使用 Bootstrap-Vue 构建一个表单,我希望占位符文本具有动画效果,以便它位于使用 CSS Transitions 的输入之上。
我目前有这段由 Bootstrap-Vue 生成的代码:
<form class="form" _lpchecked="1">
<div role="group" class="form-group">
<label for="year" class="d-block form-control-placeholder">Year</label>
<div>
<input id="year" name="year" type="text" class="form-control">
</div>
</div>
</form>
我无法更改上述标记,因为 Bootstrap-Vue 使用组件进行输入并为我生成标记的表单组。因此,在 StackOverflow 上提出的其他类似问题无法回答我的问题。
至于我的 CSS,它看起来像这样:
.form-group {
position: relative;
margin-bottom: 1.5rem;
}
.form-control-placeholder {
position: absolute;
top: 0;
padding: 7px 0 0 13px;
transition: all 200ms;
opacity: 0.5;
color: red;
}
.form-control:focus + .form-control-placeholder,
.form-control:valid + .form-control-placeholder {
font-size: 75%;
transform: translate3d(0, -100%, 0);
opacity: 1;
}
上面代码的Codepen在这里:https://codepen.io/Canvasandcode/pen/OJJZLmM
最佳答案
您的代码非常接近所需的方法!
但是您只需要进行一些小调整即可使其正常工作;
首先,删除<div>
<input>
外的 wrapper 使它们相邻
切换<input>
和 <label>
所以.class:focus/valid
+ .class
CSS 选择器可以工作。
原因是因为你写 +
的方式指的是下一个相邻元素。
然后添加required="required"
给你的<input>
为了使用 CSS :valid
.
就是这样!干杯。以下代码片段只是根据您自己的代码进行的更改。
.form-group {
position: relative;
margin-bottom: 1.5rem;
}
.form-control-placeholder {
position: absolute;
top: 0;
padding: 7px 0 0 13px;
transition: all 200ms;
opacity: 0.5;
color: red;
}
.form-control:focus + .form-control-placeholder,
.form-control:valid + .form-control-placeholder {
font-size: 75%;
transform: translate3d(0, -100%, 0);
opacity: 1;
}
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<div class='container m-5'>
<form class="form" _lpchecked="1">
<div role="group" class="form-group">
<input id="year" name="year" type="text" class="form-control" required="required">
<label for="year" class="d-block form-control-placeholder" required="required">Year</label>
</div>
</form>
</div
关于html - 如何使用纯 CSS 创建动画表单占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58735327/