vue h5页面弹窗

div 
<div v-if="isShowQR" class="QRAlert">
    <div class="QR-container">
        <div class="QR-code-bg">
            <div class="title" v-if="isApp">{{selectedItem.title}}APP下载</div>
            <div class="title" v-if="!isApp">{{selectedItem.title}}公众号</div>
            <div class="QR-code">
                <img v-if="isApp" class="QR-image" :src="selectedItem.appUrl">
                <img v-if="!isApp" class="QR-image" :src="selectedItem.weChatUrl">
            </div>
        </div>
        <div class="QR-close" @click="hiddenQR">
            <img class="QR-close-image" src="https://yunsiluguanwang.oss-cn-hangzhou.aliyuncs.com/qr-close.png">
        </div>
    </div>
</div>

script
function showQR(item,app){
    selectedItem.value = item
    isShowQR.value = true
    isApp.value = app
}
function hiddenQR(){
    isShowQR.value = false
}

css样式
.QRAlert{
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.4);
    z-index: 99999;
    .QR-container{
        position: fixed;
        top: 50%;
        left: 50%;
        width: 200px;
        transform: translate(-50%, -50%);
        .QR-code-bg{
            border-radius: 10px;
            background: #C7020B;
            .title{
                width: 100%;
                text-align: center;
                color: #FFFFFF;
                font-size: 17px;
                font-weight: bold;
                padding: 10px;
            }
            .QR-code{
                width: 100%;
                height: 200px;
                .QR-image{
                    width: 100%;
                    height: 100%;
                    border-radius: 10px;
                }
            }
        }
        .QR-close{
            margin-left: 75px;
            margin-top: 20px;
            width: 50px;
            height: 50px;
            .QR-close-image{
                margin-left: 10px;
                margin-top: 10px;
                width: 30px;
                height: 30px;
            }
        }
    }
}

效果

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
感谢您的提问!以下是 Taro Ui Vue3 中防止 H5 安卓机在输入框弹窗键盘时将页面顶上去的一个例子: ``` <template> <div> <AtButton type="primary" @click="toggleModal">弹出模态框</AtButton> <AtModal :isOpened="isOpened" @close="handleClose"> <AtModalHeader>标题</AtModalHeader> <AtModalContent> <div class="input-wrapper"> <input type="text" placeholder="请输入内容" @focus="handleFocus" @blur="handleBlur"> </div> </AtModalContent> <AtModalAction> <Button onClick="handleClose">取消</Button> <Button onClick="handleClose">确定</Button> </AtModalAction> </AtModal> </div> </template> <script> import { defineComponent, onMounted, ref } from 'vue' import { AtButton, AtModal, AtModalHeader, AtModalContent, AtModalAction } from 'taro-ui-vue3' export default defineComponent({ name: 'ModalExample', components: { AtButton, AtModal, AtModalHeader, AtModalContent, AtModalAction, }, setup() { const isOpened = ref(false) const toggleModal = () => { isOpened.value = !isOpened.value } const handleClose = () => { isOpened.value = false } const handleFocus = () => { if (/Android/gi.test(navigator.userAgent)) { setTimeout(() => { document.activeElement.scrollIntoViewIfNeeded() }, 100) } } const handleBlur = () => { if (/Android/gi.test(navigator.userAgent)) { setTimeout(() => { document.activeElement.scrollIntoViewIfNeeded() }, 100) } } onMounted(() => { if (/Android/gi.test(navigator.userAgent)) { const height = window.innerHeight const timer = setInterval(() => { if (window.innerHeight !== height) { document.body.style.height = window.innerHeight + 'px' height = window.innerHeight } }, 100) return () => clearInterval(timer) } }) return { isOpened, toggleModal, handleClose, handleFocus, handleBlur, } }, }) </script> <style scoped> .input-wrapper { padding: 20px; } input { width: 100%; height: 50px; font-size: 18px; border: none; border-bottom: 1px solid #ccc; outline: none; } </style> ``` 这个例子中,我们使用了 Taro Ui Vue3 的 AtModal 组件,同时在输入框的 focus 和 blur 事件中,通过调用 `scrollIntoViewIfNeeded()` 方法,将输入框滚动到可视区域内。同时,在组件挂载时,我们通过监听窗口大小的变化,动态设置 body 的高度,以防止页面出现滚动条。希望这个例子能够帮到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值