微信小程序從后端獲取的圖片,展示的時候上下沒有完全拼接,有縫隙【已解決】

文章目錄

  • 1、index.wxml
  • 2、index.js
  • 3、detail.detail
      • 為什么 `.rich-text-style` 樣式可以生效?
        • 1. `<rich-text>` 組件的特殊性
        • 2. 類選擇器的作用范圍
        • 3. 樣式優先級
        • 4. `line-height: 0` 的作用
        • 5. 為什么直接使用 `rich-text` 選擇器無效?
      • 總結

在這里插入圖片描述

上下兩張圖片,中間有一條白色縫隙,但是客戶想要完全拼接。于是就開始分析代碼。

1、index.wxml

<view class="marketing-materials-pannel-wrap"><view class="marketing-materials-pannel-box"><view class="marketing-materials-title-box"><view class="marketing-materials-item-title-box {{ currentIndex === index ? 'active-class': '' }}" wx:for="{{ detail.detailList }}" wx:key="item" data-index="{{ index }}" catch:tap="handleTitleClick">{{ item.active }}</view></view><view class="marketing-materials-item-value-box"><!-- <rich-text nodes="{{ detail.detailList[currentIndex].value || '' }}" /> --><rich-text nodes="{{ detail.detail }}" class="rich-text-style"/></view></view>
</view>

2、index.js

