利用Javascript来修改file类型input标签的样式

问题描述:

一般情况下,利用file类型的input浏览选择文件,再配合form就可以实现文件的上传功能。实现出的效果如下图:(以csdn写博客上传图片时的浏览框为例)

在实际的开发情况中,为了配合整个网页的风格,也为了让浏览框更美观,需要对file类型的input进行样式修改。但由于input中的“浏览”按钮是由html根据input的type解析出来的,没办法直接使用css对齐进行位置上的修改,这就给开发带来一定的麻烦。为了解决这个问题,我们可以使用javascript配合html来进行处理。

主要思想:

(1)将file类型的input进行隐藏

(2)根据需要放置新的按钮和text型的input

(3)将新放置的按钮与input跟隐藏掉的file型input关联到一起,当点击新设置的按钮时会触发file型input的浏览按钮。并将所选文件名称显示在新设置的text型input上。

实现代码:

(1)HTML设置上传文件的form和input等元素

 

 
<form id="upload-form" action="" method="post" enctype="multipart/form-data" name="form"> <div style="float:left;width:100%"> <input id="fname" type="text" tabindex="1" style="float:left;width:80%;height:40px;border:1px solid #34495E"/><!--用于显示上传文件名的input--> <input id="up_file" name="up_file" type="file" style="display:none" required="required" onchange="document.getElementById('fname').value=this.value"/><!--实际起作用的file型input--> <input type="button" name="submit" style="float:left;width:10%;height:40px;border:1px solid #34495E;background-color:#34495E;color:#ffffff" value="浏览" onclick="select_file();"/><!--用于触发file型input浏览按钮的button--> <input type="submit" name="submit" style="float:left;width:10%;height:40px;border:1px solid #34495E;background-color:#34495E;color:#ffffff" value="上传"/> </div> </form>

 

 

 

 

 

 

 

(2)相关的js

 

 

function select_file(){
        document.getElementById("up_file").click();
	var name = document.getElementById("up_file").value;
}

 

给file型input添加一个onchange事件,当内容发生改变时将其中的值,也就是选择的文件名称传到text型input当中显示出来。给浏览按钮添加onclick事件,当点击新设置的“浏览”按钮时,触发js函数select_file,实际是让file类型的input被点击。从而浏览并选择文件。

 

 

(3)效果:

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用CSS来修改input[type='file']的样式。比如可以设置它的背景颜色、宽度和高度等。例如: ``` input[type='file']{ background-color: red; width: 200px; height: 50px; } ``` 你还可以更改鼠标经过和按下时的样式,例如: ``` input[type='file']:hover{ background-color: blue; } input[type='file']:active{ background-color: green; } ``` 当然你也可以使用JavaScript修改样式. ### 回答2: 在web开发中,input type=file是一个用来上传文件的标签。但是默认的样式非常难看,没有用户体验可言。所以我们可以通过修改样式来增加用户体验。 常见的修改样式方式有: 1. 使用CSS控制input type=file样式 通过CSS设置input[type=file]的样式,这样就可以让其变得更加美观,可以让用户选择文件时更加方便。这里有一些常用的样式: ```css /* 设置宽度和高度 */ input[type=file] { width: 100%; height: 100%; } /* 隐藏默认样式 */ input[type=file] { padding: 0; margin: 0; border: 0; font-size: 0; } /* 调整样式 */ input[type=file] { background-color: #f5f5f5; color: #333; font-size: 16px; padding: 10px; border: 1px solid #ccc; border-radius: 5px; box-shadow: 0px 0px 3px #ccc; } ``` 2. 使用第三方插件或框架 通过使用第三方插件或框架,可以快速地修改input type=file样式,并且不需要写繁琐的CSS代码。常见的插件或框架有: - Dropzone - Fine Uploader - Plupload - Bootstrap File Input 这里以Bootstrap File Input为例,它是一个基于Bootstrap框架的文件上传插件。 使用步骤: 1. 引入相关文件 ```html <!-- 引入Bootstrap样式文件 --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <!-- 引入jQuery库 --> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <!-- 引入Bootstrap File Input插件文件 --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.5.3/css/fileinput.min.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.5.3/js/fileinput.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.5.3/js/locales/zh.min.js"></script> ``` 2. 创建input标签 ```html <input id="input-file" type="file" class="file" data-show-upload="false" data-show-caption="true" data-msg-placeholder="请选择一个文件"> ``` 其中,class="file"是Bootstrap File Input所需要的class名。 3. 初始化插件 ```html <script> $(document).ready(function() { $("#input-file").fileinput({ language: 'zh', theme: 'fa' }); }); </script> ``` 其中,language: 'zh'代表设置插件的语言为中文,theme: 'fa'代表使用FontAwesome图标库。其他参数可以在官方文档中找到。 通过以上两种方式的任意一种,我们都可以快速修改input type=file样式,提升用户体验。 ### 回答3: 在Web开发中,经常需要用户上传文件。而HTML提供了一个用于上传文件的标签,在form元素中添加<input type="file" />即可创建一个上传文件的表单控件。但是这个表单控件默认样式很丑,无法满足我们的需求。这时候我们就需要通过CSS修改样式来提升用户体验。 改变文件上传控件的样式,一般采用的是简单的CSS样式修改,可以使用如下方法: 1. 隐藏input[type="file"] - 隐藏自带样式 在CSS中可以添加如下代码,使用display属性将input[type="file"]隐藏,来取代原生的button和文本input。如下所示: input[type="file"] { display: none; } 然后再自定义一个按钮样式,通过click事件触发input[type="file"],例如下面的样式: .custom-file-upload { border: 1px solid #ccc; display: inline-block; padding: 6px 12px; cursor: pointer; } <input type="file" id="file-upload" /> <label for="file-upload" class="custom-file-upload"> Choose File </label> 2. 完全替换样式 - 能够用CSS设计样式 可以使用css样式,将input[type="file"]替换为一个div,并调整样式。如下所示: <div class="upload-btn-wrapper"> <button class="btn">Upload a file</button> <input type="file" name="myfile" /> </div> .upload-btn-wrapper { position: relative; overflow: hidden; display: inline-block; } .btn { border: 2px solid gray; color: gray; background-color: white; padding: 8px 20px; border-radius: 8px; font-size: 20px; font-weight: bold; } .upload-btn-wrapper input[type=file] { font-size: 80px; position: absolute; left: 0; top: 0; opacity: 0; } 这样就可以使用CSS来自己定义文件上传样式了。 需要注意的是,通过以上的改变样式,不会改变文件上传的功能。文件上传仍然需要后台服务器端实现文件上传功能的代码。另外,在使用上述方法时,最好测试多个浏览器兼容性是否正常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值