在使用 Vue3 Teleport 元素时,如果想要修改穿透到的元素的样式,可以尝试以下方法:

  1. 使用 ::v-deep 代替 /deep/ 或者 >>>,因为 /deep/ 和 >>> 已经被废弃了。

  2. 如果使用了 scoped 样式,可以尝试使用 /deep/ 或者 >>>,但是需要注意,这样会导致样式的全局污染。

  3. 在 Teleport 的目标元素上添加 class,然后使用这个 class 来修改样式,这样不会影响其他的元素。

例如:

<template>
  <div>
    <button @click="showDialog = true">打开弹窗</button>
    <teleport to="body">
      <div v-if="showDialog" class="dialog">
        <p>这是弹窗的内容</p>
        <button @click="showDialog = false">关闭弹窗</button>
      </div>
    </teleport>
  </div>
</template>

<style scoped>
.dialog {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 20px;
  background-color: #fff;
  border: 1px solid #ccc;
}
</style>

在这个例子中,我们使用了 scoped 样式,并且在 Teleport 的目标元素上添加了一个 class,然后在样式中使用这个 class 来修改弹窗的样式,这样就不会影响其他的元素了。

vue3 teleport的元素使用deep穿透无法修改样式

原文地址: https://www.cveoy.top/t/topic/baPT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录