如何使用CSS设置占位符值?

n92*_*n92 43 html css

我想仅使用css而不是JavaScript或jQuery来设置输入框的占位符值.我怎样才能做到这一点?

Cha*_*les 15

您可以为webkit执行此操作:

#text2::-webkit-input-placeholder::before {
    color:#666;
    content:"Line 1\A Line 2\A Line 3\A";
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/Z3tFG/1/

  • 我注意到这不再适用于Chrome.似乎不支持的功能不再有效.我曾经利用这种技术,可以看到它不再适用于我的实现.有没有其他人注意到这一点? (13认同)
  • 如果指定了占位符,这似乎只有效 (4认同)
  • 刚试了一下它就没用了.烧毁... (4认同)
  • Firefox 不是基于 WebKit,@Mat (3认同)

Sar*_*raz 12

AFAIK,你不能单独使用CSS.CSS有content规则,但即便如此,也可以使用伪选择器在元素之前或之后插入内容.placeholder如果您正在使用@Blender指出的HTML5,则需要使用javascript来获取该OR 属性.


Ble*_*der 7

由于@Sarfraz已经提到过CSS,我只想添加HTML5.

您可以使用HTML5 placeholder属性:

<input type="text" placeholder="Placeholder text blah blah." />
Run Code Online (Sandbox Code Playgroud)

  • 在jQuery中:`$('#myFieldId').attr('placeholder','Search for Stuff');` (5认同)

Haf*_*ich 6

如果内容是通过 ajax 加载的,请使用 javascript 来操作占位符。无论如何,每种 css 方法都是 hack-isch。例如使用 jQuery: $('#myFieldId').attr('placeholder', 'Search for Stuff');

  • 被否决,因为它与问题无关。问题提到“使用 CSS”。 (3认同)

小智 6

某些类型的输入没有 :after 或 :before 伪元素,因此您可以使用带有 SVG 文本元素的背景图像:

    input {
       background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='50px' width='120px'><text x='0' y='15' fill='gray' font-size='15'>Type Something...</text></svg>");
       background-repeat: no-repeat;
    }

    input:focus {
       background-image: none;
    }
Run Code Online (Sandbox Code Playgroud)

我的代码笔:https ://codepen.io/Scario/pen/BaagbeZ

  • 这仍然需要一些 JS,因为当“input”失去焦点时,背景会显示出来并且与内容重叠。 (3认同)

Nin*_*aKC 5

可以实现的另一种方法,并且还没有真正看到任何其他人将其作为选项,而是使用锚点作为输入和标签周围的容器,并通过一些颜色技巧处理标签的移除,#hashtag ,和 css a:visited。(底部的jsfiddle)

您的 HTML 将如下所示:

<a id="Trickory" href="#OnlyHappensOnce">
    <input type="text" value="" id="email1" class="inputfield_ui" />
    <label>Email address 1</label>
</a>
Run Code Online (Sandbox Code Playgroud)

还有你的 CSS,像这样:

html, body {margin:0px}
a#Trickory {color: #CCC;} /* Actual Label Color */
a#Trickory:visited {color: #FFF;} /* Fake "Turn Off" Label */

a#Trickory:visited input {border-color: rgb(238, 238, 238);} /* Make Sure We Dont Mess With The Border Of Our Input */

a#Trickory input:focus + label {display: none;} /* "Turn Off" Label On Focus */

a#Trickory input {
    width:95%;
    z-index:3;
    position:relative;
    background-color:transparent;
}
a#Trickory label {
    position:absolute;
    pointer-events: none;
    display:block;
    top:3px;
    left:4px;
    z-index:1;
}
Run Code Online (Sandbox Code Playgroud)

您可以在 jsfiddle 上看到这一点,请注意,此解决方案仅允许用户选择该字段一次,然后才能永久删除标签。也许不是您想要的解决方案,但绝对是我没有看到其他人提到的可用解决方案。如果您想多次试验,只需将#hashtag 更改为新的“未访问”标签即可。

http://jsfiddle.net/childerskc/M6R7K/