如何在Quasar(Vue3)中实现Teleport组件全屏显示?
问题根源有两点:
- Quasar的
q-header和q-footer默认自带较高的z-index(比如q-header默认z-index为999),你设置的modal z-index:1优先级不够,所以盖不住它们 position:absolute是相对于最近的定位父元素(此处为#q-app)定位,换成position:fixed才能基于视口实现真正全屏
直接修改组件样式即可解决:
<template> <teleport to="body"> <!-- 推荐teleport到body,避免受#q-app内部布局影响 --> <div class="modal"> <h1>This is a modal</h1> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Beatae ipsa laboriosam vero natus ut rerum quaerat, saepe praesentium tempore et hic velit odio nemo minus labore quam ullam quod architecto? </p> </div> </teleport> </template> <script setup lang="ts"></script> <style lang="scss"> .modal { background: beige; padding: 10px; position: fixed; /* 替换为fixed定位 */ left: 0; top: 0; width: 100vw; /* 用vw确保占满视口宽度 */ height: 100vh; /* 用vh确保占满视口高度 */ z-index: 1000; /* 设置比Quasar布局组件更高的z-index */ } </style>
如果坚持要teleport到#q-app,只要保证z-index足够高(比如1000)+ 使用fixed定位,同样能解决问题。
内容的提问来源于stack exchange,提问作者city
相关产品推荐
相关产品推荐

