我想在一个div里面可以显示图片和视屏,两者只能出现其一,比如我先选择了一张图片,再选视屏的时候就显示视屏,但不会超出我原来div的大小,如何设置

时间: 2024-03-23 13:39:24 浏览: 15
您可以使用 JavaScript 监听用户选择的文件类型,然后根据文件类型的不同,动态插入相应的 HTML 标签。例如,如果用户选择了视频文件,则可以插入一个 video 标签,如果选择了图片,则可以插入一个 img 标签。 在插入标签之前,您可以先设置 div 的宽度和高度,然后通过 CSS 的 overflow 属性来控制内部元素的显示方式。如果您希望在 div 内部显示滚动条,可以将 overflow 属性设置为 auto 或 scroll,如果您不希望显示滚动条,可以将其设置为 hidden。 下面是一个示例代码,您可以根据自己的需求进行修改: ```html <div id="container" style="width: 500px; height: 500px; overflow: hidden;"></div> <script> const container = document.getElementById('container'); const input = document.createElement('input'); input.type = 'file'; input.accept = 'image/*, video/*'; input.onchange = function() { const file = this.files[0]; const type = file.type.split('/')[0]; if (type === 'image') { const img = document.createElement('img'); img.src = URL.createObjectURL(file); img.style.maxWidth = '100%'; img.onload = function() { const ratio = this.width / this.height; if (ratio > container.clientWidth / container.clientHeight) { this.style.height = '100%'; } else { this.style.width = '100%'; } }; container.innerHTML = ''; container.appendChild(img); } else if (type === 'video') { const video = document.createElement('video'); video.src = URL.createObjectURL(file); video.style.maxWidth = '100%'; video.style.maxHeight = '100%'; video.controls = true; container.innerHTML = ''; container.appendChild(video); } }; container.appendChild(input); </script> ``` 这个示例代码监听了 input 元素的 onchange 事件,当用户选择了文件后,会根据文件类型动态插入 img 或 video 元素,并根据元素的宽高比调整元素的大小,确保不会超出 div 的大小。同时,还设置了元素的最大宽高,以避免图片或视频太大而导致页面样式错乱。

相关推荐

最新推荐

recommend-type

css3实现一个div设置多张背景图片及background-image属性实例演示

主要介绍了css3实现一个div设置多张背景图片及background-image属性,同时对于css3背景渐变也做了详细的解释,水平渐变,左上角渐变等等方式,需要的朋友可以参考下
recommend-type

js+div实现文字滚动和图片切换效果代码

这里演示js+div文字滚动和图片切换代码,为了演示方便,去掉了图片调用,用数字代替了,用时候再加上就可以了,本效果实现了两种效果,Div切换,TAB切换,和文字滚动,鼠标移上后文字停止滚动,两种功能可任意剥离...
recommend-type

基于Vue实现图片在指定区域内移动的思路详解

主要介绍了基于Vue实现图片在指定区域内移动,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

基于Echarts图表在div动态切换时不显示的解决方式

主要介绍了基于Echarts图表在div动态切换时不显示的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

js如何设置在iframe框架中指定div不显示

在iframe框架中指定div不显示,有多种实现方法,接下来与大家分享下使用js的具体实现,感兴趣的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

hive中 的Metastore

Hive中的Metastore是一个关键的组件,它用于存储和管理Hive中的元数据。这些元数据包括表名、列名、表的数据类型、分区信息、表的存储位置等信息。Hive的查询和分析都需要Metastore来管理和访问这些元数据。 Metastore可以使用不同的后端存储来存储元数据,例如MySQL、PostgreSQL、Oracle等关系型数据库,或者Hadoop分布式文件系统中的HDFS。Metastore还提供了API,使得开发人员可以通过编程方式访问元数据。 Metastore的另一个重要功能是跟踪表的版本和历史。当用户对表进行更改时,Metastore会记录这些更改,并且可以让用户回滚到
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。