Miniaplicativo WeChat: menu pop-up css + função de alternância multilíngue

1. Pontos básicos de conhecimento

(1) Menu pop-up: animação de animação , atributo de transformação
(2) Função de troca de idioma: clique na função de evento catchtap , dados de atributos personalizados- *

2. Perceba o efeito

Exibição de efeito de função de troca de idioma

3. Preste atenção na decomposição

insira a descrição da imagem aqui
insira a descrição da imagem aqui

4. Código fonte do código

<view class="container" id="index">
  
    <view class="content-text" style="margin-top: { 
        { 
        navBtnTop + 38}}px;">
        <text>{
   
   {poster[isType-1].content.name}}</text>
        <text>{
   
   {poster[isType-1].content.des}}</text>
    </view>
    <view class="model-bg" wx:if="{
     
     {isBtnShow}}" catchtap="btnPop"></view>
    <view class="change-language">
        <view class="lang-box">

            <text class="lang-btn" catchtap="btnPop">语言\n切换</text>

            <block wx:if="{
     
     {!isFirstShow}}">
                <view class="box-text {
     
     {isBtnShow ? 'a1':'a10'}}" data-id="1" catchtap="changeLanguage">
                    <text class="lang-text">中文</text>
                </view>
                <view class="box-text {
     
     {isBtnShow ? 'a2':'a20'}}" data-id="2" catchtap="changeLanguage">
                    <text class="lang-text">英文</text>
                </view>
                <view class="box-text {
     
     {isBtnShow ? 'a3':'a30'}}" data-id="3" catchtap="changeLanguage">
                    <text class="lang-text">日语</text>
                </view>
                <view class="box-text {
     
     {isBtnShow ? 'a4':'a40'}}" data-id="4" catchtap="changeLanguage">
                    <text class="lang-text">韩语</text>
                </view>
                <view class="box-text {
     
     {isBtnShow ? 'a5':'a50'}}" data-id="5" catchtap="changeLanguage">
                    <text class="lang-text">德语</text>
                </view>
            </block>

        </view>
    </view>
</view>
.container {
    
    
    position: relative;
    width: 100vw;
    height: auto;
}

text {
    
    
    display: block;
}

/* 模态框 */
.model-bg {
    
    
    width: 100vw;
    height: 100vh;
    position: fixed;
    top: 0;
    left: 0;
    background-color: rgba(0, 0, 0, .5);
    z-index: 999;
}

/* 内容区 */
.content-text {
    
    
    position: relative;
    padding: 20rpx 0;
    text-align: center;
}

/* 按钮菜单 */
.change-language {
    
    
    position: fixed;
    top: 50%;
    right: 20rpx;
    transform: translateY(-50%);
    z-index: 9999;
}

.lang-box {
    
    
    position: relative;
    top: 0;
    right: 0;
}

.lang-btn {
    
    
    position: absolute;
    top: 0;
    right: 0;
    width: 60rpx;
    height: 60rpx;
    color: #fff;
    font-size: 22rpx;
    text-align: center;
    padding: 10rpx;
    border-radius: 15%;
    background-color: #CC463D;
    z-index: 99;
}

.box-text {
    
    
    position: absolute;
    top: 0;
    right: 0;
    z-index: 10;
}

.lang-text {
    
    
    width: 60rpx;
    height: 30rpx;
    color: #fff;
    font-size: 20rpx;
    text-align: center;
    padding: 10rpx;
    border-radius: 8%;
    background-color: #CC463D;
}

/* 菜单动画 */
.a1 {
    
    
    animation: a1 500ms ease-out forwards;
}

@keyframes a1 {
    
    
    0% {
    
    
        transform: translate(0, 0) rotateZ(0deg);
        opacity: 0;
    }

    100% {
    
    
        transform: translate(-15px, -75px) rotateZ(360deg);
        opacity: 1;
    }
}

.a10 {
    
    
    animation: a10 500ms ease-out forwards;
}

