如何在输入中仅使用占位符斜体

Posted

技术标签:

【中文标题】如何在输入中仅使用占位符斜体【英文标题】:How to make only placeholder italics in input 【发布时间】:2015-02-23 00:13:29 【问题描述】:

如何将占位符的文本格式化为斜体,但是当有人在文本框内书写时,文本不应该是斜体。

代码:

<input type="text" id="search" placeholder="Search" style="font-style:italic">

如何将斜体文本仅放置在占位符而不是整个输入上?

【问题讨论】:

【参考方案1】:

当然。只需将样式应用于这些 CSS 规则:

::-webkit-input-placeholder 
   font-style: italic;

:-moz-placeholder 
   font-style: italic;  

::-moz-placeholder 
   font-style: italic;  

:-ms-input-placeholder   
   font-style: italic; 

可能不需要所有这些规则。我总是只引用CSS Tricks,因为我总是忘记怎么做。

编辑:请注意,这些规则不能合并到一个选择器中。它们必须单独声明,如以下 cmets 中的 Dave Kennedy 所述。

【讨论】:

不幸的是,这些规则似乎必须单独声明,即::-webkit-input-placeholder, ::-moz-placeholder font-style: italic; 不起作用。 @DaveKennedy 是的,你是对的。我也注意到了。但是,我不确定为什么会这样。 @DaveKennedy @JosephMarikle 这是CSS3 Spec 的一部分。具体来说:包含无效选择器的一组选择器无效。因此,因为 Firefox 将 :-ms-input-placeholder 视为无效,它使整个选择器组无效。这就是为什么您需要将它们分开。【参考方案2】:

从MDN,您可以使用:placeholder-shown 伪类。

input:placeholder-shown 
   font-style: italic;

这具有不带前缀的优点,并且在撰写本文时浏览器支持还不错(92-ish%):https://caniuse.com/#feat=css-placeholder-shown。

【讨论】:

【参考方案3】:

另一种方式::focus 选择器是你的朋友。要使其仅用于占位符,请使用 :not 选择器。仅当输入字段不是当前选择时才具有 CSS 规则。 在你的 CSS 中定义:

.class-of-your-input-field:not(:focus) 
font-style:italic;

【讨论】:

除了使占位符文本斜体之外,这是否还会使常规输入文本斜体? 这有一个不幸的效果,一旦空输入框获得焦点,它将失去斜体,而仍然有占位符。

以上是关于如何在输入中仅使用占位符斜体的主要内容,如果未能解决你的问题,请参考以下文章

如何更改特定输入字段的占位符颜色?

如何解决 Firefox 的材料设计输入字段占位符屏幕阅读器问题?

如何更改输入标签占位符的语言?

如何在日期选择器输入上显示占位符?

如何将占位符属性添加到 JSF 输入组件?

用户键入时如何保持输入占位符可见