定制html原生上传组件样式,实现兼容包括IE在内的所有浏览器。
来源:互联网 发布:海康网络球机接线方法 编辑:程序博客网 时间:2024/06/07 03:21
说起文件上传,撇开借助于flash插件或silverlight插件或各类浏览器自家插件的上传组件不说,我们来看看浏览器原生的:
早些年大多数人直接使用的浏览器的原生上传组件样式,但这样会导致不同浏览器下使用体验不一致,比如下图:
过了些时候,产品经理觉得太丑陋,各种浏览器体验不和谐,要求开发人员必须使得体验一致,于是有人就想方设法将<input type="file"/>的样式修改成绝对定位+ 透明+覆盖在按钮上 来实现如下这种上传组件样式:
当然了,我测试了各种浏览器,样式与体验完全保持了一致。
有人说,触发file输入框的dom.click()可以弹出文件选择框也能够选择文件啊,为什么要搞得这么麻烦盖一层透明的东西在上面来触发呢?原因是IE和早些版本的现代浏览器(chrome,firefox,safari等)对于这种方式提交的表单一律拒绝了,原因就是涉及到安全问题!(但是新版本的chrome与firefox浏览器已经放开了这个限制,可以上传了),但为了兼容旧版的IE,我们当时只能通过这种蹩脚的招数来实现,而且这也是目前大多数前端开发人员的做法,例如百度图片的上传就是这么做的:
但是,现在有一个更简单易用的方式来实现这个效果,那就是label标签的for属性!相信有很多人都知道label标签的for属性是干什么用的了,最重要的是这个属性包括IE6在内的所有浏览器都支持。相信你也猜到了我想说什么了?是的,我想说的就是用 label 的 for 属性来触发这个文件输入框的点击事件。我们只需定制一下这个label标签的样式,利用 它的for = "文件输入框的id" ,将文件输入框给绝对定位到十万八千里之外或者直接隐藏它(IE8等低版本浏览器不支持隐藏,会导致点了没有反应)就行喽~
实现出的样式如下图所示:
这个变黄的浏览按钮就是一个普通的label标签而已,于是,想将上传组件定制成什么样子,还不是我们说了算?嘿嘿!~
- 定制html原生上传组件样式,实现兼容包括IE在内的所有浏览器。
- JS如何判断包括IE11在内的IE浏览器
- JS如何判断包括IE11在内的IE浏览器
- JS如何判断包括IE11在内的IE浏览器
- JS如何判断包括IE11在内的IE浏览器
- 兼容IE浏览器的css样式
- html 简单select样式修改并兼容IE浏览器
- 关于html转为jsp后部分样式在ie浏览器中不兼容的问题
- 兼容所有主流浏览器的图片上传本地预览(IE\FIREFOX\CHROME)
- 兼容所有主流浏览器的图片上传本地预览(IE\FIREFOX\CHROME)
- 实现ie浏览器对placeholder的兼容
- SpringMVC+ajaxFileUpload 兼容IE浏览器实现异步上传图片
- html部分(包括浏览器的兼容)知识总结
- IE 6 7 8的样式兼容 包括对fixed的兼容
- JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
- 兼容xhtml,html,ff,ie的滚动条css样式
- 兼容所有的浏览器表格细边框相间颜色样式
- JavaScript 图片的上传前预览(兼容所有浏览器)
- ASP.NET实现二维码(QRCode)的创建和读取
- groovy vs swift
- DerivedData/xxx-fxhqtzymbwegttddoznsqpakmlvp/Build/Products/Debug-iphonesimulator/xxx.app/xxx
- android:process属性 学习
- JSON解析
- 定制html原生上传组件样式,实现兼容包括IE在内的所有浏览器。
- angularjs 设置全局变量的3种方法
- android应用程序中获取view的位置
- foxmail代理的情况下添加新账户
- JBOSS的安全配置
- 求曲线某一点处的曲率圆
- Merge k Sorted Lists
- 计算基本内置类型的范围
- HTTP协议分析系列(八)------http协议缓存详解