引用antd-vue中的modal组件样式只在当前vue组件生效的解决方案

  如题,前端开发当中,经常会团队多人合作开发,而为了避免页面样式覆盖,除了要遵守公司或团队制定的前端开发标准规范之外,一定要仔细阅读相关框架中所使用组件的API说明。我们开发时为防止页面样式影响其他人的页面,通常都会在.vue文件的style样式上加上scoped声明该样式的作用域,但是antd-vue中的modal组件默认是挂载到body上的,从而导致在xxx.vue文件中style中写的样式无法生效,仔细阅读antd-vue中的modal组件的API说明,如下:

 

通过API说明可知,a-modal默认挂载在body下,所以我们可以通过getContainer来改变modal挂载的HTML节点,使其当前组件内的样式生效,具体方案如下:

 

源代码如下:

<template>
  <div ref="gismap">
    <a-modal
      ref="modal"
      :centered="centered"
      :visible="visible"
      :class="getClass(modalClass)"
      :style="getStyle(modalStyle)"
      :bodyStyle="bodyStyle"
      v-bind="_attrs"
      :getContainer="() => $refs.gismap"
      :mask="false"
      :maskClosable="false"
      v-on="$listeners"
      @ok="handleOk"
      @cancel="handleCancel"
      cancelText="关闭">
        <!-- 内容区域 -->
    </a-modal>
  </div>
</template>

  挂载位置如下图:

  这样,样式就可以在当前组件中生效啦!See You!


PS:生命很短暂,别把那些重要的话憋着,会没有时间说的。

posted @ 2021-08-16 10:53  雪飘无痕(兰陵王)  阅读(2469)  评论(0编辑  收藏  举报