Firefox 上的样式占位符

Posted

技术标签:

【中文标题】Firefox 上的样式占位符【英文标题】:Styling placeholder on Firefox 【发布时间】:2013-08-26 07:32:07 【问题描述】:

我想要做的是让一个占位符出现在中心顶部 50% 和左侧 50%。它在 Chrome 中似乎很好,但在 Firefox 23 上却不行。我有一个例子here。 还有我的风格:

textarea::-moz-placeholder 
     position: relative;
     font-size: 16px;
     font-style: italic;
     color: #ABABAB;
     top: 50%;
     text-align: center;


textarea::-webkit-input-placeholder 
    position: relative;
    font-size: 16px;
    font-style: italic;
    color: #ABABAB;
    top: 50%;
    text-align: center;

如果有人可以提供帮助,我将不胜感激,谢谢!

【问题讨论】:

【参考方案1】:

我尝试了一些奇怪的东西,但这似乎很合适: 看到这个jsFiddle

您必须将required 属性放在textarea 上:

<textarea placeholder="Placeholder" required="required"></textarea>

这是 CSS

textarea 
    height: 300px;
    width: 300px;
    /* center the text by default */
    text-align:center;
    resize: none;


/* align the text left when insert */
textarea:focus text-align: left; 
/* textarea not empty will have text align left */
textarea:not(:invalid) text-align: left;
/* remove the red shadow of firefox if textarea is empty */
textarea:invalid box-shadow: none;
/* hide the placeholder on focus */
textarea:focus::-moz-placeholder opacity: 0;

textarea::-moz-placeholder 
    position: relative;
    font-size: 16px;
    font-style: italic;
    color: #ABABAB;
    /* the main trick to center the placeholder vertically */
    line-height:300px;


textarea::-webkit-input-placeholder 
    position: relative;
    font-size: 16px;
    font-style: italic;
    color: #ABABAB;    
    line-height: 300px; 
    /* keep the placeholder centered under chrome */
    text-align: center;

【讨论】:

textarea:not(:invalid) text-align: left; - 这是个好主意!我一直坚持它解决的问题。一个问题是它在不理解 :not(:invalid) 的旧浏览器中无法正常工作 @FAngel 是的,我也这么认为。但是旧版浏览器甚至可以处理placeholder 属性吗? 当然没有,但他们处理textarea text-align:center;,这是个问题。 我可以在不需要属性的情况下以某种方式使用它吗? @TakácsZsolt 我不这么认为,因为:invalid 选择器【参考方案2】:

在你的 CSS 中使用填充而不是给出位置:

textarea::-moz-placeholder 
 position: relative;
 font-size: 16px;
 font-style: italic;
 color: #ABABAB;
 padding-top: 50px;
 padding-left:50px;
 text-align: center;


textarea::-webkit-input-placeholder 
position: relative;
font-size: 16px;
font-style: italic;
color: #ABABAB;
padding-top: 50px;
padding-left:50px;
text-align: center;

您可以根据需要调整填充。

【讨论】:

以上是关于Firefox 上的样式占位符的主要内容,如果未能解决你的问题,请参考以下文章

在使用某些字体系列时,firefox上的输入类型编号完全不可见占位符

如何更改焦点上的占位符颜色?

占位符光标颜色 - Firefox

为啥 Firefox 会改变我的输入/占位符颜色?

jsx上的占位符错误

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