文件上传按钮的用户自定义样式的实现

一般在做 WEB 开发项目的时候碰到文件上传必不可少,但是因为各家浏览器对于

<input type="file">

标签支持不同所以在各个浏览器下的显示也是不一样的。可能在用户体验方面会形成困扰,今天就给大家介绍一下文件上传按钮的用户自定义样式的实现。

实现原理:

建立两个层,一个层包装 <input type="file"> 以下简称文件按钮层,一个层包装上传文件按钮的自定义样式,以下渐层样式层。设置两个层的大小一致,将文件按钮层设置相对定位 position = relative、z-index = 2,将样式层设置为绝对定位设置 position=absolute、z-index = 1 并且设置 top left 属性使之与文件按钮层重叠。这样就使大小的一样的两个层重叠在了一起,并且文件按钮层在上面。接下来设置文件按钮层为完全透明,便实现了用户自定义样式。

下面给出实现代码,以下代码可以直接拖动至浏览器查看效果,建议使用 chrome 浏览器。IE 浏览器对于CSS 样式支持不够,不能够显示渐变效果。

代码:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 2 <html>
 3   <head>
 4     <title>hidetypebutton.html</title>
 5     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 6
 7     <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
 8         <!-- 实现 type = "file" 的 input 文件上传按钮的自定义样式-->
 9         <style type="text/css">
10             .user-file-outwrap{width: 100px;height: 30px;overflow: hidden;position: relative;border: 1px solid gainsboro;border: 1px solid rgba(0,0,0,0.1) !important;}
11             .user-file-wrap{width: 100%;height: 100%;overflow: hidden;position: relative;z-index: 2;overflow: hidden;}
12             .user-file-wrap input{margin: 0 0 0 -2px;padding: 0;width: 100%;height: 100%;opacity: 0;filter: alpha(opacity=0);cursor: pointer;}
13             .user-file-bg{
14                 width: 100%;height: 100%;position: absolute;top: -1px;left: -1px;z-index: 1;text-align: center;font-size: 12px;line-height: 30px;
15                 background-color: transparent;
16                 background-image: -moz-linear-gradient(top,rgba(255, 255, 255, .85),rgba(247, 247, 247, .85));
17                 background-image: -o-linear-gradient(top,rgba(255, 255, 255, .85),rgba(247, 247, 247, .85));
18                 background-image: -webkit-gradient(linear,left top,left bottom,from(rgba(255, 255, 255, .85)),to(rgba(247, 247, 247, .85)));
19                 background-image: -webkit-linear-gradient(top,rgba(255, 255, 255, .85),rgba(247, 247, 247, .85));
20                 background-image: linear-gradient(top,rgba(255, 255, 255, .85),rgba(247, 247, 247, .85));
21                 border: 1px solid gainsboro;border: 1px solid rgba(0,0,0,0.1) !important;
22                 color: #444;
23             }
24
25
26         </style>
27   </head>
28
29   <body>
30     <div class="user-file-outwrap">
31         <div class="user-file-wrap"><input type="file" class="file"></div>
32         <div class="user-file-bg">点击上传</div>
33     </div>
34     <br/>
35     <div><strong>在 IE 浏览器下没有渐变效果并且文件上传可能需要双击才能触发效果</strong></div>
36   </body>
37   <input type="file">
38 </html>

文件上传按钮的用户自定义样式的实现

时间: 2024-10-13 15:15:55

文件上传按钮的用户自定义样式的实现的相关文章

CSS自定义文件上传按钮

原文:CSS自定义文件上传按钮 今天一同事问我文件上传按钮的问题,情况是这样的,他页面上有3个按钮,分为左中右三个,左边的位按钮甲,右边的位按钮乙,而中间的就是个文件选择按钮,情况大概是这个样子的: 两边的按钮都有了样式,但中间的选择文件的样式死活调不出来,于是我就同他一块解决,后来经过自己设置width,height折腾无果,再求助google终于找到了解决办法,这个方法是这样的: 用一个标签套着文件域,然后调整文件域外边的元素,设置成按钮样式,然后,在把文件域"隐藏"掉(这里的隐藏

ExtJs4学习(十三)如何给文件上传按钮加背景图片

我们日常看到的上传按钮都是这样的 当然browse是默认的,我们可以去改变它,比如替换成"上传",配置为buttonText: '上传', 如果我们想给按钮添加背景图片呢,你可能注意到了这个配置 buttonConfig { xtype: 'filefield', emptyText: 'Select an image', fieldLabel: 'Photo', name: 'photo-path', buttonText: '', buttonConfig: { iconCls:

文件上传按钮input[type=&quot;file&quot;]按钮美化时在IE8中的bug【兼容至IE8】

首先看一下完成后的效果,鼠标移入可改变为手指的效果. 在此就不加图标了 <label class="file-upload"> <span>上传附件</span> <input type="file" name=""> </label> 在IE8中需要将input透明后还不能完全达到效果,还需要将字体设大一些,撑开input,这是IE自带的兼容问题. .file-upload{ disp

CSS自定义文件上传按钮样式,兼容主流浏览器

1. [代码][HTML]代码 1 <div class="box"> 2 <input type="text" name="copyFile" class="textbox" /> 3 <a href="javascript:void(0);" class="link">浏览</a> 4 <input type="file

文件上传&lt;input type=&quot;file&quot;&gt;样式美化

<div class="fileInput left" style="width:102px;height:34px; background:url(http://images.cnblogs.com/cnblogs_com/dreamback/upFileBtn.png);overflow:hidden;position:relative;"> <input type="file" name="upfile"

美化文件上传按钮

<!DOCTYPE html> <html> <head> <style> .fileInputContainer{ display:block; height:32px; background:url(http://images.cnblogs.com/cnblogs_com/yeminglong/773287/o_1181850.png); position:relative; width: 32px; z-index:4; } .fileInput{

详解jQuery uploadify文件上传插件的使用方法

uploadify这个插件是基于js里面的jquery库写的.结合了ajax和flash,实现了这个多线程上传的功能. 现在最新版为3.2.1. 在线实例 实例中用到的php文件UploaderDemo.php请在页面下方下载 引入文件 <link rel="stylesheet" type="text/css" href="uploadify.css" /> <script type="text/javascript

jQuery uploadify 文件上传

uploadify这个插件是基于js里面的jquery库写的.结合了ajax和flash,实现了这个多线程上传的功能.现在最新版为3.2.1. 在线实例 实例预览 Uploadify 在线实例Demo演示 实例中用到的php文件UploaderDemo.php请在页面下方下载 引入文件 <link rel="stylesheet" type="text/css" href="uploadify.css" /> <script t

文件上传下载总结

文件下载的步骤: jsp省略: servlet代码: 1 public class DownServlet extends HttpServlet{ 2 3 @Override 4 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 5 req.setCharacterEncoding("utf-8"); 6 res