定义和用法
placeholder 属性提供可描述输入字段预期值的提示信息(hint)。
该提示会在输入字段为空时显示,并会在字段获得焦点时消失。
注释:placeholder 属性适用于以下的 <input> 类型:text, search, url, telephone, email 以及 password。
问题:
由于placeholder 属性是 HTML5 中的新属性,所以IE10以下不支持该属性,有问题就会有解决办法,我的方法就是,利用label和input组合,去模拟实现placeholder属性带来的效果,具体步骤如下:
HTML代码:
<!--搜索框--> <div class="texts"> <input type="text"/><label for="text">毛巾 暖冬装备</label> </div>
CSS代码:
.texts{ position:relative; } .texts>input{ width:238px; height:26px; line-height: 26px; border:1px solid black; /*输入文字时会与框头有间距*/ padding-left: 10px; } .texts>label{ position:absolute; left:10px; top:5px; font-size:15px; color:#b0b0b0; cursor:text; }
JS代码:
var oTexts=document.getElementsByTagName("input")[0]; var oLabel=oSearch.getElementsByTagName("label")[0]; /*文本框失去焦点时,此时若框内无值,则让框内提示文字(也就是label)显示,若框内有值,则隐藏提示文字*/ oTexts.onblur=function(){ if(this.value==""){ oLabel.style.display="block"; }else{ oLabel.style.display="none"; } }; //文本框获得焦点时,让提示文字(也就是label)隐藏 oTexts.onfocus=function(){ oLabel.style.display="none"; }; //点击提示文字时(也就是label),就让文本框获得焦点并且隐藏自己 oLabel.onclick=function(){ oLabel.style.display="none"; oTexts.focus(); };
原理简单而又巧妙,其实就是用一个标签去代替placeholder文本,用一个div包裹文本标签和label标签(也可以是别的标签),让他们分别相对于父级定位,做出placeholder实现的效果,接着就是JS的活儿了,我们要去分析在文本框获得焦点、失去焦点这些过程中,都出现了哪些动效,再将这些逻辑语言化为JS语言,其实不同的需求下,JS代码也会有所不同,只要掌握了原理,配到不同的需求,大家可以做出相应改变。
原文地址:https://www.cnblogs.com/libijun96/p/8331397.html
时间: 2024-10-13 05:20:41