input file美化

在我们开发中经常有input flie的使用但是input flie 又丑又烂每个浏览器的样式又不同, 我们可以使用css进行美化废话不多说上代码

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;
}

修改后如下:

enter image description here

样式二:

enter image description here

美化后显示文件名

上面美化,把默认显示的文件名也给隐藏掉了,那么如何显示文件名称呢?没关系,我们可以用jquery来获取文件的文件名。

我们可以写个change事件

$(".a-upload").on("change","input[type='file']",function(){
    var filePath=$(this).val();
    if(filePath.indexOf("jpg")!=-1 || filePath.indexOf("png")!=-1){
        $(".fileerrorTip").html("").hide();
        var arr=filePath.split('\\');
        var fileName=arr[arr.length-1];
        $(".showFileName").html(fileName);
    }else{
        $(".showFileName").html("");
        $(".fileerrorTip").html("您未上传文件,或者您上传文件类型有误!").show();
        return false 
    }
})

HTML5的 input:file上传类型控制

一、input:file属性

属性值有以下几个比较常用:

accept:表示可以选择的文件MIME类型,多个MIME类型用英文逗号分开,常用的MIME类型见下表。

multiple:是否可以选择多个文件,多个文件时其value值为第一个文件的虚拟路径。

1、accept

只能选择png和gif图片

<input id="fileId1" type="file" accept="image/png,image/gif" name="file" />

2、multiple

多文件上传

<input id="fileId2" type="file" multiple="multiple" name="file" />

3、常用MIME类型

后缀名       MIME名称
*.3gpp    audio/3gpp, video/3gpp
*.ac3    audio/ac3
*.asf       allpication/vnd.ms-asf
*.au           audio/basic
*.css           text/css
*.csv           text/csv
*.doc    application/msword    
*.dot    application/msword    
*.dtd    application/xml-dtd    
*.dwg    image/vnd.dwg    
*.dxf      image/vnd.dxf
*.gif            image/gif    
*.htm    text/html    
*.html    text/html    
*.jp2            image/jp2    
*.jpe       image/jpeg
*.jpeg    image/jpeg
*.jpg          image/jpeg    
*.js       text/javascript, application/javascript    
*.json    application/json    
*.mp2    audio/mpeg, video/mpeg    
*.mp3    audio/mpeg    
*.mp4    audio/mp4, video/mp4    
*.mpeg    video/mpeg    
*.mpg    video/mpeg    
*.mpp    application/vnd.ms-project    
*.ogg    application/ogg, audio/ogg    
*.pdf    application/pdf    
*.png    image/png    
*.pot    application/vnd.ms-powerpoint    
*.pps    application/vnd.ms-powerpoint    
*.ppt    application/vnd.ms-powerpoint    
*.rtf            application/rtf, text/rtf    
*.svf           image/vnd.svf    
*.tif         image/tiff    
*.tiff       image/tiff    
*.txt           text/plain    
*.wdb    application/vnd.ms-works    
*.wps    application/vnd.ms-works    
*.xhtml    application/xhtml+xml    
*.xlc      application/vnd.ms-excel    
*.xlm    application/vnd.ms-excel    
*.xls           application/vnd.ms-excel    
*.xlt      application/vnd.ms-excel    
*.xlw      application/vnd.ms-excel    
*.xml    text/xml, application/xml    
*.zip            aplication/zip    
*.xlsx     application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

二、样式美化

请看博客:css input[type=file] 样式美化,input上传按钮美化 http://www.haorooms.com/post/css_input_uploadmh

三、AJAX上传文件

在说到ajax上传文件,之前的文章也有说过(详见:JS学习32:html5拖拽图片批量ajax无刷新进度上传)。ajax上传的时候,需要获得input:file选择的文件(可能为多个文件),获取其文件列表为:

// input标签的files属性
document.querySelector("#fileId").files
// 返回的是一个文件列表数组

获得的文件列表,然后遍历插入到表单数据当中。即:

// 获得上传文件DOM对象
var oFiles = document.querySelector("#fileId");


// 实例化一个表单数据对象
var formData = new FormData();



// 遍历图片文件列表,插入到表单数据中
for (var i = 0, file; file = oFiles[i]; i++) {
    // 文件名称,文件对象
    formData.append(file.name, file);
}

获得表单数据之后,就可以用ajax的POST上传。

// 实例化一个AJAX对象
var xhr = new XMLHttpRequest();
xhr.onload = function() {
    alert("上传成功!");
}
xhr.open("POST", "upload.php", true);

