记Vue中appendChild加不上class样式到解决

在尝试使用appendChild实现简单聊天样式时,遇到样式无法生效的问题。原来是scoped属性导致样式隔离,使得样式无法应用。通过理解scoped的工作原理,了解到它会给DOM添加data属性并限制样式作用域。解决方法是避免在组件内使用scoped,或利用CSS Modules等其他方式实现样式隔离。
摘要由CSDN通过智能技术生成

情况复现:

风平日和的一个下午。刚刚转战准备放弃v-if,v-show,v-for复杂绕弯子

准备用appendChild来做一个简单的聊天样式。

结果怎么写样式就是加不上去~人麻了

直接上结论:

如果你遇到了同样的问题,相信你哪有时间看我一步步分析的

结果是:

我拜倒在scoped的脚下🦶

因为我是放在组件里面,scoped将其说白了隔离起来了

然后我相当于在页面中不停的加入了空白的class样式,怎么可能成立嘛!

👉这篇文章很好地说明了原理文章地址

问题解决

  • 首先我怀疑🤨的是 我学的js是假的~

样式在检查元素中很明显看到我已经加上去了。但就是没效果

  • 其次我换个方法:试试jQuery

同样的没效果!!!

  • 当我没啥办法准备放弃的时候

哦豁~柳暗花明~ 突然Vue的scoped!!

原理分析

总结:scoped的渲染规则:(来自参考)

  1. 给HTML的dom节点添加一个不重复的data属性来唯一标识这个dom 元素
  2. 在每句css选择器的末尾(编译后生成的css语句)加一个当前组件的data属性选择器(例如:[data-v-5558831a])来私有化样式

平时我们都知道用scoped来防止污染~

但是一下子没转过弯~吃了基础的亏

哎~献给1024的文章

你可以使用Quasar Framework和PDF.js库来实现在Vue 3读取并在页面上显示PDF文件,并添加可拖动和缩放功能。下面是一个简单的步骤: 1. 安装Quasar Framework和PDF.js库: ```bash npm install quasar npm install pdfjs-dist ``` 2. 在Vue组件引入所需的库和样式: ```vue <template> <div> <div ref="pdfContainer" class="pdf-container"></div> </div> </template> <script> import pdfjsLib from 'pdfjs-dist' export default { mounted() { this.loadPDF() }, methods: { async loadPDF() { const pdfUrl = 'path/to/your/pdf/file.pdf' const container = this.$refs.pdfContainer const loadingTask = pdfjsLib.getDocument(pdfUrl) const pdf = await loadingTask.promise const page = await pdf.getPage(1) const viewport = page.getViewport({ scale: 1 }) const canvas = document.createElement('canvas') canvas.className = 'pdf-canvas' container.appendChild(canvas) const context = canvas.getContext('2d') canvas.width = viewport.width canvas.height = viewport.height const renderContext = { canvasContext: context, viewport: viewport } await page.render(renderContext) } } } </script> <style> .pdf-container { position: relative; } .pdf-canvas { cursor: move; } </style> ``` 3. 然后,在需要显示PDF的地方使用该组件: ```vue <template> <div> <pdf-viewer></pdf-viewer> </div> </template> <script> import PdfViewer from './PdfViewer.vue' export default { components: { PdfViewer } } </script> ``` 以上代码将在页面上显示PDF,并且允许你拖动和缩放。你可以根据需要自定义样式和添加其他功能。注意,这只是一个基本示例,你可能需要根据实际需求进行修改和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值