@keyframes a10 {
    
    
    0% {
    
    
        transform: translate(-15px, -75px) rotateZ(360deg);
        opacity: 1;
    }

    100% {
    
    
        transform: translate(0, 0) rotateZ(0deg);
        opacity: 0;
    }
}

.a2 {
    
    
    animation: a2 500ms ease-out forwards;
}

@keyframes a2 {
    
    
    0% {
    
    
        transform: translate(0, 0) rotateZ(0deg);
        opacity: 0;
    }

    100% {
    
    
        transform: translate(-65px, -35px) rotateZ(360deg);
        opacity: 1;
    }
}

.a20 {
    
    
    animation: a20 500ms ease-out forwards;
}

@keyframes a20 {
    
    
    0% {
    
    
        transform: translate(-65px, -35px) rotateZ(360deg);
        opacity: 1;
    }

    100% {
    
    
        transform: translate(0, 0) rotateZ(0deg);
        opacity: 0;
    }
}


.a3 {
    
    
    animation: a3 500ms ease-out forwards;
}

@keyframes a3 {
    
    
    0% {
    
    
        transform: translate(0, 0) rotateZ(0deg);
        opacity: 0;
    }

    100% {
    
    
        transform: translate(-95px, 10px) rotateZ(360deg);
        opacity: 1;
    }
}

.a30 {
    
    
    animation: a30 500ms ease-out forwards;
}

@keyframes a30 {
    
    
    0% {
    
    
        transform: translate(-95px, 10px) rotateZ(360deg);
        opacity: 1;
    }

    100% {
    
    
        transform: translate(0, 0) rotateZ(0deg);
        opacity: 0;
    }

}

.a4 {
    
    
    animation: a4 500ms ease-out forwards;
}

@keyframes a4 {
    
    
    0% {
    
    
        transform: translate(0, 0) rotateZ(0deg);
        opacity: 0;
    }

    100% {
    
    
        transform: translate(-65px, 55px) rotateZ(360deg);
        opacity: 1;
    }
}

.a40 {
    
    
    animation: a40 500ms ease-out forwards;
}

@keyframes a40 {
    
    
    0% {
    
    
        transform: translate(-65px, 55px) rotateZ(360deg);
        opacity: 1;
    }

    100% {
    
    
        transform: translate(0, 0) rotateZ(0deg);
        opacity: 0;
    }

}

.a5 {
    
    
    animation: a5 500ms ease-out forwards;
}

@keyframes a5 {
    
    
    0% {
    
    
        transform: translate(0, 0) rotateZ(0deg);
        opacity: 0;
    }

    100% {
    
    
        transform: translate(-15px, 90px) rotateZ(360deg);
        opacity: 1;
    }
}

.a50 {
    
    
    animation: a50 500ms ease-out forwards;
}

@keyframes a50 {
    
    
    0% {
    
    
        transform: translate(-15px, 90px) rotateZ(360deg);
        opacity: 1;
    }

    100% {
    
    
        transform: translate(0, 0) rotateZ(0deg);
        opacity: 0;
    }

}
Page({
    
    
    /**
     * 页面的初始数据
     */
    data: {
    
    
        poster: [
            {
    
    
                type: 1,
                lang: '中文',
                content: {
    
    
                    name: '糖葫芦呀',
                    des: '你好呀,哈哈哈哈,我是糖葫芦'
                }
            },
            {
    
    
                type: 2,
                lang: '英文',
                content: {
    
    
                    name: 'Tomatoes on sticks',
                    des: 'Hello, ha, I am Tomatoes on sticks.'
                }
            },
            {
    
    
                type: 3,
                lang: '日语',
                content: {
    
    
                    name: '砂糖ひょうたんか',
                    des: 'どうも、はは、私は糖ひょうたんです'
                }
            },
            {
    
    
                type: 4,
                lang: '韩语',
                content: {
    
    
                    name: '탕후루야',
                    des: '안녕하세요. 하하하하. 저는 설탕박이에요.'
                }
            },
            {
    
    
                type: 5,
                lang: '德语',
                content: {
    
    
                    name: 'Tomaten auf Stäbchen',
                    des: 'Hallo, ha, ich bin "Tomaten auf den Stöcken".'
                }
            }
        ],
        isType: 1, //当前语言类型
        isFirstShow: true, //是否第一次进入(这个是为了阻止第一次进入页面菜单执行往回收的动画)
        isBtnShow: null, //是否已经弹出
    },

    onLoad: function (options) {
    
    
        app.onNavLoading();
        console.log('我是你当前选择的语言类型', this.data.isType)
    },

    //打开切换菜单
    btnPop() {
    
    
        this.setData({
    
    
            isFirstShow: false,
            isBtnShow: !this.data.isBtnShow
        })
    },

    //点击切换语言
    changeLanguage(e){
    
    
        console.log(e.currentTarget.dataset.id);
        var num = e.currentTarget.dataset.id;
        this.setData({
    
    
            isType: num
        })
        this.btnPop();
    }
})

