【发布时间】:2021-06-06 21:48:04
【问题描述】:
我想使用浮动标签进行输入。与 react 的 material-ui 完全一样。
材质界面代码:
<TextField
id="outlined-basic"
label="E-Mail"
variant="outlined"
placeholder="Enter E-Mail"
/>
查看上述代码输出的链接:Code
我想要的是,标签必须在输入字段内。当用户单击输入字段时,标签应该浮动并且应该显示占位符。如果用户没有输入任何内容并且焦点发生变化,则必须再次隐藏占位符并且标签必须返回到初始位置
到目前为止我尝试过的是:
.container {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.material-textfield {
position: relative;
}
label {
position: absolute;
font-size: 1rem;
left: 0;
top: 50%;
transform: translateY(-50%);
background-color: white;
color: gray;
padding: 0 0.3rem;
margin: 0 0.5rem;
transition: 0.1s ease-out;
transform-origin: left top;
pointer-events: none;
}
input {
font-size: 1rem;
outline: none;
border: 1px solid gray;
border-radius: 5px;
padding: 1rem 0.7rem;
color: gray;
transition: 0.1s ease-out;
}
input:focus {
border-color: #6200ee;
}
input:focus + label {
color: #6200ee;
top: 0;
transform: translateY(-10%) scale(0.9) !important;
}
input:not(:placeholder-shown) + label {
top: 0;
transform: translateY(-50%) scale(0.9) !important;
}
input:empty + label {
transform: translateY(75%);
font-weight: bold;
}
input:empty:not(:placeholder-shown) + label {
top: 0;
transform: translateY(-50%) scale(0.9) !important;
}
input:empty::-webkit-input-placeholder {
opacity: 0;
}
<div class="container">
<div class="material-textfield">
<input placeholder="placeholder" type="text" />
<label> label</label>
</div>
</div>
【问题讨论】:
-
请注意,您可以使用Stack Snippets(图标在编辑器工具栏中看起来像
<>)在 Stack Overflow 上创建一个可运行的 HTML/CSS sn-p,而不是让人们去其他网站.
标签: css