CSS :placeholder-shown用于什么,怎样工作的
Admin 2022-11-12 群英技术资讯 268 次浏览
在这篇文章中我们来了解一下“CSS :placeholder-shown用于什么,怎样工作的”,一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
使用此伪类来设置当前显示占位符文本的输入的样式,换句话说,用户未在文本框中键入任何内容
根据您的输入是否为空,应用一些动态样式非常好
input:placeholder-shown { border-color: pink; }
:placeholder-show
是CSS伪类,可让您将样式应用于具有占位符文本的 <input>
或 <textarea>
。
<input placeholder="placeholder text" /> <textarea placeholder="placeholder text"></textarea>
结果:
:placeholder-showd
必须具有占位符如果元素没有占位符文本,则此选择器将不起作用。
<input /><!-- 没有占位符 --> <!-- 这也被视为没有占位符文本 --> <input placeholder="" />
input:placeholder-shown { border-color: pink; }
:placeholder-shown
vs ::placeholder
因此,我们可以使用 :placeholder-shown
设置输入元素的样式。
input:placeholder-shown { border: 1px solid pink; background: yellow; color: green; }
️嗯...注意到有些奇怪——我们将颜色设置为:绿色,但没有用。好吧,这是因为 :placeholder-shown
只针对输入本身。但是对于实际的占位符文本,您必须使用伪元素 ::placeholder
。
input::placeholder { color: green; }
但是!当我在处理这个问题时,我注意到还有一些其他属性,如果在 :placeholder-shown
级别应用,将会影响到占位符文本。
input:placeholder-shown { font-style: italic; text-transform: uppercase; letter-spacing: 5px; }
现在,我真的不知道为什么会发生这种情况,也许是因为这些属性被占位符继承了。
:placeholder-shown
vs :empty
尽管 :placeholder-shown
是专门用于确定元素是否显示占位符的。实际上,我们可以使用它来检查输入是否为空(当然,假设所有输入都有一个占位符)。因此,也许您的下一个问题是,我们不能使用CSS empty吗?好吧,让我们检查一下
<input value="not empty"> <input><!-- empty -->
input:empty { border: 1px solid pink; } input { border: 1px solid black; }
期待:
嗯...从这里开始,您可能会认为 :empty
似乎在起作用,因为我们看到的是粉红色边框。但这实际上不起作用
粉红色显示的原因是因为伪类增加了特异性,类似于类选择器(即 .form-input
)比类型选择器(即 input
)具有更高的特异性。高特异性选择器将始终覆盖低特异性设置的样式。
这是判决!不要使用 :empty
检查输入元素是否为空
好了,所以我们检查输入是否为空的唯一方法是使用 :placeholder-shown
。但是,如果我们的输入元素没有占位符,会发生什么情况?好吧,这是一个聪明的方法!传入一个空字符串 " "
。
<input placeholder=" "><!-- 传递空字符串 -->
input:placeholder-shown { border-color: pink; }
所以,我们可以针对显示占位符文字的输入元素,这很酷。换句话说,如果显示了占位符文本,那么一定意味着该元素是空的。利用这些知识,我们可以将这个伪类与其他选择器结合起来,做一些非常整洁的事情!让我们来看看。
:placeholder-shown
为 :not
我们可以使用 :not
伪类来做一些反向的事情。在这里,我们可以在输入不是空的时候进行目标操作。
<input placeholder="placeholder" value="not empty" />
input:not(:placeholder) { border-color: green; }
结果:
使用占位符而不使用标签的问题之一就是无障碍,因为一旦你在打字的时候,占位符文字就没有了,这可能会导致用户的困惑。一个真正好的解决方案是浮动标签。最初,占位符文本显示时没有标签,而一旦用户开始输入,标签就会出现。这样一来,你仍然可以在不影响用户体验和可访问性的前提下,保持表单的简洁性。双赢
而这是可以用纯CSS实现的,我们只需要将 placeholder-shown
与 :not
和 +
结合起来就可以了。这是一个超级简化版的浮动标签。
<input name="name" placeholder="Type name..." /> <label for="name">NAME</label>
label { display: none; position: absolute; top: 0; } input:not(:placeholder-shown) + label { display: block; }
对 :placeholder-shown
的支持非常好!这包括Internet Explorer(是的,我和你一样惊讶)。但是,对于IE,你需要使用非标准名称 :-ms-input-placeholder
。
本文转载自:https://segmentfault.com/a/1190000039928413
作者:杜尼卜
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
今天我们一起来了解css3中的滤镜filter的使用,滤镜filter还是比较实用的,利用filter滤镜能够实现更改图片颜色的效果,那么具体是怎样实现呢?方法是什么?下面我们一起了解看看。
本篇文章主要介绍了CSS代码重构,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这篇文章给大家介绍的是css中width和height属性的相关内容,对于width和height属性的使用还是比较容易理解,本文主要介绍css中width和height属性的默认值auto与%使用及要注意的问题,接下来我们一起了解看看。
css中,可以利用overflow属性来实现字体溢出隐藏效果。下面通过代码示例来介绍一下overflow属性如何实现字体溢出隐藏<!DOCTYPE html><html><head><meta charset="utf-8"><sty
这篇文章主要介绍了如何在HTML里加载摄像头,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008