VUE フレームワーク モーダル ウィンドウ切り替えを実現するための Vue3 コンポーネント転送-----VUE フレームワーク

<template>
    <div class="s1">
        <h1>我是App组件</h1>
        <YeYe></YeYe>
    </div>
</template>

<script>
import YeYe from "./components/YeYe.vue";
export default {
    name : "App",
    components : {YeYe}
}
</script>

<style lang="css" scoped>
    .s1{
        width : 500px;
        height : 500px;
        background-color: aquamarine;
    }
</style>

<テンプレート>

    <div class="s1">

        <h1>私はアプリコンポーネントです</h1>

        <イェイェ></イェイェ>

    </div>

</テンプレート>

<スクリプト>

YeYe を「./components/YeYe.vue」からインポートします。

デフォルトのエクスポート {

    名前:「アプリ」、

    コンポーネント: {YeYe}

}

</script>

<style lang="css" スコープ>

    .s1{

        幅: 500ピクセル;

        高さ: 500ピクセル;

        背景色: アクアマリン;

    }

</スタイル>

<template>
    <div class="s2">
        <h1>我是爷爷组件</h1>
        <SunZi></SunZi>
    </div>
</template>

<script>
import SunZi from "./ErZi.vue";
export default {
    name : "YeYe",
    components : {SunZi}
}
</script>

<style lang="css" scoped>
    .s2{
        width : 400px;
        height : 400px;
        background-color: bisque;
    }
</style>

<テンプレート>

    <div class="s2">

        <h1>私はおじいちゃんコンポーネントです</h1>

        <孫子></孫子>

    </div>

</テンプレート>

<スクリプト>

"./ErZi.vue" から SunZi をインポートします。

デフォルトのエクスポート {

    名前:「イェイ」、

    コンポーネント: {SunZi}

}

</script>

<style lang="css" スコープ>

    .s2{

        幅: 400ピクセル;

        高さ: 400ピクセル;

        背景色: 素焼き;

    }

</スタイル>

<template>
    <div class="s3">
        <h1>我是儿子组件</h1>
         <SunZi></SunZi>
    </div>
</template>

<script>
import SunZi from "./SunZi.vue"
export default {
    name : "ErZi",
    components : {SunZi}
}
</script>

<style lang="css" scoped>
    .s3{
        width : 300px;
        height : 300px;
        background-color: chartreuse;
    }
</style>

<テンプレート>

    <div class="s3">

        <h1>私は息子コンポーネントです</h1>

         <孫子></孫子>

    </div>

</テンプレート>

<スクリプト>

"./SunZi.vue" から SunZi をインポートします

デフォルトのエクスポート {

    名前:「エルジ」、

    コンポーネント: {SunZi}

}

</script>

<style lang="css" スコープ>

    .s3{

        幅: 300ピクセル;

        高さ: 300ピクセル;

        背景色: シャルトルーズ;

    }

</スタイル>

<template>
    <div class="s4">
        <h1>我是孙子组件</h1>
        <button @click="isShow = true">弹窗</button>
        <!-- 瞬移 -->
        <Teleport to="body">
            <!-- 遮罩层,整个遮罩层需要瞬移到body下 -->
            <div v-show="isShow" class="cover">
            <!-- 这是一个模态窗口 -->
                <div class="s">
                    我是一个窗口
                    <button @click="isShow = false">关闭窗口</button>
                </div>
            </div>
        </Teleport>
    </div>
</template>

<script>
import {ref} from "vue";
export default {
    name : "SunZi",
    setup(){
        let isShow = ref(false);
        return {isShow};
    }
}
</script>

<style lang="css" scoped>
    .s4{
        width : 200px;
        height : 200px;
        background-color: darkmagenta;
    }
    .s{
        width: 250px;
        height: 250px;
        background-color: cadetblue;
    }
    .cover{
        position: absolute;
        top : 0;bottom: 0;left: 0;right: 0;
        background-color: darkgrey;
        opacity: 90%;
    }
</style>

<テンプレート>

    <div class="s4">

        <h1>私は孫コンポーネントです</h1>

        <button @click="isShow = true">弹窗</button>

        <!--テレポート-->

        <="body"> にテレポートします

            <!-- マスク レイヤー。マスク レイヤー全体をボディにテレポートする必要があります -->

            <div v-show="isShow" class="cover">

            <!-- これはモーダル ウィンドウです -->

                <div class="s">

                    私は窓です

                    <button @click="isShow = false">ウィンドウを閉じる</button>

                </div>

            </div>

        </テレポート>

    </div>

</テンプレート>

<スクリプト>

「vue」から {ref} をインポートします。

デフォルトのエクスポート {

    名前:「孫子」、

    設定(){

        let isShow = ref(false);

        {isShow} を返します。

    }

}

</script>

<style lang="css" スコープ>

    .s4{

        幅: 200ピクセル;

        高さ: 200ピクセル;

        背景色: ダークマゼンタ;

    }

    .s{

        幅: 250ピクセル;

        高さ: 250ピクセル;

        背景色: cadetblue;

    }

    。カバー{

        位置: 絶対;

        上: 0;下: 0;左: 0;右: 0;

        背景色: ダークグレー;

        不透明度: 90%;

    }

</スタイル>

Guess you like

Origin blog.csdn.net/2201_75960169/article/details/135290515