// 发送表单数据
xhr.send(formData);

上传到服务器之后,获取到文件列表为:

Array
(
    [jpg_jpg] => Array
        (
            [name] => jpg.jpg
            [type] => image/jpeg
            [tmp_name] => D:\xampp\tmp\phpA595.tmp
            [error] => 0
            [size] => 133363
        )

    [png_png] => Array
        (
            [name] => png.png
            [type] => image/png
            [tmp_name] => D:\xampp\tmp\phpA5A6.tmp
            [error] => 0
            [size] => 1214628
        )

)







### 回答1: CSS可以用来美化input file样式,具体方法如下: 1. 隐藏默认的input file样式 ```css input[type="file"] { display: none; } ``` 2. 创建一个自定义的按钮样式 ```css .custom-file-upload { border: 1px solid #ccc; display: inline-block; padding: 6px 12px; cursor: pointer; } ``` 3. 将自定义按钮和input file关联起来 ```html <label for="file-upload" class="custom-file-upload"> 选择文件 </label> <input id="file-upload" type="file"/> ``` 这样就可以实现一个简单的input file样式美化了。当然,还可以根据需求进行更加复杂的样式设计。 ### 回答2: 在Web开发中,我们经常使用input file标签来让用户上传文件。然而,由于input file的样式比较简单单调,我们往往需要用CSS美化样式,使其更加符合网站的视觉风格,以增强用户的体验。在以下的回答中,我将介绍几种常见的CSS input file样式美化方法。 1. 纯CSS样式美化 在这种方法中,我们通过CSS样式对input file标签进行美化。一般来说,我们需要通过input[type=file]这个CSS选择器来选中input file标签。然后,我们可以通过设置样式来改变这个标签的外观,例如修改背景颜色,设置文字样式,以及添加边框、阴影等效果。 2. 借助JavaScript库实现 除了纯CSS样式美化,我们还可以借钩JavaScript库来实现input file样式的美化。比如,利用jQuery的filestyle插件,我们可以在input file标签的旁边添加一个按钮,使得用户点击按钮后弹出文件选择框。这样在视觉效果上会更加美观,用户操作也更加方便。 3. 页面元素替换 在这种方法中,我们可以将input file标签替换成其他更符合页面风格的元素,并设置对应的事件处理函数。例如,我们可以通过一个div元素来替代input file标签,当用户点击这个div时,触发input file的点击事件,从而弹出文件选择框。接着,我们可以通过CSS样式来让div元素看起来像自己设计的按钮或图标,从而实现input file样式的美化。 总之,通过CSS input file样式美化,我们可以提高用户的使用体验和页面的视觉效果。无论是使用纯CSS的方式、借助JavaScript库实现,还是进行页面元素替换,我们都需要尽量保证美化后的样式与页面整体视觉风格相符,使得整个网站看起来更加统一、美观。 ### 回答3: CSS Input File样式美化是一种通过CSS美化HTML的文件输入元素的方法。通常,HTML文件输入元素的默认样式是单调和无聊的。美化它们的样式既能够增强页面的可视性,也能够提高用户体验。在这里,我们将介绍几种常见的CSS Input File样式美化的方法。 1. 使用伪类选择器:可以通过给文件输入元素添加伪类选择器来美化它们的样式。例如,通过添加 ::before 和 ::after 伪类选择器,我们可以为文件输入元素添加图标和文本来让它看起来更加有吸引力和易于使用。 2. 改变字体颜色和背景颜色:可以通过改变文件输入元素的字体和背景颜色来使其看起来更加有吸引力。这样可以使其更加显眼和易于使用。 3. 使用CSS框架:也可以使用CSS框架来美化文件输入元素,框架通常包含现成的文件输入样式。Bootstrap和Foundation等CSS框架目前是最受欢迎的。 4. 自定义CSS样式表:可以自定义CSS样式表来美化文件输入元素。通过调整文件输入元素的边框,背景颜色,颜色,字体等属性,可以轻松地制作美观且实用的样式。 在进行CSS Input File样式美化时,要注意遵循通用CSS最佳实践,避免过度使用样式。同时要确保文件输入元素的有效性,并遵循HTML标准。切勿使用外部插件进行文件输入元素的美化,这会增加额外的代码和安全漏洞。总之,好的文件输入文件样式应该是简单,易于使用和眼睛友好的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值