实现 Google Material Design 文本框风格的方法有很多种,但是本攻略将重点介绍使用 CSS 实现的方法。以下是实现过程:
步骤 1:HTML 结构
首先,我们需要定义一个基本的 HTML 结构,包含一个输入框和一个标签(label),如下所示:
<div class="input-wrapper">
<input type="text" required />
<label>输入框</label>
</div>
步骤 2:基础样式
接下来,在样式表中定义基础样式:
.input-wrapper {
position: relative;
margin: 2rem;
}
.input-wrapper label {
position: absolute;
top: 0;
left: 0;
font-size: 1.2rem;
font-weight: bold;
color: grey;
pointer-events: none;
transition: all 0.2s ease;
}
.input-wrapper input {
font-size: 1.2rem;
padding: 1rem;
border: none;
border-radius: 0;
border-bottom: 2px solid grey;
background-color: transparent;
width: 100%;
}
.input-wrapper input:focus {
outline: none;
border-bottom: 2px solid blue;
}
这段代码中,我们设置了输入框的基本样式,包括:
- input-wrapper 的 position 属性设置为 relative,使得标签和输入框可以在输入框容器内定位。
- label 的 position 属性设置为 absolute、top 和 left 属性设置为 0,使得标签在输入框容器的左上角定位。
- font-size、font-weight 和 color 属性分别设置标签的字体大小、粗细和颜色。
- pointer-events 属性设置为 none,使得标签无法响应鼠标事件。
- transition 属性设置动画过渡效果,让标签可以进行平滑的展示和隐藏。
- input 的 padding 值设置为 1rem,让输入框内的文字与输入框边缘有一定的间距。
- border、border-radius 和 border-bottom 属性设置输入框下边框的颜色、边框的弧度和边框的宽度。
- background-color 属性设置输入框的背景色为透明。
- input:focus 伪类样式设置输入框获取焦点时的样式,包括去掉默认的外边框边线、设置下方边框为蓝色。
步骤 3:为输入框和标签添加动画效果
为了让输入框和标签具有动态效果,我们需要添加一些 CSS3 动画效果,在样式表中添加以下代码:
.input-wrapper input:focus + label,
.input-wrapper input:not(:placeholder-shown) + label {
top: -2rem;
font-size: 0.8rem;
color: blue;
}
这段代码中,我们使得当输入框处于聚焦状态或者输入框中有内容时,标签会上移并缩小字体大小,从而创建一种动画效果。
示例 1:添加输入框的提示信息
为了让用户知道输入框需要输入什么,我们可以为输入框的 placeholder 属性添加提示信息。在 HTML 中添加以下代码:
<div class="input-wrapper">
<input type="text" placeholder="用户名" required />
<label>用户名</label>
</div>
这样,在输入框中没有输入内容时,就会显示 "用户名" 的提示信息。
示例 2:为输入框添加错误提示样式
有时候,用户在输入内容时会出现错误,这时我们需要为输入框添加错误提示样式。在样式表中添加以下代码:
.input-wrapper input:invalid:not(:placeholder-shown) {
border-bottom-color: red;
}
.input-wrapper input:focus:invalid:not(:placeholder-shown) + label {
color: red;
}
这段代码中,我们为 input 使用了 :invalid 伪类选择器,当输入无效时,输入框下边框的颜色会变为红色,标签的字体颜色也会变为红色。
尝试了上面的这些步骤之后,你就可以快速实现 Google Material Design 风格的文本输入框啦!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS实现 Google Material Design 文本输入框风格(推荐) - Python技术站