input type=file选择图片按钮样式修改与图片预览

2023-11-16

1 背景

在这里插入图片描述
通过上图我们可以看到input type=file按钮的默认样式,非常不美观,如果要自定义该按钮的样式,要如何实现呢?

2 方式1样式

input覆盖整个按钮区域,并且设置完全透明

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            position: relative;
            width: 100px;
            height: 100px;
            line-height: 100px;
            background-color: #ccc;
            text-align: center;
        }
        
        #file {
            width: 100%;
            height: 100%;
            position: absolute;
            left: 0;
            top: 0;
            opacity: 0;
        }
    </style>
</head>
<body>
    <div>
        选取图片
        <input type="file" accept="image/*" id="file">
    </div>
</body>
</html>

3 方式2样式

input隐藏,通过label设置按钮样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            line-height: 100px;
            background-color: #ccc;
            text-align: center;
        }

        #file{
            display: none;
        }
        
        label {
            display: block;
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
    <div>
        <input type="file" accept="image/*" id="file">
        <!-- 将label与input建立关系,点击label等于点击了input -->
        <label for="file">选取图片</label>
    </div>
</body>
</html>

4 图片预览

<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script>
    $(function() {
        // input选取文件后会触发change事件
        $('#file').on('change', function(event) {
            console.log(event.target.files) //选取的文件对象数组

            // 通过FileReader读取文件对象信息
            var reader = new FileReader()
            reader.onload = function(e) {
                var img = new Image()
                img.src = e.target.result //读取结果会转为base64数据格式
                img.style.width = '200px'
                document.body.appendChild(img)
            }
            reader.readAsDataURL(event.target.files[0])
        })
    })
</script>

5 js动态创建input方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .file {
            width: 100px;
            height: 100px;
            line-height: 100px;
            background-color: #ccc;
            text-align: center;
        }
	</style>
</head>
<body>
    <div class="file">
        选取图片
    </div>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script>
	$(function() {
		$('.file').on('click', function() {
                // 动态创建input元素,type为file,样式为隐藏,并追加到body中
                var input = $('<input/>')
                input.prop('type', 'file')
                input.css('display', 'none')
                $('body').append(input)
                // 监听选取文件触发的change事件
                input.on('change', function(event) {
                    console.log(event.target.files) //选取的文件对象数组
                    // 通过FileReader读取文件对象
                    var reader = new FileReader()
                    reader.onload = function(e) {
                        var img = new Image()
                        img.src = e.target.result //读取结果会转为base64数据格式
                        img.style.width = '200px'
                        document.body.appendChild(img)
                    }
                    reader.readAsDataURL(event.target.files[0])
                    // 完成选取文件后,从dom中自我删除
                    input.remove()
                })
                // 自动触发click事件去选取文件
                input.click()
            })
        })
    </script>
</body>
</html>

6 效果展示

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

input type=file选择图片按钮样式修改与图片预览 的相关文章

  • 将 Bootstrap CSS 中的列表居中[重复]

    这个问题在这里已经有答案了 重复报告后编辑 抱歉 我认为建议的重复项实际上可能是重复项 我先尝试了一下 但它对我不起作用 因此出现了一个新问题 再次查看新的建议答案后 我意识到我的问题可能与我正在使用的工具 codepen io 的开箱即用
  • CSS3 变换:IE 中的缩放

    我想使用CSS3属性transform scale div transform scale 0 5 0 5 有没有办法在 Internet Explorer 8 及更低版本中模仿这个 可能与filter或者 JavaScript 解决方案
  • 如何在 Shiny 中动态渲染的 textInput 添加样式元素

    你好堆栈溢出 在我最近提出的问题中 我已经解决了一些与动态渲染 UI 元素相关的主要问题 并在一些了不起的人的帮助下动态创建了观察者 参见此处 动态渲染的 UI 如何在第二次运行时删除旧的反应变量 https stackoverflow c
  • 如何使用 CSS 或 jQuery 设置第一个和最后一个 li 的样式?

    我如何设计第一个 顶级 li和最后一个 顶层 li使用 CSS 还是 jQuery 我正在使用 CSS 设置第一个li但它也是造型第一li在每个中学阶段ul 那么我怎样才能让它只设置样式li其中包含 Main 1 最后一个包含 Main 6
  • CSS 属性选择器类以以下开头但不等于

    我想将 css 应用于以 abcd 开头的所有类 但我不想将该 css 应用于名称为 abcd dontapply 的类 我可以这样做吗 我尝试过的 a class abcd not class abcd dontapply define
  • 如何在 Rails 5 中设置资产管道以使用自定义字体?

    我必须使用自定义字体贾米尔 努里 纳斯塔莱克 http www urdujahan com urdu fonts Jameel 20Noori 20Nastaleeq zip在 Rails 5 应用程序中 我以前从未使用过 Rails 中的
  • 如何从 CSS 选择器中提取类名?

    故事 我目前正在构建一个 ESLint 规则 以警告在 CSS 选择器定位器中使用引导布局导向和角度技术类 目前我在字符串方法中使用简单的子字符串 for var i 0 i lt prohibitedClasses length i if
  • 我应该创建一个块还是一个元素 BEM CSS?

    Bem官网说 创建一个块如果一段代码可以被重用并且它不依赖于正在实现的其他页面组件 创建一个元素如果一段代码在没有父实体 块 的情况下无法单独使用 我有一个 关于部分 块 它的元素依赖于父级并且不能在网站中重复使用 如何根据 bem 这段代
  • 选择子元素但不选择孙元素

    我有以下简化的代码 div p text p div div p text p div div p text p div div p text p div 每当我设置一些值时 content pCSS 文件中的元素 更改也适用于 col1
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h
  • Bootstrap 3 工具提示被包裹在每个空白处?

    升级到 bootstrap 3 后 工具提示会包裹在每个空白处 我相信这是由于网格而发生的 因此 如果我为文本框选择列 col sm 3 并且如果我将工具提示放在右侧 它将包裹所有空白并显示如下 如果我执行 data placement t
  • jQuery 更改 id!

    我是一个 jQuery 菜鸟 一直在尝试添加一个脚本来更改 div onClick 的 id 这里有一个jsfiddle 示例 http jsfiddle net 475ep function accept div scrollwrap a
  • 提升变焦不起作用

    我正在使用带有苹果风格幻灯片画廊的提升缩放功能 一切正常 然而 缩放功能会放大被滑块隐藏的隐藏图像 直到单击缩略图时它们变得可见 启动缩放插件的原始代码是 zoom 01 elevateZoom 我从其他问题中得到了下面的 JavaScri
  • 有什么方法可以声明盒子的大小/部分边框吗?

    有什么方法可以在 CSS 中声明框的大小 部分边框吗 例如一个盒子350px只显示第一个边框底部60px 我认为这可能非常有用 例子 并不真地 但以优雅降级且不需要多余标记的方式实现这种效果非常容易 div width 350px heig
  • 如何使用 XPath 通过 CSS 类查找元素?

    我的网页里有一个div with a class named Test 我怎样才能找到它XPath 该选择器应该可以工作 但如果将其替换为适合的标记 则会更有效 contains class Test 或者 因为我们知道所寻找的元素是div
  • 带条纹的自定义字体 src

    以此作为参考https stripe com docs elements reference stripe elements https stripe com docs elements reference stripe elements
  • 如何创建多列列表?

    我有一个 有序列表 其中包含大约 100 个 列表项 这使得我的页面很长 用户不得不滚动太多 我怎样才能让 UL 显示如下 1 6 11 2 7 12 3 8 13 4 9 14 5 10 15 如果您不关心垂直顺序 而只关心布局 1 2
  • 重置 div 内容的 css 样式

    有一个用 css 样式定制的 html 页面 我无法更改此 css 该页面的一个标签被设计为动态 html 数据的容器 我怎样才能 重置 这个div的css设置 页面中定义的css样式对此div的内容没有影响 我只能访问动态 html 并且
  • 如何在同一个

    中设置两种不同的字体大小

    我有一段 HTML 代码 我一直坚持不下去 我怎样才能将这个文本的第一部分的字体大小设置为 20px 以及后面的文本 br 标签字体大小为 15px 或者 如果我做的完全错误 我该如何做而不将它们放在不同的标签中 p Los Santos
  • 预加载 javascript 和 css 文件

    我目前正在开发一个移动网站 该网站大量使用图像 CSS 和 JavaScript 例如 它使用未压缩的 150KB 的库 我为图像构建了一个预加载器 效果相当好 function loadImages images var sum 0 fo

随机推荐

  • 部分和问题(c/c++)

    给定整数a1 a2 a3 an 判断是否可以从中 选出若干输使得它们的和恰好为k 第一行输入n代表几个数字 第二行输入数字 第三行输入结果 样例 4 1 2 4 7 13 yes 这是一道基础题 对于初学者而言使用两重循环无疑是最便捷的 i
  • 路由器与交换机的基本工作原理

    本文介绍路由器与交换机的基本工作原理 在介绍这之前先来看一下OSI七层工作模型 现在开始解释路由器的作用及其基本工作原理 路由器的作用 1 异种网络互连 比如具有异种子网协议的网络互连 2 子网协议转换 不同子网间包括局域网和广域网之间的协
  • 论文排版:Word加入脚注后,分栏的正文就跑到下一页上去了的解决方案

    在论文排版中 在题目或作者处插入了脚注后 再对正文分栏时 或者先分栏 再在题目或作者处插入脚注 分栏后的正文就跑到下一页上去了 这个问题 我抓狂了很久 终于在搜索若干关键字后得以解决 情况一 稿件格式的要求 1 题目和摘要部分不分栏 正文部
  • 【架构】1.2浅谈架构基础-架构设计的目的

    架构设计的目的 架构设计的目的 软件发展历程 如何识别软件的复杂度 高性能 高可用 可扩展 成本价值 安全因素 架构设计的目的 谈及架构设计 应该IT从业者都很经常听到 然而对于架构设计的目的 可能每个人都有自己的理解 例如 因为现在的系统
  • 毕业设计 opencv图像增强算法系统

    文章目录 0 简介 1 基于直方图均衡化的图像增强 2 基于拉普拉斯算子的图像增强 4 基于伽马变换的图像增强 软件实现效果 最后 0 简介 今天学长向大家分享一个毕业设计项目 毕业设计 opencv图像增强算法系统 项目运行效果 毕业设计
  • 8个不可不知的Mac OS X专用命令行工具

    本文转载至 https segmentfault com a 1190000000509514 OS X的终端下通用很多Unix的工具和脚本 如果从Linux迁移到OS X会发现很多熟悉的命令和脚本工具 其实并没有任何区别 但是OS X也提
  • Clamav杀毒软件源码分析笔记[十]

    Clamav杀毒软件源码分析笔记 十 刺猬 http blog csdn net littlehedgehog 客户端处理 服务端已经把主要的工作都已经处理的差不多了 剩下来也就是服务端等待客户端提出请求 然后根据客户端的请求做相应的工作
  • sql注入绕过技巧

    前言 今天斗胆来整理一下sql注入的各种绕过姿势 以后方便查阅 SQL注入的绕过技巧有很多 具体的绕过技巧需要看具体的环境 而且很多的绕过方法需要有一个实际的环境 最好是你在渗透测试的过程中遇到的环境 否则如果仅仅是自己凭空想 那显然是不靠
  • C语言项目——学生信息管理系统

    文章目录 学生信息管理系统 一 项目思路 1 模块化思想 2 流程图 二 功能框架 1 系统菜单 2 其他功能 三 分布实现 0 学生属性 系统属性 1 学生属性 2 系统属性 1 创建系统 2 绘制菜单 3 按键操作 4 录入信息 5 浏
  • 等精度测频原理--频率计

    等精度测频原理 频率计 本系统采用等精度测频的原理来测量频率 其原理如图2所示 图2 等精度测频原理图 图2中的门控信号是可预置的宽度为Tpr的一个脉冲 CNT1和CNT2是两个可控计数器 标准频率信号从CNT1的时钟输入端FS输入 其频率
  • 常见的几种矩阵分解方式

    项目github地址 bitcarmanlee easy algorithm interview and practice 欢迎大家star 留言 一起学习进步 1 三角分解 LU分解 矩阵的LU分解是将一个矩阵分解为一个下三角矩阵与上三角
  • H5浏览器播放RTMP直播流

  • Python编程快速上手

    题目1 编写一个名为collatz 的函数 它有一个名为number的参数 如果参数是偶数 那么collatz 就打印出number 2 如果number是奇数 collatz 就打印3 number 1 def collatz numbe
  • 面试题 ⑥

    1 Java常见的线程池有哪些 它们的使用场景 newSingleThreadExecutor 创建一个单线程的线程池 此线程池保证所有的执行顺序按照任务的提交顺序执行 FIFO 适合顺序处理文件日志等 newFixedThreadPool
  • easyUI datagrid中checkbox选中事件以及行点击事件,翻页之后还可以选中

    DataGrid其中与选择 勾选相关 DataGrid属性 singleSelect boolean 如果为true 则只允许选择一行 false ctrlSelect boolean 在启用多行选择的时候允许使用Ctrl键 鼠标点击的方式
  • MySQL主从复制(Master-Slave)实践

    转载自 https www cnblogs com gl developer p 6170423 html 参考 https blog csdn net lildkdkdkjf article details 10004663 MySQL数
  • Python的pickle模块详解(包括优缺点及和JSON的区别)

    文章目录 一 pickle是什么 1 pickle的优缺点 2 pickle和JSON的区别 3 pickle的应用总结 二 pickle的用法 1 pickle接口 2 pickle实例 结语 一 pickle是什么 在英语中 pickl
  • 批处理一键关闭危险端口(135 137 138 139 445)预防勒索病毒

    一键关闭危险端口 bat echo off color 1f title 关闭常见的危险端口 echo 正在开启Windows防火墙 echo netsh advfirewall set currentprofile state on gt
  • 备份BOM T-SQL

    转载请注明出处 联系我 t39q 163 com 本人热衷于数据库技术及算法的研究 志同道合之士 欢迎探讨 ALTER PROC dbo proc BOM VersionAutoUpgrade company NVARCHAR 20 Par
  • input type=file选择图片按钮样式修改与图片预览

    1 背景 通过上图我们可以看到input type file按钮的默认样式 非常不美观 如果要自定义该按钮的样式 要如何实现呢 2 方式1样式 input覆盖整个按钮区域 并且设置完全透明