9***@qq.com
9***@qq.com
  • 发布:2019-04-21 00:57
  • 更新:2021-03-10 20:24
  • 阅读:3919

【报Bug】使用 display: flex; v-show无效

分类:uni-app

详细问题描述

(使用 display: flex; v-show无效
[内容]

重现步骤

<template>  
    <view>  
        <view class="downwarp" v-if="onloadShow">  
            <view class="loader"></view>  
            <view class="text PingFangSC-Medium">  
                加载中...  
            </view>  
        </view>  
    </view>  
</template>  
<script>  
    export default {  
        data() {  
            return {  
                onloadShow: false  
            }  
        },  
        onLoad() {  

        },  
        methods: {  

        }  
    }  
</script>  

<style lang="scss" scoped>  
    .downwarp {  
        display: flex;  
        justify-content: center;  
        align-items: center;  
        padding-top: 30upx;  

        .text {  
            font-size: 26upx;  
            color: gray;  
            padding-left: 20upx;  
        }  

        .loader {  
            border-radius: 50%;  
            width: 50upx;  
            height: 50upx;  
        }  

        .loader {  
            font-size: 10px;  
            position: relative;  
            border-top: 5upx solid rgba(255, 255, 255, 0.2);  
            border-right: 5upx solid rgba(255, 255, 255, 0.2);  
            border-bottom: 5upx solid rgba(255, 255, 255, 0.2);  
            border-left: 5upx solid gray;  
            -webkit-transform: translateZ(0);  
            -ms-transform: translateZ(0);  
            transform: translateZ(0);  
            -webkit-animation: load8 1.1s infinite linear;  
            animation: load8 1.1s infinite linear;  
        }  
    }  

    @keyframes load8 {  
        0% {  
            -webkit-transform: rotate(0deg);  
            transform: rotate(0deg);  
        }  

        100% {  
            -webkit-transform: rotate(360deg);  
            transform: rotate(360deg);  
        }  
    }  
</style>

[结果]
隐藏不了
[期望]

联系方式

[QQ]916879598

2019-04-21 00:57 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com - 小陈

确实,H5平台可以,微信平台会出现这个问题。底层是这样的,v-show的实质就是将元素设置为display:none,然后就是一个css比重的判断,在浏览器端,display:none > display:flex的,所以没问题。但是在微信端,display:none < display:flex。也就是说v-show被flex给覆盖。
解决方案1:不用v-show,用v-if,简单粗暴,但是有时候可能不是想要的需求
解决方案2:不用v-show,写个class为display:!important,然后就是class绑定了(跟v-show一样,通过一个Bool值控制),这样手写的方式是可以达到 display:none > display:flex的

  • i***@126.com

    大佬,能不能把code贴出来看一下,我试了一下不行啊

    2020-02-04 12:56

DCloud_UNI_CHB

DCloud_UNI_CHB

在H5平台、App平台实测,都可以隐藏,建议升级到HBuilderX最新版本重新测试;
若问题依然存在,就上报更详细的信息,比如平台、设备等信息。

nnly055

nnly055

在小程序确实不能隐藏

种子的信仰

种子的信仰

v-show="false" 不生效的原因找到了,

css 权重问题

view[hidden] 权重值 10 + 1
使用全局样式
.u-flex 权重值 10

页面内写样式,
scoped 模式下 会自动生成一串css, 比如 class="indicator data-v-01011e28":
.indicator.data-v-01011e28 权重值 10 + 10 = 20
.container .indicator.data-v-01011e28 权重值 10 + 10 + 10 = 30

去掉 scoped
.indicator 权重值 10
.container .indicator 权重值 10 + 10 = 20

DCloud_UNI_GSQ

DCloud_UNI_GSQ

https://ask.dcloud.net.cn/question/118546

该问题目前已经被锁定, 无法添加新回复