日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【uni-app】 rich-text 中图片溢出

發(fā)布時(shí)間:2024/9/19 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【uni-app】 rich-text 中图片溢出 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

  • Hbuilder X 2.7.14.20200618 (不清楚uniapp的版本,用工具版本代替)
  • 微信小程序中預(yù)覽的圖片溢出效果(非期望效果)
  • 期望的效果

分析

rich-text 為已封裝好的組件。向 rich-text傳遞參數(shù)后,由 rich-text進(jìn)行展現(xiàn)(<rich-text :nodes="content|formatRichText"></rich-text>),目前未向開(kāi)發(fā)者提供控制 rich-text展現(xiàn)的內(nèi)容樣式的方法。

代碼1:圖片溢出的代碼(對(duì)應(yīng)圖片溢出效果):

<img style="margin: 0px auto; padding: 0px; display: block; max-width: 800px;" src="https://img-xhpfm.zhongguowangshi.com/News/202008/20200810193928_6784.jpg" />

代碼2:圖片不溢出的代碼(對(duì)應(yīng)期望的效果):

<img style="max-width:100%;height:auto;display:block;margin:0px auto;" src="https://img-xhpfm.zhongguowangshi.com/News/202008/20200810193928_6784.jpg" />

要解決圖片溢出,只需要找到將代碼1轉(zhuǎn)化為代碼2的方法即可。

方法

根據(jù)前面的思路,目前有2個(gè)方法:

  • nodes 為 String 類(lèi)型時(shí),用 replace 方法修改樣式。
  • nodes 為 Array 類(lèi)型時(shí),遍歷Array并修改節(jié)點(diǎn)屬性(找到樣式節(jié)點(diǎn),并進(jìn)行修改)。
  • 因?yàn)橹Ц秾毿〕绦蛑恢С謓odes 為 Array 類(lèi)型的使用方法,所以,方法2更通用一些,可以參考這里。
    關(guān)于方法1的介紹,可以參考這里。下面介紹一下方法1。

    另,下面這樣的方法,在H5中有效:

    /* 在H5 rich-text 控件會(huì)被翻譯為 uni-rich-text */uni-rich-text img {max-width: 100% !important;}

    操作

    1. 先編寫(xiě)修改樣式的方法

    export default {components: {},data() {return {}},onReady() {},methods: {/*** 處理富文本里的圖片寬度自適應(yīng)* 1.去掉img標(biāo)簽里的style、width、height屬性* 2.修改所有style里的width屬性為max-width:100%* 3.img標(biāo)簽添加style屬性:max-width:100%;height:auto* 4.去掉<br/>標(biāo)簽* @param html* @return string*/formatRichText (html) {// 去掉img標(biāo)簽里的style、width、height屬性let newContent= html.replace(/<img[^>]*>/gi,function(match,capture){match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');return match;});// 修改所有style里的width屬性為max-width:100%newContent = newContent.replace(/style="[^"]+"/gi,function(match,capture){match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');return match;});// 去掉<br/>標(biāo)簽newContent = newContent.replace(/<br[^>]*\/>/gi, '');// img標(biāo)簽添加style屬性:max-width:100%;height:autonewContent = newContent.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;margin:0px auto;"');return newContent;}}}

    2.修改樣式的方法

    <rich-text :nodes="formatRichText(content)"></rich-text>

    3.改進(jìn)

    可以封裝成js庫(kù),方便以后使用。

  • richTextUtil.js
  • /*** 處理富文本里的圖片寬度自適應(yīng)* 1.去掉img標(biāo)簽里的style、width、height屬性* 2.修改所有style里的width屬性為max-width:100%* 3.img標(biāo)簽添加style屬性:max-width:100%;height:auto* 4.去掉<br/>標(biāo)簽* @param html* @return string*/ function formatRichText (html) {// 去掉img標(biāo)簽里的style、width、height屬性let newContent= html.replace(/<img[^>]*>/gi,function(match,capture){match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');return match;});// 修改所有style里的width屬性為max-width:100%newContent = newContent.replace(/style="[^"]+"/gi,function(match,capture){match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');return match;});// 去掉<br/>標(biāo)簽newContent = newContent.replace(/<br[^>]*\/>/gi, '');// img標(biāo)簽添加style屬性:max-width:100%;height:autonewContent = newContent.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;margin:0px auto;"');return newContent; }export default {formatRichText, };
  • 引入js庫(kù)
  • import richTextUtil from '@/common/richTextUtil.js';
  • 調(diào)用方法
  • this.content = richTextUtil.formatRichText(res.content);

    rich-text:

    <rich-text :nodes="content"></rich-text>

    參考

    https://blog.csdn.net/qq_37682202/article/details/100522172
    https://www.jb51.net/article/154976.htm
    https://www.jianshu.com/p/b87a0ff0f5b4

    總結(jié)

    以上是生活随笔為你收集整理的【uni-app】 rich-text 中图片溢出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。