关于type="file"的input是啥?

这个是啥我觉得没必要再说了,反正大家都知道,然后在现在有各种手机的时代,还可以通过直接拍照的方式来上传,反正比以前好玩多了。

上传按钮的样式调整

玩过CSS的人朋友都知道,在HTML元素中,表单控件元素的样式修改是最痛苦的,很多控件的样式是跟着系统主题来改变的,想要去修改的话,只能模拟来实现,尤其尤其是在IE浏览器中。

对于type="file"这个上传按钮,曾经我们修改他的样式,有人用过模拟的方式,但据说用模拟的方式有可能会出现什么所谓的安全性问题,好吧,这对于我这样的一个页面仔,切图仔而言,不懂,就算懂了也不知道怎么去处理。那就不模拟吧……

可是不模拟的话,又要怎么修改样式呢?

图片定位叠加方案

之前的之前,我所知道的方法,其实大家也都知道的方法,就是通过将type="file"这个上传按钮透明后,然后叠加在一个图片上,这样就可以让人感觉是通过点击上传图片后实现的,也不用看那个原生的上传按钮了。

复制代码代码如下:

.up_icon,.up_input {position: absolute;top: 10px;left: 10px;width: 64px;height: 64px;z-index: 2}.up_icon {overflow: hidden;font-size: 0;line-height: 99em;background: url(http://sfault-image.b0.upaiyun.com/346/967/3469672357-54250d7235406_articlex) no-repeat 0 0;z-index: 1;}

看一下demo:http://jsbin.com/qacijusihivi/1/

在这个demo中应该很清晰可以看到实现的方式,通过定位的方式将上传按钮定位在图片之上,图片可以作为一个空标签的背景图片,然后把上传按钮的opacity透明度设置为0之后就看不到这个按钮了,但是实际是存在的,然后……然后……就没有然后了,效果就有了……

针对webkit的方案

这个针对webkit内核的方案其实有点扯,没多少实际用处,因为只有对webkit内核有效,如果不支持带-webkit-前缀的写法,就没任何效果了,所以各位看官就当娱乐一下看看吧。

复制代码代码如下:

input[type="file"]::-webkit-file-upload-button {position: absolute;top: 10px;left: 10px;width: 64px;height: 64px;overflow: hidden;line-height: 99em;background:url(http://sfault-image.b0.upaiyun.com/346/967/3469672357-54250d7235406_articlex) no-repeat 0 0;border: 0 none;z-index: 2;}

先看demo:http://jsbin.com/wicihihabifi/1/

在这个demo中的HTML结构很简单,就一个[input标签就可以了,比前面看到的方法简洁多了,但是对于兼容性而言肯定是差多了,不晓得在手机端是怎么样,现在手机端大部分都是webkit内核的浏览器,算了,且当娱乐,看之乐之吧~

简单的HTML结构修改样式完全是依赖于::-webkit-file-upload-button这个伪元素,针对这个伪元素的样式做相对应的修改即可了,因为这个是一个普通的按钮元素而已。这个按钮元素如果通过展示shadow DOM的方式来查看的话,我们会更清晰。

这是chrome开发者工具中看到的DOM树,一般而言,我们如果没开启查看shadow DOM的话,是看不到一个type="file"的input中还包含这么多内容。开启的方式很简单,点击开发者工具右上角的齿轮

,然后在弹出的层中把这个勾打上就可以了。

现在各位看官可以自行查看一下其他input标签了,如果有shadow DOM的话,必然可以展开。然后在HTML5新的标签中,有一些也是有的……

最后

对于type="file"的input标签,目前来说,我所知道的可以修改样式方法就这两个,然后针对webkit的方案也很有局限,但对于手机端来说应该没什么问题。或许有人说,那其他浏览器怎么办啊,是啊,怎么办呢,我也不知道。

在Firefox浏览器中,虽然有一个选择符input type="file" > button[type="button"]存在与forms.css中,但是不知道为什么,我在自己的样式添加这个选择符后,还是没看到任何效果,所以就没再继续玩下去了。

PS:对于form.css这个文件,如果是Firefox浏览器的粉丝,必然知道resource://gre-resources/forms.css这个路径的存在。

哦了,到这里就结束了,还有一个opera浏览器呢,我在mac里玩的时候,-webkit-这个前缀的样式直接被继承了……

附件:上传按钮图片:

html input选择框样式修改,关于type=file的input框样式修改小结相关推荐

  1. 为type=file的input标签制定样式——CSS基础

    为type=file的input标签制定样式 1. 概述 2. 实验 3. 解决方法与解析 1. 概述 在现在的前端开发中,为了开发的效率,大都会引入第三方库加快开发速度.查阅官方文档,一顿复制黏贴, ...

  2. html中某个名称不能修改,解决type=file 文件修改表单 名称不能正常回显的问题

    easyui 框架下   代码如下: css: .file_box{ float: right; width: 1035px; border: 1px solid #999; height: 32px ...

  3. input type=file选择图片按钮样式修改与图片预览

    1 背景 通过上图我们可以看到input type=file按钮的默认样式,非常不美观,如果要自定义该按钮的样式,要如何实现呢? 2 方式1样式 input覆盖整个按钮区域,并且设置完全透明 < ...

  4. html file 隐藏,input type=file /浏览时只显示指定文件类型(html5新特性)

    type="file" />浏览时只显示指定文件类型 accept属性列表 1.accept="application/msexcel" 2.accept ...

  5. 使用自定义的按钮替换默认的input type='file'

    可以通过让默认的input type = 'file'按钮透明度变为0,并且让它刚好覆盖在自定义的按钮上,来实现此效果: 将它写成一个jQuery插件: (function($){$.fn.brows ...

  6. input选择并上传视频、在不同手机的兼容问题

    目前我个人遇到的手机,(小米)/(中兴) 小米 小米手机在选择视频的input标签里不能设置accept="value" <input type="file&quo ...

  7. input选择框样式修改与自定义

    html自带的选择框样式不好看,并且在ios设备上丑的罚款.所以一般都是自定义样式: 原理:将原来默认的input选择框隐藏,然后控制label的:before与:after,配合矢量图标或者图片来实 ...

  8. input[type=file]去掉“未选择任何文件”及样式改进

    原文地址:input[type=file]去掉"未选择任何文件"及样式改进 - 腾讯云开发者社区-腾讯云 input 标签的 file 属性,在没有选择文件的情况下,默认显示一条文 ...

  9. html选择文件按钮美化,css input[type=file] 样式美化,input上传按钮美化

    我们在做input文本上传的时候,html自带的上传按钮比较丑,如何对其进行美化呢?同理:input checkbox美化,input radio美化是一个道理的,后面文章会总结. 1. 思路 inp ...

最新文章

  1. STM32 USB-HID通信移植步骤
  2. POP3、SMTP端口(SSL、TSL)
  3. iOS 代理反向传值
  4. 人眼中亮斑的检测、定位和去除(2)
  5. 元宇宙“众声喧哗”,三季度财报超预期的欢聚能否分一杯羹?
  6. hive提交命令org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Error parsing application ID:
  7. .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中
  8. VS中发布并调试IIS程序(非附加进程!!!)
  9. ORACLE 查询所有用户调度作业
  10. 52个有效方法(1) - 了解Objective-C语言的起源
  11. ipython和pylab模式_为什么要使用IPython?
  12. 综观java读取和创建excel方法
  13. 美国研究生 计算机专业 保底学校,2019Fall录取留学生最多的11所美国大学,有你的保底院校吗?...
  14. Foxmail中配置O365邮箱和Hotmail邮箱
  15. 【关于听任大佬的讲话的深刻感悟】
  16. docker部署consol 集群
  17. 从头到尾理解假设检验
  18. 计算机视觉入门(包含论文学习网址)
  19. LeetCode-----第139题-----单词拆分
  20. TTSR:用Transformer来实现端到端的超分辨率任务 | CVPR2020

热门文章

  1. 印象笔记电脑版使用技巧_高效技巧 | 一文get印象笔记素材库的5大使用场景
  2. java测试工程师需要掌握什么_测试工程师需不需要了解开发知识?
  3. 【学习笔记】node.js基础介绍
  4. SAP中用json数据格式调用http接口发送短信邮件案例
  5. ABAP几种内表的操作
  6. SAP中破解系统管理员密码
  7. cx_sy_dyn_call_illegal_type
  8. 如何在Excel中使用VB宏连接SAP系统
  9. 忘记SAP系统Client 000的所有账号密码
  10. 别傻了,年轻人买“养生奶茶”才不是为了养生!