<view style="display:flex;flex-direction: column;">
<view style="display:flex;flex-direction: column;flex:1; height: 200px;">
<scroll-view scroll-y style="flex: 1;overflow: hidden;">
<view class="card">测试占位1</view>
<view class="card">测试占位2</view>
<view class="card">测试占位3</view>
</scroll-view>
</view>
</view>
这段代码在 iOS 15.4 与 iOS 14.7 上表现不同,如图所示:
请忽略上面样式代码有些不太规范的地方,主要想咨询一下为什么两个iOS版本会有不同的表现,以及iOS15.4是否还有其他场景与历史版本样式表现不同。
其他信息:
- iOS 15.4 微信版本号 8.0.18
- iOS 14.7 微信版本号 8.0.17
经确认是苹果新版本 safari (webkit) 的问题,用以下纯 h5 代码在 safari 下同样可以复现高度塌陷。
https://codepen.io/tidyzq/pen/eYVJZMV
目前观察到该问题需要同时满足设置 css 样式 overflow 和 flex-basis: 0%; ,该问题从微信/小程序层面也无法修复/绕过。
楼主提供的片段之所以复现,是由于 flex 属性存在默认属性:
flex: 1; // 等价于 flex: 1 1 0%; // 等价于 flex-grow: 1; flex-shrink: 1; flex-basis: 0%;
因此,使用 flex: 1; (或其他单个数字如 flex: 5;)皆会导致 flex-basis 被设置为 flex-basis: 0% 进而触发了 safari 的 bug 。
若 flex-basis: 0% 并非预期,则建议将 flex: 1; 修改为 flex: 1 1 auto; 来绕过该问题
问题已复现,可以按照楼上用户提供方案暂时规避一下, 这边排查一下
ios15.4,flex布局子元素的before伪元素无效,连带着子元素的内容一起消失。
因为是在领导的手机上看的,他刚升了ios15.4,我没苹果手机,不好复现给你们看,你们自己测测
ios15.3.1正常,我升级下15.4
__________________________________________________________
问题确实存在,尝试删除外层的view,就正常了。
<view style="display:flex;flex-direction: column;"> <view style="display:flex;flex-direction: column;flex:1; height: 200px;"> <scroll-view scroll-y style="flex: 1;overflow: hidden;"> <view class="card">测试占位1</view> <view class="card">测试占位2</view> <view class="card">测试占位3</view> </scroll-view> </view> </view> 改为 <view style="display:flex;flex-direction: column;flex:1; height: 200px;"> <scroll-view scroll-y style="flex: 1;overflow: hidden;"> <view class="card">测试占位1</view> <view class="card">测试占位2</view> <view class="card">测试占位3</view> </scroll-view> </view>
加个 enable-flex 属性试试