#书摘 #css #前端
《CSS 选择器世界》 占位符显示伪类 :placeholder-shown
:placeholder-shown 伪类的匹配和 placeholder 属性密切相关。:placeholder-shown顾名思义就是“占位符显示伪类”,表示当输入框的placeholder内容显示的时候,匹配该输入框。使用场景如下
1.可用于实现Material Design风格占位符交互效果:输入框处于聚焦状态时,输入框的占位符内容以动画形式移动到左上角作为标题存在。
首先,使浏览器默认的 placeholder 效果不可见,只需将 color 设置为 transparent,CSS如下:
然后,用下面的.input-label元素替代浏览器原生的占位符而成为我们看到的占位符。我们可以采用绝对定位:
最后,在输入框聚焦以及占位符不显示的时候对
效果达成!显然,这要比使用JavaScript写各种事件和判断各种场景简单多了。
眼见为实,读者可以手动输入 https://demo.cssworld.cn/selector2/11/1-1.php 体验与学习。
2.:placeholder-shown与空值判断
由于placeholder内容只在空值状态的时候才显示,因此我们可以借助:placeholder- shown伪类来判断一个输入框中是否有值。
例如:
可以看到输入框中尚未输入内容的时候出现了空值提示信息
https://memo.cosine.ren/m/400
《CSS 选择器世界》 占位符显示伪类 :placeholder-shown
:placeholder-shown 伪类的匹配和 placeholder 属性密切相关。:placeholder-shown顾名思义就是“占位符显示伪类”,表示当输入框的placeholder内容显示的时候,匹配该输入框。使用场景如下
1.可用于实现Material Design风格占位符交互效果:输入框处于聚焦状态时,输入框的占位符内容以动画形式移动到左上角作为标题存在。
首先,使浏览器默认的 placeholder 效果不可见,只需将 color 设置为 transparent,CSS如下:
/* 默认placeholder颜色透明不可见 */
.input-fill:placeholder-shown::placeholder {
color: transparent;
}
然后,用下面的.input-label元素替代浏览器原生的占位符而成为我们看到的占位符。我们可以采用绝对定位:
.input-fill-x {
position: relative;
}
.input-label {
position: absolute;
left: 16px; top: 14px;
pointer-events: none;
}
最后,在输入框聚焦以及占位符不显示的时候对
<label>
元素进行重定位(缩小并移动到上方):
.input-fill:not(:placeholder-shown) ~ .input-label,
.input-fill:focus ~ .input-label {
transform: scale(0.75) translate(0, -32px);
}
效果达成!显然,这要比使用JavaScript写各种事件和判断各种场景简单多了。
眼见为实,读者可以手动输入 https://demo.cssworld.cn/selector2/11/1-1.php 体验与学习。
2.:placeholder-shown与空值判断
由于placeholder内容只在空值状态的时候才显示,因此我们可以借助:placeholder- shown伪类来判断一个输入框中是否有值。
例如:
textarea:placeholder-shown + small::before,
input:placeholder-shown + small::before {
content: '尚未输入内容';
color: red;
font-size: 87.5%;
}
<input placeholder=" "> <small></small>
<textarea placeholder=" "></textarea> <small></small>
可以看到输入框中尚未输入内容的时候出现了空值提示信息
https://memo.cosine.ren/m/400