html5原生支持placeholder,对于不支持的浏览器(ie),可用js模拟实现。
js代码
1 (function(){ 2 //判断是否支持placeholder 3 function isPlaceholer(){ 4 var input = document.createElement('input'); 5 return "placeholder" in input; 6 } 7 //不支持的代码 8 if(!isPlaceholer()){ 9 //创建一个类 10 function Placeholder(obj){ 11 this.input = obj; 12 this.label = document.createElement('label'); 13 this.label.innerHTML = obj.getAttribute('placeholder'); 14 this.label.style.cssText = 'position:absolute; text-indent:4px;color:#999999; font-size:12px;'; 15 if(obj.value != ''){ 16 this.label.style.display = 'none'; 17 } 18 this.init(); 19 } 20 Placeholder.prototype = { 21 //取位置 22 getxy : function(obj){ 23 var left, top; 24 if(document.documentElement.getBoundingClientRect){ 25 var html = document.documentElement, 26 body = document.body, 27 pos = obj.getBoundingClientRect(), 28 st = html.scrollTop || body.scrollTop, 29 sl = html.scrollLeft || body.scrollLeft, 30 ct = html.clientTop || body.clientTop, 31 cl = html.clientLeft || body.clientLeft; 32 left = pos.left + sl - cl; 33 top = pos.top + st - ct; 34 } 35 else{ 36 while(obj){ 37 left += obj.offsetLeft; 38 top += obj.offsetTop; 39 obj = obj.offsetParent; 40 } 41 } 42 return{ 43 left: left, 44 top : top 45 } 46 }, 47 //取宽高 48 getwh : function(obj){ 49 return { 50 w : obj.offsetWidth, 51 h : obj.offsetHeight 52 } 53 }, 54 //添加宽高值方法 55 setStyles : function(obj,styles){ 56 for(var p in styles){ 57 obj.style[p] = styles[p]+'px'; 58 } 59 }, 60 init : function(){ 61 var label = this.label, 62 input = this.input, 63 xy = this.getxy(input), 64 wh = this.getwh(input); 65 this.setStyles(label, {'width':wh.w, 'height':wh.h, 'lineHeight':20, 'left':xy.left, 'top':xy.top}); 66 document.body.appendChild(label); 67 label.onclick = function(){ 68 this.style.display = "none"; 69 input.focus(); 70 } 71 input.onfocus = function(){ 72 label.style.display = "none"; 73 }; 74 input.onblur = function(){ 75 if(this.value == ""){ 76 label.style.display = "block"; 77 } 78 }; 79 } 80 } 81 var inpColl = document.getElementsByTagName('input'), 82 textColl = document.getElementsByTagName('textarea'); 83 //html集合转化为数组 84 function toArray(coll){ 85 for(var i = 0, a = [], len = coll.length; i < len; i++){ 86 a[i] = coll[i]; 87 } 88 return a; 89 } 90 var inpArr = toArray(inpColl), 91 textArr = toArray(textColl), 92 placeholderArr = inpArr.concat(textArr); 93 for (var i = 0; i < placeholderArr.length; i++){ 94 if (placeholderArr[i].getAttribute('placeholder')){ 95 new Placeholder(placeholderArr[i]); 96 } 97 } 98 } 99 })()
html代码:
1 <div> 2 <input type="text" placeholder="提示1" /><br> 3 <textarea placeholder="提示2" /></textarea><br> 4 <input type="text" placeholder="提示3" /><br> 5 </div>
css代码:
1 div,input,textarea{ margin:0; padding:0;} 2 div{width:400px; margin:100px auto 0;} 3 input,textarea{width:200px;height:20px; margin-top:5px;line-height:20px;border:1px #666666 solid; background-color:#fff; padding-left:2px;} 4 textarea{ height:60px; font-size:12px; resize:none;}
貌似上面的不支持IE,不知道什么原因,又找了个jquery的可以做。
如果使用
<input type="text" id="test" placeholder="可以提示使用者輸入些什麼">
你可能會發現在 firefox 、google chrome 都正常
但在 ie 就沒有效果
還好這時候有這個~
有人整理的非常好了^_^
https://github.com/mathiasbynens/jquery-placeholder
連demo都很完整了
http://mathiasbynens.be/demo/placeholder
總之,把以下的code貼到 head 就能跑了
<script src="http://3wa.tw/inc/javascript/jquery/jquery-1.7.2.min.js" type="text/javascript"></script> <!--fix placeholder $('input, textarea').placeholder(); --> <script src="http://3wa.tw/inc/javascript/jquery/jquery-placeholder/jquery.placeholder.min.js" type="text/javascript"></script> // 修正 placeholder $(document).ready(function() { $('input, textarea').placeholder(); });
相关推荐
下面我们将详细讲解如何通过JavaScript来模拟HTML5的`placeholder`效果。 首先,我们需要检测浏览器是否支持`placeholder`属性。这可以通过创建一个新的`input`元素并检查`placeholder`属性是否存在来实现: ```...
该压缩包文件“手机模仿UC资讯_HTML手机电脑网站_网页源码移动端前端_H5模板_自适应响应式源码.zip”包含了一套用于创建类似UC资讯的手机和电脑网站的HTML源码,专为移动端前端设计,采用了H5(HTML5)技术和自适应...
总的来说,这个项目涵盖了HTML5的表单元素、表单验证、本地存储以及可能的JavaScript交互。通过这个项目,学生不仅可以学习到HTML5的基础知识,还能了解网页开发中的用户体验设计和数据验证策略,这些都是现代Web...
这个压缩包"JavaScript模仿百度搜索框输入文字删除特效源码.zip"包含了实现这一功能的代码资源,主要涉及JavaScript、HTML和CSS等技术。以下是关于这一特效的详细知识点: 1. **HTML结构**: - 搜索框通常由`...
3. **Canvas绘图**:HTML5的元素提供了一个画布,通过JavaScript可以进行动态图形绘制,用于创建游戏、图表、动画等复杂视觉效果。 4. **SVG矢量图**:SVG(Scalable Vector Graphics)是一种用于描绘图形的XML格式...
QQ作为中国最流行的即时通讯工具之一,其登录界面的设计简洁而直观,对于初学者来说,模仿这个设计可以很好地提升Web前端开发技能。 首先,我们从HTML结构开始。HTML是网页的基础,用于构建页面的骨架。一个简单的...
在压缩包子文件的文件名称列表中,我们看到"placeholder-animated-master",这可能是一个Git仓库的主分支名称,通常表示这是一个开源项目,可能包含HTML、CSS和JavaScript文件,用于创建和控制输入占位符的动画效果...
【标题】:“模仿百度搜索框”这一项目旨在创建一个与百度搜索框类似的功能性搜索组件。这个组件将包括用户交互、样式设计以及功能实现等方面,旨在提供一个接近于百度搜索体验的网页元素。 【描述】:“内含js、...
2. **HTML5的新特性**:掌握如何利用HTML5的新元素(如、等)和属性(如datetime、placeholder等)来优化页面结构和用户体验。 3. **CSS3的动画和过渡**:了解如何使用`transition`和`animation`属性创建过渡效果和...
在构建一个类似Google的搜索条功能时,PHP作为服务器端脚本语言,通常与前端的HTML和JavaScript(AJAX)配合工作,以实现动态交互。在这个项目中,我们看到两个关键文件:`all.html`和`gl.php`。`all.html`可能是...
通过这些步骤,我们可以实现一个基本的JavaScript页面查找功能,模仿浏览器的Ctrl+F行为。在实际项目中,可能还需要考虑性能优化、错误处理、兼容性等问题。记得在`JS实现页面查找.htm`文件中查看具体实现细节,以...
在JavaScript(JS)开发中,有时我们需要实现一些高级交互效果,比如模仿知名应用的功能,例如支付宝的input文本输入框放大组件。这个组件在用户聚焦到输入框时,会将输入框放大,提供更好的用户体验,特别是在...
在这个项目中,我们将关注三个主要方面:HTML结构(div标签)、CSS样式(CSS)以及JavaScript交互(js)。 1. **HTML结构**: - `div`标签是HTML中的一个块级元素,常用于创建网页的布局结构。在仿163邮箱登录页面...
在本文中,我们将深入探讨如何使用CSS和div技术来创建一个微信小程序,模仿微信聊天界面的布局。这个项目是为初学者提供一个源码学习的机会,帮助他们掌握微信小程序的开发基础。 首先,我们需要理解微信小程序的...
本文将详细解析如何使用JavaScript来模仿百度的弹出登录框,并实现鼠标拖拽效果。 首先,创建弹出登录框的核心是利用HTML来构建登录表单结构,包括用户名输入框、密码输入框、登录按钮以及可能的记住密码和注册链接...
同时,HTML5的placeholder属性允许我们在输入框内设置提示文本,增强用户体验。在iPhone风格的表单设计中,可能会用到这些新特性来模拟iOS设备上的输入体验。 jQuery是一个流行的JavaScript库,它简化了DOM操作、...
<input type="text" id="searchInput" placeholder="请输入关键词"> <div id="searchSuggestions" class="hidden"></div> <script src="script.js"> </html> ``` 这里我们引入了jQuery库,并创建了一个输入框`#...
HTML和CSS是构建网页的基本技术,本项目"HTML+CSS简单实现凡客商城静态网页"旨在通过这两门语言,模仿知名电商网站凡客诚品的界面设计,创建一系列静态页面,包括首页、商品列表页、商品详情页、用户登录与注册、...
"JS评论留言发布表单代码.zip"提供的资源包含了一个简单的实现,旨在模仿微博发布功能。在这个项目中,我们将关注两个核心部分:表单设计和JS交互。 首先,表单设计通常包括输入框(例如文本区域)让用户输入评论,...