const properties = {detail: Object
}
const data = {currentIndex: 0
}
const observers = {}
const methodMap = {handleTitleClick(e) {const { index: currentIndex } = e?.currentTarget?.datasetthis.setData({ currentIndex })}
}
const customMethodMap = {}
const methods = {...customMethodMap,...methodMap
}
const behaviors = {}
const relations = {}
const externalClasses = []
const pageLifetimes = {show() {},hide() {},resize() {}
}
const lifetimes = {created() {},attached() {// 組件掛載到頁面時調用console.log("Component attached, detail =", this.properties.detail);console.log("Component attached, detail.detail =", this.properties.detail.detail);},ready() {},moved() {},detached() {}
}Component({ properties, data, observers, methods, pageLifetimes, lifetimes, behaviors, relations, externalClasses })

3、detail.detail

<div><img src="https://www.crossbiog.com/product-detail/旭包鮮保鮮膜_01_642681.jpg" style="max-width:100%;" contenteditable="false" /><p><img src="https://www.crossbiog.com/product-detail/旭包鮮保鮮膜_02_311369.jpg" style="max-width:100%;" contenteditable="false" /><img src="https://www.crossbiog.com/product-detail/旭包鮮保鮮膜_03_680880.jpg" style="max-width:100%;" contenteditable="false" /><img src="https://www.crossbiog.com/product-detail/旭包鮮保鮮膜_04_504903.jpg" style="max-width:100%;" contenteditable="false" /><img src="https://www.crossbiog.com/product-detail/旭包鮮保鮮膜_05_785733.jpg" style="max-width:100%;" contenteditable="false" /><img src="https://www.crossbiog.com/product-detail/旭包鮮保鮮膜_06_138233.jpg" style="max-width:100%;" contenteditable="false" /><img src="https://www.crossbiog.com/product-detail/旭包鮮保鮮膜_07_715648.jpg" style="max-width:100%;" contenteditable="false" /><img src="https://www.crossbiog.com/product-detail/旭包鮮保鮮膜_08_281797.jpg" style="max-width:100%;" contenteditable="false" /><img src="https://www.crossbiog.com/product-detail/旭包鮮保鮮膜_09_119610.jpg" style="max-width:100%;" contenteditable="false" /><img src="https://www.crossbiog.com/product-detail/旭包鮮保鮮膜_10_517697.jpg" style="max-width:100%;" contenteditable="false" /><img src="https://www.crossbiog.com/product-detail/旭包鮮保鮮膜_11_238141.jpg" style="max-width:100%;" contenteditable="false" /></p>
</div>

為什么 .rich-text-style 樣式可以生效?

你提到通過給 <rich-text> 組件添加一個自定義類名 class="rich-text-style",并且使用 .rich-text-style 選擇器來設置樣式后,圖片之間的空隙問題得到了解決。這背后的原因涉及到微信小程序中樣式的優先級和作用范圍。

1. <rich-text> 組件的特殊性

<rich-text> 是微信小程序中的一個內置組件,用于渲染 HTML 字符串。它的內部內容是通過 Shadow DOM 渲染的,這意味著外部樣式文件中的樣式默認情況下不會直接影響到 <rich-text> 內部的內容。然而,微信小程序提供了一種機制,允許你通過為 <rich-text> 添加自定義類名來影響其內部內容的樣式。

2. 類選擇器的作用范圍

當你為 <rich-text> 組件添加一個自定義類名(如 class="rich-text-style"),并使用該類選擇器(如 .rich-text-style)來設置樣式時,微信小程序會將這些樣式應用到 <rich-text> 的內部內容中。這是因為微信小程序的樣式系統會將帶有自定義類名的 <rich-text> 視為一個特殊的容器,允許你通過類選擇器來影響其內部元素的樣式。

<!-- WXML -->
<rich-text nodes="{{ detail.detail }}" class="rich-text-style"></rich-text>
/* WXSS */
.rich-text-style {line-height: 0;
}

在這種情況下,.rich-text-style 樣式不僅會應用到 <rich-text> 組件本身,還會傳遞給其內部的 HTML 元素(如 imgp 等),從而有效地解決了圖片之間的空隙問題。

3. 樣式優先級

使用類選擇器(如 .rich-text-style)通常比標簽選擇器(如 rich-text)具有更高的優先級。因此,即使有其他全局樣式或默認樣式存在,.rich-text-style 中的樣式也會優先應用,確保 line-height: 0 等樣式能夠生效。

4. line-height: 0 的作用

line-height: 0 是一種常見的技巧,用于消除行內元素(如 img)之間的空隙。默認情況下,img 標簽是行內元素,瀏覽器會在每個行內元素之間插入一個空白字符(類似空格),這會導致圖片之間出現空隙。通過將 line-height 設置為 0,你可以有效地消除這些空白字符,從而使圖片完全拼接在一起。

5. 為什么直接使用 rich-text 選擇器無效?

如果你嘗試直接使用 rich-text 選擇器來設置樣式,可能會遇到樣式不生效的問題。原因如下:

  • Shadow DOM 的隔離性<rich-text> 組件的內部內容是通過 Shadow DOM 渲染的,默認情況下外部樣式文件中的樣式無法直接影響到其內部元素。
  • 樣式優先級:如果沒有使用類選擇器,可能某些默認樣式或全局樣式會覆蓋你設置的樣式,導致 line-height: 0 等樣式無法生效。

因此,使用自定義類名(如 class="rich-text-style")并通過類選擇器(如 .rich-text-style)來設置樣式是一種更可靠的方式,可以確保樣式能夠正確應用到 <rich-text> 的內部內容中。

總結

  • <rich-text> 組件的內部內容是通過 Shadow DOM 渲染的,默認情況下外部樣式無法直接影響其內部元素。
  • 通過為 <rich-text> 添加自定義類名(如 class="rich-text-style",并使用類選擇器(如 .rich-text-style)來設置樣式,可以有效地將樣式應用到 <rich-text> 的內部內容中。
  • line-height: 0 是一種常見的技巧,用于消除行內元素之間的空隙,從而使圖片完全拼接在一起。
  • 類選擇器通常比標簽選擇器具有更高的優先級,因此使用類選擇器可以確保樣式優先應用。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62784.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62784.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62784.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux-apache虛擬主機配置筆記

一、 安裝apache 有需要的話&#xff0c;可以去查看具體的apache的安裝apache安裝https://blog.csdn.net/m0_68472908/article/details/139348739?spm1001.2014.3001.5501 都可以使用本地yum源搭建本地yum源搭建https://blog.csdn.net/m0_68472908/article/details/14385692…

常用vim命令行-linux008

Vim 是一款功能強大的文本編輯器&#xff0c;廣泛應用于編程、配置文件編輯以及日常文本處理。Vim 在其命令行模式下提供了豐富的操作命令&#xff0c;這些命令能夠大幅提升編輯效率。以下是 Vim 中常用的命令及操作的總結&#xff0c;覆蓋了 Vim 中的基本操作、查找、替換、文…

xshell連接虛擬機,更換網絡模式:NAT->橋接模式

NAT模式&#xff1a;虛擬機通過宿主機的網絡訪問外網。優點在于不需要手動配置IP地址和子網掩碼&#xff0c;只要宿主機能夠訪問網絡&#xff0c;虛擬機也能夠訪問。對外部網絡而言&#xff0c;它看到的是宿主機的IP地址&#xff0c;而不是虛擬機的IP。但是&#xff0c;宿主機可…

【Spring Boot集成Shiro指南】

Spring Boot集成Shiro指南 一、添加Maven依賴 首先&#xff0c;需要在Spring Boot項目的pom.xml文件中添加Shiro相關的依賴。例如&#xff1a; <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><ve…

SpringBoot使用Nacos進行application.yml配置管理

Nacos是阿里巴巴開源的一個微服務配置管理和服務發現的解決方案。它提供了動態服務發現、配置管理和 服務管理平臺。Nacos的核心功能包括服務發現、配置管理和動態服務管理&#xff0c;使得微服務架構下的服務治理 變得簡單高效。 Nacos的設計基于服務注冊與發現、配置管理、動…

Electron-Vite 項目搭建(Vue)

前提條件 Node.js: 確保已安裝 Node.js 版本 18 或更高版本 (推薦使用最新穩定版)。Vite: 確保 Vite 版本為 4.0 或以上。包管理工具: 推薦使用 pnpm&#xff0c;但也可以使用 npm 或 yarn。 安裝 Electron-Vite 首先&#xff0c;在項目中安裝 electron-vite 作為開發依賴&a…

STM32F103單片機HAL庫串口通信卡死問題解決方法

在上篇文章 STM32F103單片機使用STM32CubeMX創建IAR串口工程 中分享了使用cubeMX直接生成串口代碼的方法&#xff0c;在測試的過程中無意間發現&#xff0c;串口會出現卡死的問題。 當串口一次性發送十幾個數據的時候&#xff0c;串口感覺像卡死了一樣&#xff0c;不再接收數據…

【Neo4J】neo4j docker容器下的備份與恢復

文章目錄 一. 官網說明1. 操作說明2. 注意事項 二. docker 容器化操作1. 導出&#xff08;備份&#xff09;停止容器執行備份 2. 導入&#xff08;恢復&#xff09;停止容器(如果未停止)執行導入 3. 啟動容器 一. 官網說明 https://neo4j.com/docs/operations-manual/current/…

selenium自動爬蟲工具

一、介紹selenium爬蟲工具 selenium 是一個自動化測試工具&#xff0c;可以用來進行 web 自動化測試、爬蟲 selenium 本質是通過驅動瀏覽器&#xff0c;完全模擬瀏覽器的操作&#xff0c;比如跳轉、輸入、點擊、下拉等&#xff0c;來拿到網頁渲染之后的結果&#xff0c;可支持…

Unity開發數字孿生項目

前言&#xff1a;記錄下自己用Unity開發數字孿生項目&#xff0c;所用到的知識點、功能點以及對項目認知總結&#xff0c;當然還有開發過程中所遇到的坑。此篇博客也是會隨時進行更新。 &#x1f60a;屏幕前看到此片文章的開發者們在此類項目開發過程中少走些彎路&#xff0c;希…

node利用路由搭建web實例

npm init npm i express body-parser cookie-parser 封裝web實例 搭建路由 導出web 應用實例注冊

量化交易系統開發-實時行情自動化交易-8.25.真格(澎博財經旗下)平臺

19年創業做過一年的量化交易但沒有成功&#xff0c;作為交易系統的開發人員積累了一些經驗&#xff0c;最近想重新研究交易系統&#xff0c;一邊整理一邊寫出來一些思考供大家參考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下來會對于真格&#xff08;澎博財經…

QT JSON文件解析

參考博客 https://blog.csdn.net/cpp_learner/article/details/118421096 1 打開文件&#xff0c;讀取全部內容 QFile file("../Json/js.json"); if (!file.open(QFile::ReadOnly | QFile::Text)) {qDebug() << "cant open error!";return; }// 讀…

面試常見-Java 原生實現常見數據結構

Java 原生實現常見數據結構 文章目錄 Java 原生實現常見數據結構一、引言二、數組&#xff08;Array&#xff09;&#xff08;一&#xff09;概念&#xff08;二&#xff09;代碼實現 三、鏈表&#xff08;Linked List&#xff09;&#xff08;一&#xff09;概念&#xff08;二…

1. 機器學習基本知識(5)——練習題(參考答案)

20.&#x1f517;本章代碼筆記&#x1f4d3;鏈接&#xff08;需要&#x1fa9c;&#xff09;&#xff1a;&#xff08;01_the_machine_learning_landscape.ipynb - Colab (google.com)&#xff09; 如果你不想通過上面的官方網址下載本章的筆記&#xff0c;還可以在本篇博文的…

通常一個 Xml 映射文件,都會寫一個 Dao 接口與之對應, 請問,這個 Dao 接口的工作原理是什么?Dao 接口里的方法, 參數不同時,方法能重載嗎?

Dao 接口 即 Mapper 接口 。接口 的 全 限 名 &#xff0c;就是 映 射 文 件 中 的 namespace 的值 &#xff1b; 接口 的 方 法 名 &#xff0c; 就 是 映 射 文 件 中 Mapper 的 Statement 的 id 值&#xff1b; 接 口 方 法 內 的 參數 &#xff0c; 就 是 傳 遞 給 sql 的參…

硬件設計 | Altium Designer軟件PCB規則設置

基于Altium Designer&#xff08;24.9.1&#xff09;版本 嘉立創PCB工藝加工能力范圍說明-嘉立創PCB打樣專業工廠-線路板打樣 規則參考-嘉立創 注意事項 1.每次設置完規則參數都要點擊應用保存 2.每次創建PCB&#xff0c;都要設置好參數 3.可以設置默認規則&#xff0c;將…

WebDAV服務不能上傳大文件,文件超過50M報錯[0x800700DF]怎么辦?

這個問題需要分別從服務端和客戶端解決。 1.Windows客戶端 解除50M文件限制&#xff0c;Windows訪問Webdav服務時&#xff0c;大于50M文件提示錯誤[錯誤:0x800700DF] 部署了webdav&#xff0c;Windows10映射網絡磁盤&#xff0c;傳輸文件超過大約50MB的文件會彈出“0x800700…

安全基礎學習-keil調試匯編代碼

初始目的是為了通過匯編編寫CRC功能。 但是基礎為0&#xff0c;所以目前從搭建工程開始記錄。 大佬繞路。 &#xff08;一&#xff09;創建項目 1. 新建項目 打開 Keil uVision。選擇 Project -> New uVision Project 創建一個新項目。選擇你的目標設備&#xff08;如 AR…

安裝qt 5.15.2筆記

撰文是2024年12月 最終實現了 1、用梯子下載了離線包5.14.2&#xff0c;最后沒用 2、用內地鏡像在線安裝5.15.2&#xff0c;3分鐘裝完 正文開始&#xff0c;qt官方簡稱官方。 官方包官方自5.15.X起&#xff0c;不再提供的exe/run安裝包https://download.qt.io/archive/qt/ …