js⾃定义input⽂件上传样式
⽂件上传是我们经常会⽤到的功能,但是原⽣的input样式太丑了,能不能⾃定义⼀个input⽂件上传样式呢?我这⾥写了两种⽅法,form表单提交跟ajax异步提交都没有问题,⾃动上传或者点击上传按钮上传也都没问题先看效果:
代码贴出来:
⽅法1
<!--
⽅法1:
div : 设置宽⾼、overflow:hidden;超出的部分被隐藏
input : 设置层级z-index = 1;设置透明度opacity:0;设置相对定位position:relative;使两个元素重叠
i : 设置层级z-index = 0;(要⽐input⼩)设置相对定位position:relative;使两个元素重叠
利⽤div框出⼤⼩,input在i上⾯但透明度为0,当我们点击i时其实是点击到了input但视觉上我们只看到了i
-->
<h3>⽅法1:</h3>
<form action="upload" method="post" enctype="multipart/form-data">
<!-- 辅助div,框出显⽰内容 -->
<div >
<!-- 实际的选择⽂件input -->
<input onchange="change()" id="file" type="file"
name="file"/>
<!-- 可视图标 -->
<i class="glyphicon glyphicon-open" ></i>
</div>
<!-- ⽂件名 -->
<br/><span id="fileName"></span>
inputtypefile样式<!-- 表单提交按钮 -->
<br/><input id="but_submit" type="submit" value="上传"/>
</form>
<script>
function change() {
/
/回显⽂件名
$("#fileName").text($("#file").val());
}
</script>
⽅法2
<!--
⽅法2:
input : 设置层级display: none; 直接隐藏
i : onclick="ElementById('file2').click();" 图标的click触发input的click
直接隐藏input,设置图标的click触发input的click,从⽽达到我们想要的效果
-->
<h3>⽅法2:</h3>
<form id="uploadForm">
<!-- 实际的选择⽂件input -->
<input onchange="change2()" id="file2" type="file" name="file"/>
<!-- 可视图标 -->
<i class="glyphicon glyphicon-open"
onclick="ElementById('file2').click();"></i>
<!-- ⽂件名 -->
<br/><span id="fileName2"></span>
</form>
<script>
/
/⾃动上传
function change2() {
//回显⽂件名
$("#fileName2").text($("#file2").val());
//执⾏上传
var form = new ElementById("uploadForm"));
$.ajax({
url: ctx + "/rack/upload",
type: "post",
data: form,
processData: false,
contentType: false,
success: function (data) {
console.log(data);
},
error: function (e) {
console.log(e);
}
});
}
</script>
controller
@PostMapping("upload")
public ResultModel<Boolean> upload(MultipartFile file) {
//⽂件名
System.out.OriginalFilename());
return ResultModel.of(true);
}
样式还是丑了⼀点,但这些都不重要,关键是掌握了⽅法再个UI⼩来帮忙调试,就可以做出任何想要的UI效果啦!以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论