关于富文本编辑图片移动端太大溢出,太小正常处理

2023-11-09

在使用富文本编辑完文章,生成html字符串后,直接给移动端使用。如果图片太大,会出现溢出,图片太小没有问题。

如果简单粗暴给全局样式img添加width 100%,是可以解决溢出问题,但又造成了一个新的问题,就是小图片之前没有溢出也都变成了100%

故需要使用正则依次处理一下html里面的html字符串。

同时,这里需要考虑new Image 第一次加载图片宽度未0的情况,

也要注意没有图片的情况

  function handleHtml(html) {
            // 获取所有的img
            let reg = /<img.*?>/g
            // 获取img里面的图片url
            let srcReg = /\ssrc=['"](.*?)['"]/
            // 获取图片里面的style 替换成100%
            let imgStyleReg = /style=['"](.*?)['"]/

            let imgArr = html.match(reg) || []
            let urlArr = imgArr.map(item => {
                return item.match(srcReg)[1]
            })
            console.log('url', urlArr)
            if (urlArr.length) {
                handleImgArr(urlArr).then(res => {
                    console.log('获取数据', res)
                    let newHtml = html.replace(reg, function () {
                        var args = arguments;
                        let imgText = args[0]
                        let imgUrl = imgText.match(srcReg)[1]
                        return IsOverWitdh(imgUrl, res) ? imgText.replace(imgStyleReg, 'style="width: 100%;" $1') : imgText
                    })
                    test.innerHTML = newHtml
                })
            } else {
                test.innerHTML = html
            }



        }

        function handleImgArr(urlArr) {
            let imgObj = {}
            let len = 0
            return new Promise((resolve, reject) => {
                urlArr.forEach(url => {
                    var image = new Image();
                    image.src = url;
                    image.onload = () => {
                        len++
                        imgObj[url] = image.width
                        if (len === urlArr.length) {
                            resolve(imgObj)
                        }

                    }
                })
            })
        }
        // 判断图片宽度,如果大于650就width:100%,
        function IsOverWitdh(url, urlObj) {
            let width = urlObj[url]
            return width !== undefined ? width > 650 : 0
        }

这样就可以实现大图片不溢出,小图片正常显示

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

关于富文本编辑图片移动端太大溢出,太小正常处理 的相关文章

  • 使用 css 简单地将对象居中,无需修改

    我想使用 CSS 将对象居中 而不需要任何技巧 这可能吗 如何实现 我已经尝试过了 但是我的 p 标签消失了 centered position fixed top 50 left 50 有多种方法可以使元素居中 但这取决于您的元素是什么以
  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • 如何使用javascript将大图像转换为十六进制?

    如果我尝试将图像转换为十六进制 无论我使用哪个函数 我都会收到此错误消息 该图像的大小为 7 MB 19812 毫秒 清理 1401 2 1455 0 gt 1401 2 1455 0 MB 9 9 0 ms 自上次 GC 以来 8 3 m
  • 隐藏 Div 的父级

    我只是想隐藏父divcomments section div class content content green div div div 我试过这个 document getElementById comments section pa
  • 如何纠正流警告:解构(缺少注释)

    我正在编写一个小型 React Native 应用程序 并且正在尝试使用 Flow 但我无法在任何地方真正获得有关它的正确教程 我不断收到错误 destructuring Missing annotation 有关 station 这段代码
  • HTML5 MediaSource 适用于某些 mp4 文件,但不适用于其他文件(相同的编解码器)

    我正在玩 MediaSource API 代码直接取自 Mozilla 的示例页面 https developer mozilla org en US docs Web API MediaSource endOfStream https d
  • Jquery 数据表列总和

    我只是参考一下这个链接 https datatables net examples advanced init footer callback html了解如何获取 jquery 数据表中的列总计 但我已经完成了一半的项目 我在html页面
  • php - 解析html页面

    div divbox div p para1 p p para2 p p para3 p table class table tr td td tr table p para4 p p para5 p 有人可以告诉我如何解析这个 html
  • 如何制作没有 ng-repeat 的模板并使用 Angular-drag-and-drop-lists 将数据传递到 $scope?

    我想用角度拖放列表 https github com marceljuenemann angular drag and drop lists使用我自己的网格模板到所见即所得编辑器 如何构建我自己的 HTML 模板而不需要ng repeat因
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • 为什么我们在打字稿中使用 HTMLInputElement ?

    我们为什么使用 document getElementById ipv as HTMLInputElement value 代替 document getElementById ipv value 功能getElementById返回具有类
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • 图像背景不透明度不影响边框

    如何设置背景不透明度而不影响边框线不透明度 我找到的解决方案没有帮助 div class selected img src assets img image product 1 thumbnail jpg alt product 1 thu
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 在 HTML 下拉列表中有一个滚动条

    我正在寻找一种在 HTML 的下拉列表中添加滚动条的方法 这样如果下拉列表包含的内容超过例如 5 项 将出现滚动条以查看其余项 这是因为我将被迫列出一些大清单 过去几个小时我一直在谷歌上搜索它 但没有运气 它需要适用于 IE8 FF 和 C
  • 表格行未扩展到全宽

    我有一个表格 当我将表格的宽度设置为 100 并将表格行的宽度设置为 100 时 没有任何反应或宽度发生变化 Table Normal position relative display block margin 10px auto pad
  • 对于只触及我的工作表的 Google 表格脚本,收到“此应用程序未经验证”

    我正在编写一个 Google Sheets 脚本 我只想访问与 gs 文件关联的同一电子表格中的数据 似乎我应该有权在自己的电子表格中运行脚本 但是每当我运行一个函数时 我都会得到一个This app isn t verified信息 我该
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la

随机推荐

  • js压缩图片

    1 压缩方法 图片压缩方法 imageHandel imageCompress 若按照指定大小压缩则quality参数无效 按照图片大小压缩会存在误差 author luxuebo Date 2020 04 04 param file Fi
  • OpenStack--部署认证服务keystone

    官方安装文档 https docs openstack org ocata zh CN install guide rdo index html 1 keystone数据库配置 1 创建数据库 root linux host4 mysql
  • pytorch转onnx(支持动态batchsize、shape

    以fcos模型为例 需要输出fpn的5个feature map 需要支持多个尺寸输出 不同batchsize 1 转onnx模型 import argparse import os path as osp import warnings i
  • GPS设备获取的坐标转换成百度或者高德坐标

    JSON文件数据格式如上 用底下的转换工具类即可完成转换 直接上代码 import com fasterxml jackson databind ObjectMapper import com zc smartcity ZtfServerA
  • org.springframework.data.repository.query.QueryByExampleExecutor cannot be resolved.

    SpringBoot 集成JPA提示如下错误信息 The type org springframework data repository query QueryByExampleExecutor cannot be resolved It
  • 多团队协作开发的大型项目Git工作流设计分享

    一 项目简介 文章内容以我自己实际负责的项目前端代码的管理为例 每个公司的git工作流设计应以公司的实际为准 该分享仅做参考 1 项目架构设计 采用基于qiankun的前端微应用 基座应用 业务模块应用 架构设计 项目所管理的供应商达400
  • 一些在前后端用来进行储存数据的地方或者方式

    一些在前后端用来进行储存数据的地方或者方式 文件 可以通过生成新文件的方式将新数据进行储存 这里要考虑到对文件的读写 容量 操作繁琐等等 数据库 属于后端储存数据的地方 如果前端去拿数据的话需要发送HTTP请求 缓存 也叫cache mem
  • VUE tree树双击选中(显示层级结构) 及 vuedraggable插件拖拽功能的实现

    左侧双击选中到中间 显示层级结构 中间可拖拽到右侧 且不可重复拖拽 右侧上下可互相拖拽
  • JS 删除数组中某个元素的几种方式

    目录 第一种 删除最后一个元素 pop 删除 slice 删除 splice 删除 for 删除 length 删除 第二种 删除第一个元素 shift 删除 slice 删除 splice 删除 第三种 删除数组中某个指定下标的元素 sp
  • Opencascade之选择对象

    一 选择模式 Opencascade 通过鼠标选择对象 有多种选择模式 调用AIS InteractiveContext Activate方法进行设置 void SinnView SetSelectMode TopAbs ShapeEnum
  • Vue组件通信方式(8种)

    1 一图认清组件关系名词 父子关系 A与B A与C B与D C与E 兄弟关系 B与C 隔代关系 A与D A与E 非直系亲属 D与E 总结为三大类 父子组件之间通信 兄弟组件之间通信 跨级通信 2 8种通信方式及使用总结 props emit
  • Wireshark—网络分析工具

    Wireshark介绍 WireShark是非常流行的网络封包分析工具 可以截取各种网络数据包 并显示数据包详细信息 常用于开发测试过程中各种问题定位 WireShark软件安装 软件下载路径 wireshark官网 按照系统版本选择下载
  • 电子设计大赛应该准备什么

    电赛的准备 电子设计大赛应该准备什么 基 础 知 识 储 备 基本材料的准备 必 备 技 能 项 目 训 练 Wish 总结 电子设计大赛应该准备什么 2021年的电子设计大赛就要来了 小伙伴是否已经开始紧张的装备呢 下面进入正题 想参加比
  • 记录一次笔试题(R语言)

    记录一次笔试题 R语言 data lt read csv 银行 csv 1 取出李姓 法1 record xingshi c FALSE FALSE FALSE FALSE for i in 1 4 if substring data i
  • mybatis将时间存入数据库后,只有日期,时分秒全是0

    问题原因分析 a 数据库字段类型问题 mysql数据库中 date 为年月日 time为时分秒 datetime为年月日时分秒 pgsql数据库中 Date为年月日 timestamp为年月日时分秒 b mybatis中jdbcType c
  • 【数据分析】数据分析方法(四):多维度拆解分析 & 对比分析

    数据分析方法 四 多维度拆解分析 对比分析 1 多维度拆解分析方法 对于多维度拆解分析方法 要理解两个关键词 维度 拆解 只看数据整体 我们可能注意不到数据内部各个部分构成的差异 如果忽略这种差异进行比较 就有可能导致无法察觉该差异所造成的
  • 冒泡排序,快速排序详解及C++代码详细实现

    冒泡排序 冒泡排序的基本思想是 从后往前 或从前往后 两两比较相邻元素的值 若为逆序 即A i 1 gt A i 则交换它们 直到序列比较完 我们称它为第一趟冒泡 结果是将最小的元素交换到待排序列的第一个位置 或将最大的元素交换到待排序列的
  • CubeMX 5.5 修改HAL库库函数版本

    最初我是按照软件推荐 自动按安装的1 15的 为了和正点原子的例程统一库函数版本 就下载了1 11 但是在工程配置界面始终没有办法修改hal库版本的选择 关闭CubeMX 使用记事本打开工程文件 修改版本号 重新打开工程 库版本修改成功 工
  • Linux学习基础操作和文件管理命令

    Linux学习基础操作和文件管理命令 1 如何解决系统图形出现问题 1 ctrl alt f2 f6 gt gt gt 进入虚拟控制台 ctrl alt f1 gt gt gt 返回图形 2 登陆系统获得root权限 执行init 3 lo
  • 关于富文本编辑图片移动端太大溢出,太小正常处理

    在使用富文本编辑完文章 生成html字符串后 直接给移动端使用 如果图片太大 会出现溢出 图片太小没有问题 如果简单粗暴给全局样式img添加width 100 是可以解决溢出问题 但又造成了一个新的问题 就是小图片之前没有溢出也都变成了10