美文网首页Vue
vue实现将某个dom元素或组件挂载到根节点

vue实现将某个dom元素或组件挂载到根节点

作者: 糖小羊儿 | 来源:发表于2021-01-06 08:35 被阅读0次

在写手机端的时候经常用到tab,tab切换一般都是transition滑动的,如果此时我们用position:fixed定位会发现,元素定位并不是我们想象中的相对浏览器定位,这是因为fixed定位会被拥有transition属性的元素影响。

为了结果这个问题,我们需要将元素变成相对于浏览器定位,这个时候我们就要将这个需要定位的dom元素挂载到根节点下,实现方式如下


1.vue2.0的实现方式

1.1 将某个.vue组件挂载到根节点

import hello from "@/components/HelloWorld.vue";

mounted(){

    this.appendCompToRoot(hello);

},
appendCompToRoot(component) { 

    //component 参数为组件名

      var instance = new Vue({

        el: document.createElement("div"),

        render: h => h(component)

      });

      document.body.appendChild(instance.$el);

}

1.2 将某个dom元素挂载到根节点

 <div class="home">    

        <h1>home</h1>   

         <div id="mountDiv" ref="mountDiv">      

                <img src="logo.png" alt />   

         </div> 

 </div> 

 mounted() {

    this.appendDomToRoot(document.querySelector("#mountDiv"), "#container");

 },

appendDomToRoot(el, selector) {

    //el 为要操作的dom元素,selector为要插入的根节点的选择器,为空的话,直接插入到body中 

      var container;

      if (selector) {

        container = document.querySelector(selector);

      }

      if (!container) {

        container = document.body;

      }

      container.appendChild(el);

    },


2.vue3.0的实现方式

只需要将想要dom放入到teleport标签中即可,这个是vue3的新特性,挺好用的

<teleport to="#app">

      <div id="mountDiv" ref="mountDiv">

            <img src="logo.png" alt />

      </div>

</teleport>

相关文章

  • vue实现将某个dom元素或组件挂载到根节点

    在写手机端的时候经常用到tab,tab切换一般都是transition滑动的,如果此时我们用position:fi...

  • 了解vue3.x新特性

    1.teleport 将某个dom元素挂载到其他节点

  • Vue3新特性:内置组件teleport

    Vue3内置组件teleport 将teleport包裹的元素移动到某个DOM节点下有两个参数to - strin...

  • vue3之 根组件 v-once v-html

    1.vue3 只需要挂在一个根组件就可以在根组件内使用vue语法,不要把行内元素挂载到vue例如 2. v-onc...

  • Vue 组件

    全局组件引入 局部组件引入 ref获取dom节点、获取组件引用 ref在html元素获取的是dom节点ref在组件...

  • vue下使用jqwidgets组件混合开发

    jqxgrid组件下拉表头过滤自定义方案 主要提供一个在vue框架下操作dom节点,并且dom节点是vue组件生产...

  • vue起步(4)之组件

    vue组件:组件主要是扩展了HTML元素,使dom元素更加灵活,慢慢深入会发现组件是vue构建项目所必备的。全局组件:

  • ref转发到DOM元素

    Vue 为DOM元素添加ref属性 如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件...

  • 19.ref获取DOM元素和组件

    1.ref获取vue中的DOM元素和组件:

  • vue组件传值详解

    全局组件VS局部组件 1.全局组件全局可调用,可在一个或多个挂在了Vue实例的DOM节点内使用该组件。 2.局部组...

网友评论

    本文标题:vue实现将某个dom元素或组件挂载到根节点

    本文链接:https://www.haomeiwen.com/subject/tpaioktx.html