ElementUI响应式布局bug、其中中el-col-sm-0会导致响应式布局失效的解决方法

如下布局,如果将:sm="0"则会导致456始终不显示
下面得响应式布局目的就是希望在sm也就是屏幕宽度在小于992px时将456隐藏,不显示,但是如果这样做就会出现bug

<el-col :xs="24" :sm="24" :md="17" :lg="19" :xl="20">123</el-col>
<el-col :xs="0" :sm="0"  :md="7" :lg="5" :xl="4" >456</el-col>

完整得例子

新建一个demo.html文件内容如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试页面</title>
    <!-- cdn引入ElementUI样式 -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .myclass1 {
            height: 200px;
            background-color: slategray;
        }

        .myclass2 {
            height: 200px;
            background-color: #867090;
        }
    </style>

</head>
<body>
<div id="app">
    <el-row>
        <el-col :xs="24" :sm="24" :md="17" :lg="19" :xl="20" class="myclass1">123</el-col>
        <el-col :xs="0" :sm="1" :md="7" :lg="5" :xl="4" class="myclass2" >456</el-col>
    </el-row>

</div>

<!--cdn引入ElementUI组件必须先引入Vue-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- cdn引入ElementUI组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script type="text/javascript">
    const vm = new Vue({ // 配置对象 options
        // 配置选项(option)
        el: '#app',  // element: 指定用vue来管理页面中的哪个标签区域
        data: {
            screenWidth: 992
        },
    })
</script>
</body>
</html>

会发现456不会显示,虽然宽度有了但是内容456却不显示
在这里插入图片描述

将sm得值设置非0则正常,但是屏幕宽度为sm时会导致456被挤下去如下在这里插入图片描述

解决方法,通过vue得v-if或者v-show

首先、将sm不要设置为0,例如设置为1
其次、为了解决这个sm=1的问题,通过js获取屏幕宽度,当屏幕<992时就不显示即可

当屏幕小于992px时将其隐藏掉

<el-row>
    <el-col :xs="24" :sm="24" :md="17" :lg="19" :xl="20" class="myclass1">123</el-col>
    <el-col :xs="0" :sm="1" :md="7" :lg="5" :xl="4" 
    	class="myclass2" v-show="screenWidth >= 992">456</el-col>
</el-row>

以及通过vue获取屏幕宽度

const vm = new Vue({ // 配置对象 options
    // 配置选项(option)
    el: '#app',  // element: 指定用vue来管理页面中的哪个标签区域
    data: {
        screenWidth: 992
    },
    mounted(){
        const that = this
        window.onresize = () => {
            return (() => {
                window.screenWidth = document.body.clientWidth
                that.screenWidth = window.screenWidth
            })()
        }
    }
})

效果
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗水人间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值