解决input的file类型各浏览器的样式兼容

本文介绍了一种通过CSS样式和HTML结构实现文件上传组件的方法,该方法能够使上传组件在不同浏览器中保持一致且美观的外观。通过将原生file输入框隐藏并使用自定义样式替代,可以解决原生样式不统一的问题。
摘要由CSDN通过智能技术生成

我们都希望做出的上传图片可以是以下这种美观的,但是原生的input file类型,不仅不美观 ,而且各浏览器都显示不同,如何解决呢?

美观的
这里写图片描述

chrome下
这里写图片描述

firefox下
这里写图片描述

IE下
这里写图片描述

一般来说,我们会用“模拟”的方式,先把原生的file类型设置为透明(不是dispaly:none),然后用其它元素模拟出它的样子,file覆盖在之上。“上传”按钮再提交到服务器。

目的是叠加成这种样子,然后把file进行隐藏(红色边的是file类型的input),这样各个浏览器的兼容就都一样了。尽量不要用原生的样式。

这里写图片描述

以下是全部代码

<!doctype html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>无标题文档</title>
    <style>
        .upload-box {
            position: relative;
        }

        form {
            height: 30px;
            position: absolute;
            top: 0px;
            left: 0px;
        }

        input[type="file"] {
            border: 1px solid red;
            width: 480px;
            opacity: 0;
        }

        input[type="submit"] {
            width: 100px;
            height: 30px;
            background: #ddd;
            border: none;
        }

        .upload-choose {
            width: 80px;
            height: 30px;
            background: #eee;
            float: left;
            text-align: center;
            line-height: 30px;
            font-family: "Microsoft YaHei";
            font-size: 14px;
            font-weight: bold;
        }

        .upload-info {
            width: 400px;
            border: 1px solid #eee;
            height: 28px;
            float: left;
        }
    </style>
</head>

<body>

<div class="upload-box">
    <form action="">
        <input type="file"/> <!--原生的file-->
        <input type="submit" value="上传"/> <!--原生的submit-->
    </form>
    <div class="upload">
        <div class="upload-choose">选择文件</div>
        <div class="upload-info"></div>
    </div>
</div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值