web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用
小职 2021-04-26 来源 :前端全栈开发者 阅读 1010 评论 0

摘要:本文主要介绍了web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用,通过具体的内容向大家展现,希望对大家web前端CSS的学习有所帮助。

本文主要介绍了web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用,通过具体的内容向大家展现,希望对大家web前端CSS的学习有所帮助。

web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用

使用此伪类来设置当前显示占位符文本的输入的样式,换句话说,用户未在文本框中键入任何内容 ??

 

根据您的输入是否为空,应用一些动态样式非常好 ??

 

input:placeholder-shown {

  border-color: pink;

}

web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用 

 

它是如何工作的?

 

:placeholder-show 是CSS伪类,可让您将样式应用于具有占位符文本的 <input> 或 <textarea>。

 

<input placeholder="placeholder text" />

<textarea placeholder="placeholder text"></textarea>

 web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用

 

结果:

 

如果显示占位符,则为粉红色,表示用户未输入任何内容

如果未显示任何占位符,则为黑色,表示用户已键入内容

:placeholder-showd必须具有占位符

 

如果元素没有占位符文本,则此选择器将不起作用。

 

<input /><!-- 没有占位符 -->

 

<!-- 这也被视为没有占位符文本 -->

<input placeholder="" />

input:placeholder-shown {

  border-color: pink;

}

 web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用

 

:placeholder-shown vs ::placeholder

 

因此,我们可以使用 :placeholder-shown 设置输入元素的样式。

 

input:placeholder-shown {

  border: 1px solid pink;

  background: yellow;

  color: green;

}

 web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用

 

??嗯...注意到有些奇怪??——我们将颜色设置为:绿色,但没有用。好吧,这是因为 :placeholder-shown 只针对输入本身。但是对于实际的占位符文本,您必须使用伪元素 ::placeholder。

 

input::placeholder {

  color: green;

}

 web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用

 

但是!当我在处理这个问题时,我注意到还有一些其他属性,如果在 :placeholder-shown 级别应用,将会影响到占位符文本。

 

input:placeholder-shown {

  font-style: italic;

  text-transform: uppercase;

  letter-spacing: 5px;

}

 web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用

 

现在,我真的不知道为什么会发生这种情况 ???♀? 也许是因为这些属性被占位符继承了。

 

: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;

}

 web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用

 

期待:

 

如果为空则为粉红色

 

如果不为空为黑色

嗯...从这里开始,您可能会认为 :empty 似乎在起作用,因为我们看到的是粉红色边框。但这实际上不起作用??

 

粉红色显示的原因是因为伪类增加了特异性,类似于类选择器(即 .form-input)比类型选择器(即 input)具有更高的特异性。高特异性选择器将始终覆盖低特异性设置的样式。

 

这是判决!不要使用 :empty 检查输入元素是否为空?

 

如何在没有占位符的情况下检查输入是否为空?

 

好了,所以我们检查输入是否为空的唯一方法是使用 :placeholder-shown。但是,如果我们的输入元素没有占位符,会发生什么情况?好吧,这是一个聪明的方法!传入一个空字符串 " "。

 

<input placeholder=" "><!-- ��� 传递空字符串 -->

input:placeholder-shown {

  border-color: pink;

}

 web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用

 

与其他选择器组合

 

所以,我们可以针对显示占位符文字的输入元素,这很酷。换句话说,如果显示了占位符文本,那么一定意味着该元素是空的。利用这些知识,我们可以将这个伪类与其他选择器结合起来,做一些非常整洁的事情!让我们来看看 ??。

 

反向 :placeholder-shown 为 :not

 

我们可以使用 :not 伪类来做一些反向的事情。在这里,我们可以在输入不是空的时候进行目标操作。

 

<input placeholder="placeholder" value="not empty" />

input:not(:placeholder) {

  border-color: green;

}

 web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用

 

结果:

 

绿色,如果不为空,则表示用户已经输入了一些内容。

 

如果为空,则为黑色

浮动标签

 

使用占位符而不使用标签的问题之一就是无障碍,因为一旦你在打字的时候,占位符文字就没有了,这可能会导致用户的困惑。一个真正好的解决方案是浮动标签。最初,占位符文本显示时没有标签,而一旦用户开始输入,标签就会出现。这样一来,你仍然可以在不影响用户体验和可访问性的前提下,保持表单的简洁性。双赢 ??

 

而这是可以用纯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;

}

web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用 

浏览器支持

 

对 :placeholder-shown 的支持非常好!这包括Internet Explorer(是的,我和你一样惊讶??)。但是,对于IE,你需要使用非标准名称 :-ms-input-placeholder。

 web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用

 


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

web前端开发CSS学习-CSS的:Placeholder-Shown伪类的作用

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程