苹果ios13.6以下的低版本中,元素标签压缩/错乱的问题-vue-flex布局

252 阅读1分钟

直接看错误的页面

这是正常的页面

可以明显的看到上面的部分被压缩了.
因为数据安全,打码了,数据区域用红框圈住.
截图没有截全,底部是列表数据
在安卓和新版本的ios上面没有问题,目前测试的13.6以下的ios版本有问题.

定位到的问题是,flex布局和overflow:auto有冲突

display: flex; 
flex-direction: column; 
overflow: auto;

当前页面的根标签使用了这三个属性
解决办法:
不使用flex布局
只留下下面的代码

overflow: auto;

为了验证这个问题,我自己做了一个小测试
这是正常的页面

688e31cfc397178bbf9f012dfd58bb6.jpg 这是使用错误写法的页面(苹果13.6以下的同事的手机)
使用了flex布局和auto;

6726fecd1dc7a4f91f931d6c7191c61.jpg 可以看到顶部的标签被压缩了,复现了问题(个人写法,没有全部按照项目中其他标签的样式写,所以没有全部复现)

这个是页面代码,有兴趣的朋友可以自己测一下,或者按照这种布局,页面根节点使用错误的代码,就能复现.



<template>
  <div class="body">
    <div class="info">
      <div class="left">左边</div>
      <div class="right">右边</div>
    </div>
    <div class="center">
      <div class="value">
        这是值:10000
      </div>
    </div>
    <div class="list">
      <div class="box" v-for="(item,index) in list" :key="index">
        <div class="name">
          {{item.name}}{{index}}
        </div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'test',
  data() {
    return {
      list: [{ name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }, { name: 1 },]
    }
  },
  computed: {
  },
  methods: {
  },
  mounted() {

  },
}
</script>

<style>
.body {
  display: flex;
  flex-direction: column;
  overflow: auto;
  height: 100vh;
}
.info {
  margin: 10px 0px;
  background: #cccccc;
  display: flex;
  justify-content: center;
}
.left,
.right {
  padding: 20px;
  font-size: 25px;
}
.center {
  padding: 40px;
  background: #cccccc;
  margin: 20px 0;
  font-size: 25px;
}
.list {
  flex: 1;
}
.box {
  padding: 20px;
  margin-bottom: 1px;
  background: #cccccc;
}
</style>

html元素,body元素,和id=app的标签都是height:100%