微信小程序从后端获取的图片,展示的时候上下没有完全拼接,有缝隙【已解决】

文章目录

  • 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.mzph.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…

xshell连接虚拟机,更换网络模式:NAT->桥接模式

NAT模式&#xff1a;虚拟机通过宿主机的网络访问外网。优点在于不需要手动配置IP地址和子网掩码&#xff0c;只要宿主机能够访问网络&#xff0c;虚拟机也能够访问。对外部网络而言&#xff0c;它看到的是宿主机的IP地址&#xff0c;而不是虚拟机的IP。但是&#xff0c;宿主机可…

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

Nacos是阿里巴巴开源的一个微服务配置管理和服务发现的解决方案。它提供了动态服务发现、配置管理和 服务管理平台。Nacos的核心功能包括服务发现、配置管理和动态服务管理&#xff0c;使得微服务架构下的服务治理 变得简单高效。 Nacos的设计基于服务注册与发现、配置管理、动…

STM32F103单片机HAL库串口通信卡死问题解决方法

在上篇文章 STM32F103单片机使用STM32CubeMX创建IAR串口工程 中分享了使用cubeMX直接生成串口代码的方法&#xff0c;在测试的过程中无意间发现&#xff0c;串口会出现卡死的问题。 当串口一次性发送十几个数据的时候&#xff0c;串口感觉像卡死了一样&#xff0c;不再接收数据…

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 应用实例注册

硬件设计 | 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/ …

Redis Java 集成到 Spring Boot

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;Redis &#x1f4da;本系列文章为个人学习笔…

麒麟信安推出支持信创PC的新一代云桌面方案,助力政务信创高效安全运维

12月11日&#xff0c;在第二届国家新一代自主安全计算系统产业集群融通生态大会上&#xff0c;麒麟信安发布了支持信创PC的新一代云桌面方案&#xff0c;该方案是基于国际TCI架构实现国产PC机云化纳管在国内的首次发布&#xff0c;并与银河麒麟桌面操作系统、长城国产PC整机实现…

网络原理04

可靠传输&#xff0c;是TCP最核心的特性 可靠传输不是说数据100%传输给接收方了 1&#xff09;发送方发出数据后&#xff0c;能过知道接收方是否收到数据 2&#xff09;一旦发现对方没收到&#xff0c;可以通过一定的方法”补救” 1. 确认应答 发送方&#xff0c;把数据已…

微信小程序5-图片实现点击动作和动态加载同类数据

搜索 微信小程序 “动物觅踪” 观看效果 感谢阅读&#xff0c;初学小白&#xff0c;有错指正。 一、功能描述 a. 原本想通过按钮加载背景图片&#xff0c;来实现一个可以点击的搜索button&#xff0c;但是遇到两个难点&#xff0c;一是按钮大小调整不方便&#xff08;网上搜索…

“切片赋值”创建列表批量操作“新”方法(Python)

[start:end]切片赋值&#xff0c;扩展了list批量增减元素的操作能力。 (笔记模板由python脚本于2024年12月06日 15:07:56创建&#xff0c;本篇笔记适合研python基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;…

Unraid实现相册同步与展示的方案探讨

背景&#xff1a;Unraid作为一个NAS系统&#xff0c;能够实现基本的NAS文件管理功能&#xff0c;但是不提供额外的功能如影音、同步、办公、和内网穿透等&#xff0c;这些在其他的NAS产品如群晖、绿联、威联通等都是提供支持的。然而unraid也有其他方案&#xff0c;即通过特别方…

常见的网络攻击手段

IP 欺骗 IP 是什么? 在网络中&#xff0c;所有的设备都会分配一个地址。这个地址就仿佛小蓝的家地址「多少号多少室」&#xff0c;这个号就是分配给整个子网的&#xff0c;「室」对应的号码即分配给子网中计算机的&#xff0c;这就是网络中的地址。「号」对应的号码为网络号…

印闪网络:阿里云数据库MongoDB版助力金融科技出海企业降本增效

客户背景 上海印闪网络科技有限公司&#xff0c;于2017年1月成立&#xff0c;投资方包括红杉资本等多家国际知名风投公司。公司业务聚焦东南亚普惠金融&#xff0c;常年稳居行业头部。创始团队来自腾讯&#xff0c;中国团队主要由运营、风控及产研人员组成&#xff0c;核心成员…

51c嵌入式~单片机~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的电平信号的MCU怎么通信&#xff1f; 下面这个“电平转换”电路&#xff0c;理解后令人心情愉快。电路设计其实也可以很有趣。 先说一说这个电路的用途&#xff1a;当两个MCU在不同的工作电压下工作&a…