美化文件上传按钮自定义input file样式

input file的样式不能直接用css来美化,我们可以曲线救国,把input file的透明度降低为0,相当于把这个控件隐藏了,实际上只是透明度为0,还是存在的,然后把div套上去,让div充当file的按钮。

所以这个办法很简单,但是,把input file的透明度降低,连选择文件后的文件名也被隐藏了,这下可怎么办?那就只能用jquery获取file的文件名了。

<!DOCTYPE html>
<html>
<head>
    <title>文件上传file美化</title>
    <style type="text/css">
    *{margin:0;padding: 0;}
        #btn{
            width: 120px;
            height: 45px;
            background: #39f;
            line-height: 45px;
            text-align: center;
            color: #fff;
        }

        #btn .file{
            opacity: 0;
            position: relative;
            top: -56px;
            width: 100%;
            height: 45px;
        }
    </style>
</head>
<body>

<!-- 用一个div来当作美化的上传按钮,file按钮被透明化 -->
<div id="btn">
文件上传
<input type="file" class="file" onclick="daojishi()">
</div>

<!-- 文件名显示区域 -->
<div id="filename"></div>

<script src="https://www.jq22.com/jquery/jquery-3.3.1.js"></script>
<!-- 轮询文件名 -->
<script>
    function daojishi() {
        setInterval("getname()",1000);
    }
</script>

<!-- 获取文件名 -->
<script>
    function getname() {
        var filename = $("#btn .file").val();
        $("#filename").text(filename);
    }
</script>

</body>
</html>

搞定!

作者:TANKING 网站:http://www.likeyunba.com

原文链接:segmentfault.com

上一篇:小程序自定义导航栏 完美解决上下不居中 左右不对称
下一篇:CSS Reset 样式重置

相关推荐

官方社区

扫码加入 JavaScript 社区