一、起因
小程序中有一個頁面,很奇葩,是通過后端傳過來的整段HTML字符串展示內容的,那么我們暫時叫這個頁面為content,傳過來之后,他里面的圖片樣式是不固定的,有的大,有的小,有的有style有的沒有,那我怎么能讓他統一展示成一樣的樣式呢?
二、辦法
思前想后,我覺得還是正則比較靠譜,把content里面所有的img標簽篩選出來,把里面有style的、有width的、有height的、全部刪除掉,最后在統一加上我們想要的樣式,最終代碼如下:
<RichText nodes={content} />
下面是HTML字符串處理過程
let html = content .replace(/<p([\s\w"=\/\.:;]+)((?:(style="[^"]+")))/ig, '<p') .replace(/<p>/ig, '<p style="font-size: 15Px; line-height: 25Px;">') .replace(/<img([\s\w"-=\/\.:;]+)((?:(height="[^"]+")))/ig, '<img$1') .replace(/<img([\s\w"-=\/\.:;]+)((?:(width="[^"]+")))/ig, '<img$1') .replace(/<img([\s\w"-=\/\.:;]+)((?:(style="[^"]+")))/ig, '<img$1') .replace(/<img([\s\w"-=\/\.:;]+)((?:(alt="[^"]+")))/ig, '<img$1') .replace(/<img([\s\w"-=\/\.:;]+)/ig, '<img$1 style="width: 100%; border-radius: 8Px;"');
最終實現了我們想要的樣式統一的效果啦~
三、總結
我有想過直接在less里面取到img,然后改變它的樣式,這種辦法在h5中是可行的,但是在小程序中不起作用!因為在小程序中會是一整個rich-text標簽,里面的內容樣式無法修改。所以采用這種辦法啦~~能夠解決問題。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com