跟 HTML5 的使用方法一样。在 input
中添加属性 placeholder
:(摘自sofish的AliceUI项目)
火狐和webkit内核浏览器可以直接通过css来控制,分别为:-moz-placeholder和::-webkit-input-placeholder,调用这个js之后,会给不支持placeholder的加上placeholder这个class,所以整合起来就是:
Css Code :-moz-placeholder, ::-webkit-input-placeholder { color: #bfbfbf; } .placeholder{ color: #bfbfbf; } :-webkit-autofill { background:#fff; }
注:请注意不要把这两个样式写在一起,如果集体声明ie8,9将不能正确解析.placeholder的样式。有点奇怪
<input placeholder="提示文字"> <input type="text" placeholder="邮箱/手机号/用户名"> <input type="password" placeholder="请输入密码"> JavaScript辅助: <script> // placeholder 功能扩展 window.onload = function(){ var doc = document, inputs = doc.getElementsByTagName('input'), // 检测 placeholder 支持 supportPlaceholder = 'placeholder' in doc.createElement('input'), supportPlaceholdertextarea = 'placeholder' in doc.createElement('textarea'), /* * 创建 placeholder * @param {ELEMENT} input 传入的 input 对象 * @return {VOID} * @author: sofish Lin http://sofish.de */ placeholder = function(input){ var text = input.getAttribute('placeholder'), defaultValue = input.defaultValue; if(input.value=="" || input.value==text){ // 制作一个假 placeholder // 需要 css 配合,在 JS 中设置 style 并不太好 input.value=text; // input.style.color = 'gray'; input.className = 'placeholder'; } // 聚焦去掉假 placeholder input.onfocus = function(){ if(input.value === text){ this.value = ''; // this.style.color = ''; input.className = ''; } } // 当失焦值为空时,补回 placeholder 的值 input.onblur = function(){ if(input.value === ''){ // input.style.color = 'gray'; input.className = 'placeholder'; this.value = text; } } input.onkeydown = function(){ this.style.color = ''; } }; if(!supportPlaceholder){ for(var i = 0, len = inputs.length; i < len; i++){ var input = inputs[i], text = input.getAttribute('placeholder'); // 当 input[type=text] 并且 placeholder 值不为空是执行 if(input.type === 'text' && text){ placeholder(input); } } } }; </script>
对不支持 placeholder
属性的浏览器通过JS进行辅助支持。
注:Sass版中,提供了 placeholder($color) mixin,方便设置placeholder的文本色