input type="flie" 图片上传 预览

隐藏input控件透明度opacity=0的办法,

图片的预览实现原理使用了javascript里的createObjectURL方法。

css部分:

<style type="text/css"> 
    * {
        margin: 0;
        padding: 0;
        list-style: none;
    }
    body {
        position: relative;
    }
    span {
        display: inline-block;
        width : 90px;
        height: 35px;
        line-height: 35px;
        border: 1px solid #ccc;
        border-radius: 5px;
        text-align: center;
    }
    input[type="file"] {
        width: 100px;
        height: 40px;
        position: absolute;
        top: 0; 
        left: 0;
        z-index: 100;
        opacity: 0;
    }
    div { 
        width: 200px;
        height: 100px;
        overflow: hidden;
     }
     div img {
         width: 100%;
         height: 100%;
     }
</style> 
HTML部分

<span>选择文件</span>
    <input type="file" οnchange="handleFiles(this.files,this.nextElementSibling)" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg">
    <div></div>
JavaScript部分

<script>
    function handleFiles(file,obj) {
        //获取当前点击的元素的所有同级元素的html内容
        var con = obj.innerHTML;
        //判断当前点击元素内是否已经存在img图片元素,如果有则先全部清除后再添加,如果没有就直接添加
        if (con.indexOf("img") > 0) {
            //获取obj中的img
            var pic = obj.getElementsByTagName("img")[0];
            //移除该图片
            obj.removeChild(pic);
            //调用添加img图片的函数
            creatImg();
        } else {
            creatImg();
        }
        function creatImg() {
            //创建一个img元素
            var img = document.createElement("img");
            //设置img元素的源文件路径,window.URL.createObjectURL() 方法会根据传入的参数创建一个指向该参数对象的URL. 这个URL的生命仅存在于它被创建的这个文档里
            img.src = window.URL.createObjectURL(file[0]);
            //window.URL.revokeObjectURL() 释放一个通过URL.createObjectURL()创建的对象URL,在图片被显示出来后,我们就不再需要再次使用这个URL了,因此必须要在加载后释放它
            img.onload = function() {
                window.URL.revokeObjectURL(this.src);
            }
            //在当前点击的input元素的div中添加刚刚创建的img图片元素
            obj.appendChild(img);
        }
    }
</script>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: input type="file" 标签样式是无法改变的,因为它的样式是由操作系统的文件选择器控制的。但是你可以使用一些技巧来模拟一个自定义样式的文件选择器,比如使用 CSS 和 JavaScript 来隐藏原生的 input 元素,然后用一个自定义的按钮触发点击事件,再通过 JavaScript 来模拟文件选择器的操作。具体的实现方法可以参考一些开源的文件上传组件库。 ### 回答2: 要改变 input type=file 的样式,可以使用以下两种方法: 1. 使用样式丰富的外部库或框架:可以使用一些流行的CSS库或框架,如Bootstrap、Semantic UI等,它们提供了自定义文件输入按钮样式的选项。你可以使用它们提供的类或样式来覆盖默认的input type=file样式。具体的实现方法可以参考对应文档或示例。 2. 使用自定义样式和JavaScript:使用自定义样式和JavaScript可以更灵活地改变 input type=file 的样式,以下是一种常见的改变样式的方法: - 首先,隐藏默认的文件选择按钮:设置 input[type="file"] 的样式 display:none;,这样文件选择按钮将不会显示出来。 - 然后,在附近添加一个自定义的按钮或元素,例如一个按钮或一个带有图标的div。 - 当点击自定义按钮或元素时,通过 JavaScript 来触发 input type=file 的点击事件,使用户能够选择文件。可以使用下面的代码: (假设 input type=file 的 id 为 "fileInput") ```javascript document.getElementById("customButton").addEventListener("click", function() { document.getElementById("fileInput").click(); }); ``` - 最后,使用 CSS 来美化自定义按钮或元素的样式,例如改变颜色、添加边框等等。 需要注意的是,虽然可以改变 input type=file 的外观样式,但出于安全考虑,浏览器仍然会强制要求用户使用默认的文件选择对话框来选择文件,而不是通过自定义样式的按钮来选择文件。 ### 回答3: 要改变<input type=file>的样式,可以使用以下方法: 1. 使用CSS样式:可以通过对<input type=file>应用CSS样式来自定义其外观。通过设置元素的宽度、高度、边框、背景色等属性,可以改变文件输入框的外观。同时,还可以通过设置文字颜色、字体大小等属性来改变文件输入框中的提示文本。 2. 使用插件或框架:有一些第三方插件或框架提供了更丰富的文件输入框样式定制选项。例如,可以使用jQuery插件如Fileinput等来改变文件输入框的外观。这些插件通常提供了自定义按钮样式、预览功能等扩展功能。 3. 隐藏原始的文件输入框,自定义一个替代的元素:可以使用CSS和JavaScript来隐藏原始的<input type=file>元素,并创建一个自定义的替代元素。例如,可以创建一个按钮或图标,并通过JavaScript与文件输入框进行交互。当用户点击自定义元素时,可以模拟触发文件输入框的点击事件,并实现文件选择功能。 需要注意的是,由于安全限制,无法直接改变<input type=file>元素的样式。然而,通过上述方法可以实现对文件输入框的样式定制或自定义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值