jQuery.fakeFile插件:网站上传控件

2016-02-20 00:56 5 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - Web开发 】

使用css来美化表单元素时,一直没有好的方法美化文件上传控件。http://www.quirksmode.org/dom/inputfile.html(网站好像出错)提供了美化文件上传控件的方法。本人在该方法的启发之下,结合自己的项目,将其功能更加完善,经过改善之后,其具有以下特点:

用户所见并不是文件上传按钮,而是一个按钮; 可以对图片的格式进行限制; 用户选择的图片可以显示在特定区域之中(IE6、safari、opera除外); 在用户禁用js的情况下文件上传控件保持可用状态。

本人将其进行封装成一个jQuery插件,因网上已经有一个叫jQuery.fakeFile的插件,为了与其区分开来,我将并将其命名为jQuery.liveFakeFile。这篇文章将介绍该方法的原理和使用方法。

一、需求

需求很简单,但实现起来需要一定得技巧,简述如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)要求不出现文件上传控件,而是一个上传图片的按钮,用户单击该按钮时弹出图片对话框; 选择图片后,图片在按钮上方显示出来,默认情况下,显示默认的图片; 对选择的图片进行格式判断,一旦不符合要求,在按钮下方显示错误信息,并显示默认的图片。

二、分析

实现点击按钮弹出选择图片对话框效果

文本上传控件前面有一输入框,受Michael McGrady(ljzcome曾翻译过此文)的启示,我们创建上传图片按钮,然后改变文件上传控件的opacity属性,将其设置为0,并通过定位属性使点击区域位于按钮之上。这样,用户的每一次点击看似是点击的按钮,实则是文本上传控件本身。

显示用户选择的图片

要显示图片看似很简单,但哥哥浏览器之间存在差异,IE6并不能正确显示图片,IE7可以通过使用滤镜AlphaImageLoder使其显示。而Firefox也不能正常显示图片,但它有一个方法可以使图片显示getAsDataURL()。其他浏览器opera、safari也不能正常显示图片。所以我们使用浏览器嗅探技术对不同的浏览器分别处理,对不能正常显示图片的浏览器让其显示文字即可。

判断图片格式

只需在触发文件上传控件的change事件时通过正则表达式验证即可,一旦符合格式要求即将图片或提示文字显示出来,否则显示错误提示信息。

可用性分析

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

因为是通过js来改变文件上传控件的外观,那么就必须保证用户在禁用js的情况下能正常上传图片。所以在html结构中我们放置的应该是正常的文件上传控件。

来源:http://www.tulaoshi.com/n/20160220/1632860.html

延伸阅读
标签: Web开发
后来朋友推荐了一个这个叫uploadify的上传插件,似乎挺好,就到官方下了个示例运行,感觉挺好,自己再稍加美化一下就OK 了..! 接下来就讲讲使用过程吧: 1. 下载 官方网站: http://www.uploadify.com/ 直接下载:jquery.uploadify-v2.1.0.rar 下载解压后: 说明:它里面有demo 但是是PHP的,还有一个帮助文档:uploadify v2.1.0 Manu...
每年,网站设计都在快速进步,每天几乎都有新的设计出现。我可以想象得到,2015年将出现最好的网站,包括2014年已经预测到的许多趋势。随着这些趋势在2015年左右实现,现在该是时候让我们预测2015年可能出现的新趋势了。每个人都在反思2014年,并展望2015年,下面就让我们看看2015年可能出现的网站设计趋势。 在一个小的叠区域展示合适的帮助...
酷盘PC版上传完后删除电脑的文件时网站上同时没了   酷盘PC版是一个创新概念的同步网盘,区别于其他传统网盘的是同步概念。 也就是说,用户安装了酷盘客户端软件之后,只要将文件或者文件夹复制or粘贴进酷盘同步目录里面,软件就会在后台批量的将文件同步传输至服务器。酷盘PC客户端保证了本地酷盘同步目录里面的文件始终和服务...
标签: Web开发
实际上在用PHP上传文件时。。。只能用$_FILES形式,但是若我们只是单一的用JS方式取其ID,如input id='img' type='file'..document.getElementById('img').value或者jquery形式的$("#img")都是不能正真实际上传的(但是还是有很多人这样做,刚开始时我也是)。 可是功能上又要要求实现所谓的“异步上传”,怎么办呢??只能借助于第三方的组件...
标签: Web开发
在网络发展领域,由于 jQuery 简单易学,易于使用和易于扩展的特点,因此正慢慢变得无处不在。以下是从一些 jQuery 相关文章中整理出来的 30+ 新鲜与惊奇的 jQuery 插件与教程。如果你正在寻找最新的 jQuery 信息,这些内容值得一读。 教程 1. 在图像画廊载入过程中使用 jQuery 预加载技术。 | 2. 创建一个独特的熔岩灯动画效果的 j...

经验教程

140

收藏

43
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部