重新定义input[type=file]的样式的例子

在网页制作过程中,有时需要进行上传文件,当然如果需要上传的是图片也是属于文件的。

默认的

<input type=”file” />

的样式如下:

而我们希望使用一张图片代替,点击即可实现上传文件的功能。

希望改成的样式如下:

首先,难点是:

1、不同浏览器的样式表现不同。
2、文字如果只用click这样的方式是不可以的。
3、input 上的文字是没有办法更改的。

实现的想法是:把input 放在图片的上边,弄成透明的,这样在点图片时,实际是点击了input,这样就实现了文件的上传。完全使用css,也可以使用js。

html:

<div class="upload-img">
<input type="file" class="comment-pic-upd" />
<img src="images/upload-pic.png" alt="上传照片" title="">
</div>
css:

.upload-img{
position: relative;
float: right;
margin: 7px 20px 0 0;
overflow: hidden;
}
.upload-img img{
width: 58px;
height: 58px;
 
}
 
.comment-pic-upd{
position: absolute;
top: 0;
left: 0;
 
z-index: 100;
width: 58px;
height: 58px;
 
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
filter:alpha(opacity=0);
-moz-opacity:0;
-khtml-opacity: 0;
opacity:0;
background: none;
border: none;
cursor: pointer;
}

再看一种风格的例子

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>定义input type="file" 的样式</title>
<style type="text/css">
body{ font-size:14px;}
input{ vertical-align:middle; margin:0; padding:0}
.file-box{ position:relative;width:340px}
.txt{ height:22px; border:1px solid #cdcdcd; width:180px;}
.btn{ background-color:#FFF; border:1px solid #CDCDCD;height:24px; width:70px;}
.file{ position:absolute; top:0; right:80px; height:24px; filter:alpha(opacity:0);opacity: 0;width:260px }
</style>
</head>
<body>
<div class="file-box">
  <form action="" method="post" enctype="multipart/form-data">
 <input type='text' name='textfield' id='textfield' class='txt' /> 
 <input type='button' class='btn' value='浏览...' />
    <input type="file" name="fileField" class="file" id="fileField" size="28" onchange="document.getElementById('textfield').value=this.value" />
 <input type="submit" name="submit" class="btn" value="上传" />
  </form>
</div>
</body>
</html>

效果如下

 

例子三,input上传按钮美化

input file上传按钮的美化思路是,先把之前的按钮透明度opacity设置为0,然后,外层用div包裹,就实现了美化功能。

代码如下:

DOM结构:

<a href="javascript:;" class="a-upload">
    <input type="file" name="" id="">点击这里上传文件
</a>

<a href="javascript:;" class="file">选择文件
    <input type="file" name="" id="">
</a>
CSS样式1:

/*a  upload */
.a-upload {
    padding: 4px 10px;
    height: 20px;
    line-height: 20px;
    position: relative;
    cursor: pointer;
    color: #888;
    background: #fafafa;
    border: 1px solid #ddd;
    border-radius: 4px;
    overflow: hidden;
    display: inline-block;
    *display: inline;
    *zoom: 1
}

.a-upload  input {
    position: absolute;
    font-size: 100px;
    right: 0;
    top: 0;
    opacity: 0;
    filter: alpha(opacity=0);
    cursor: pointer
}

.a-upload:hover {
    color: #444;
    background: #eee;
    border-color: #ccc;
    text-decoration: none
}
样式2:

.file {
    position: relative;
    display: inline-block;
    background: #D0EEFF;
    border: 1px solid #99D3F5;
    border-radius: 4px;
    padding: 4px 12px;
    overflow: hidden;
    color: #1E88C7;
    text-decoration: none;
    text-indent: 0;
    line-height: 20px;
}
.file input {
    position: absolute;
    font-size: 100px;
    right: 0;
    top: 0;
    opacity: 0;
}
.file:hover {
    background: #AADFFD;
    border-color: #78C3F3;
    color: #004974;
    text-decoration: none;
}

修改后如下:

 

样式二:

 

时间: 2024-10-01 07:24:27

重新定义input[type=file]的样式的例子的相关文章

java- struts 接收&amp;amp;lt;input type file name=uploadFile[0].file

问题描述 struts 接收<input type file name=uploadFile[0].file java 我在后台action 中应该怎么接收这个,struts框架 解决方案 自己解决了,谢谢各位... 解决方案二: input type="file"更改样式 解决方案三: 可以这样做吗?没这样用过... 解决方案四: 那得要看你用struts2哪种模式了,比如说:如果我要接受这个文件,name=uploadFile[0].file(importFile),那么要对

不使用 input type file 标签 上传文件

问题描述 我调用别人的方法 返回一个文件路径 这个文件要上传到服务器上,input type file value 不能赋值 有什么办法 可以把个文件 上传到服务器上 问题补充:高级java工程师 写道 解决方案 前台得到路径 传给后台,有httpclient去获取不可以?解决方案二:几种js实现的动态多文件上传方式一:事先写好多个input.在点击时才显示.也就是说上传的最大个数是写死了的. html<p><a href='#' onclick='javascript:viewnone

兼容各浏览器的 input type=file 文件域美化

样式:  代码如下 复制代码 .fileInput{width:102px;height:34px; background:url(http://images.cnblogs.com/cnblogs_com/dreamback/upFileBtn.png);overflow:hidden;position:relative;} .upfile{position:absolute;top:-100px;} .upFileBtn{width:102px;height:34px;opacity:0;f

mvc-asp.net MVC怎么给图input type=file传过来的图片加水印

问题描述 asp.net MVC怎么给图input type=file传过来的图片加水印 解决方案 加水印后,在controller里面传到服务器里面保存 解决方案二: 这是controller的代码 public ActionResult AddNewsPic(string id) { if (Request.Files.Count > 0) { if (!string.IsNullOrEmpty(Request.Files[0].FileName)) { Stream fileDataStr

js 获取、清空input type=&quot;file&quot;的值

 本篇文章主要介绍了js 获取.清空input type="file"的值(示例代码) 需要的朋友可以过来参考下,希望对大家有所帮助 上传控件(<input type="file"/>)用于在客户端浏览并上传文件,用户选取的路径可以由value属性获取,但value属性是只读的,不能通过 javascript来赋值,这就使得不能通过value=""语句来清空它.很容易理解为什么只读,如果可以随意赋值的话,那么用户只要打开你的网页, 你

js 获取、清空input type=&quot;file&quot;的值示例代码

 本篇文章主要是对js获取.清空input type="file"的值的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 上传控件基础知识说明:   上传控件(<input type="file"/>)用于在客户端浏览并上传文件,用户选取的路径可以由value属性获取,但value属性是只读的,不能通过javascript来赋值,这就使得不能通过value=""语句来清空它.很容易理解为什么只读,如果可以随意赋值的话,

jQuery动态添加 input type=file的实现代码_jquery

复制代码 代码如下: <form id="fileForm" action="" method="post" enctype="multipart/form-data"> <tr> <td> <input type="file" name="file"><input type="button" id="a

判断多个input type=file是否有已经选择好文件的代码_jquery

表单中有多个<input type="file" name="uploadfile" contentEditable="false" style="width:80%">, 提交表单时需要判断其中至少要有一个input已经选择好文件. 复制代码 代码如下: <input type="file" name="uploadfile" contentEditable=&quo

html js java-如何获取Input type=file 所选择文件的绝对路径

问题描述 如何获取Input type=file 所选择文件的绝对路径 是这样的 现在做的一个项目,页面很简单 左边一个input输入框 可以在里面输入url 右边一个search按钮 当输入框没有输入东西的时候,点击按钮弹出一个上传文件选择的框 所选择的文件的 绝对路径会显示在输入框里 如果输入框有东西 URL是否存在,如果存在 则弹出的上传文件选择框定位在所输入的URL上面 但是现在第一步我就不知道怎么做了,除了ie 别的浏览器选择的文件都只显示文件名 请问有什么办法可以获取到所选择文件的绝