5. Escreva no final

Os exercícios acima são alguns do meu projeto ~, se você achar útil, lembre-se de curtir + seguir + marcar, vamos trabalhar duro juntos na estrada do front-end!
Link de referência do efeito de animação do menu: https://blog.csdn.net/qq_48085286/article/details/122400611

Publicar -> WeChat Mini Program: menu pop-up css + função de troca de vários idiomas WeChat Mini Program: menu pop-up css + função de troca de vários idiomas WeChat Mini Program: menu pop-up css + função de troca de vários idiomas
Publicar função de alternância multilíngue Miniaplicativo WeChat: menu pop-up css + função de alternância multilíngue Miniaplicativo WeChat: menu pop-up css + função de alternância multilíngue Release função de alternância multilíngue Miniaplicativo WeChat: menu pop-up css + função de alternância multilíngue Solte -> miniaplicativo WeChat: menu pop-up css + função de comutação multilíngue Miniaplicativo WeChat: menu pop-up css + função de comutação multilíngue Miniaplicativo WeChat: menu pop-up css + liberação -> miniaplicativo WeChat: menu pop-up css + comutação multilíngue miniaplicativo WeChat de função: menu pop-up css + função de comutação multilíngue Miniaplicativo WeChat: menu pop-up css + liberação da função de comutação multilíngue -> miniaplicativo WeChat Programa: menu pop-up css + função de comutação multilíngue Miniaplicativo Wechat: menu pop-up css + função de comutação multilíngue Programa pequeno: menu pop-up css + função de comutação multilíngue Programa pequeno WeChat: menu pop-up css + função de comutação multilíngue Release -> Programa pequeno WeChat: pop-up css menu up + função de comutação multilíngue Pequeno programa WeChat: menu pop-up css + função de comutação multilíngue WeChat Mini Program: menu pop-up css + função de comutação multilíngue Release -> WeChat Mini Program: menu pop-up css + função de comutação multilíngue WeChat Mini Program: menu pop-up css + função de comutação multilíngue WeChat Mini Program: menu pop-up css + função de comutação multilíngue Function Distribution -> WeChat applet: menu pop-up css + multi -função de troca de idioma Applet WeChat: menu pop-up css + função de troca multilíngue Miniaplicativo WeChat: menu pop-up css + função de troca multilínguePublicar -> WeChat Mini Program: menu pop-up css + função de troca de vários idiomas WeChat Mini Program: menu pop-up css + função de troca de vários idiomas WeChat Mini Program: menu pop-up css + função de troca de vários idiomas Publicar função de alternância multilíngue Miniaplicativo WeChat: menu pop-up css + função de alternância multilíngue Miniaplicativo WeChat: menu pop-up css + função de alternância multilíngue

Acho que você gosta

Origin blog.csdn.net/weixin_44120523/article/details/129378010
Recomendado
Clasificación