小程序 scroll-view组件使用scroll-x + flex布局 子元素无法横向显示问题

问题表现

在学习小程序的view和scroll-view组件时,给view和scroll-view设置相同的样式,只有view内的子元素可以横向展示,scroll-view内的子元素始终是纵向的

wxml

<!-- view组件 -->
<view class="container1">
  <view>A</view>
  <view>B</view>
  <view>C</view>
</view>

<!-- scroll-view组件 -->
<scroll-view class="container1 scroll-container-x" scroll-x>
  <view>A</view>
  <view>B</view>
  <view>C</view>
</scroll-view>

wxss

.container1{
  display: flex;
  justify-content: space-around;
}
.container1 view{
  width: 100px;
  height: 100px;
  text-align: center;
  line-height: 100px;
}
.container1 view:nth-child(1){
  background-color: lightblue;
}
.container1 view:nth-child(2){
  background-color: lightpink;
}
.container1 view:nth-child(3){
  background-color: lightsalmon;
}

在这里插入图片描述

问题原因

scroll-view组件中flex布局不生效

问题解决

解决办法一:通过设置属性让flex布局生效

在scroll-view上添加enable-flex属性
<scroll-view class="container1 scroll-container-x" scroll-x enable-flex>
在这里插入图片描述
后续设置scroll-view的width实现scroll-x效果时,还会遇到一个问题:当设置的scroll-view宽度小于子元素宽度之和,子元素还是会纵向显示,这个问题在下面的方法中有说到,直接跳到➡处

解决办法二:硬改呗 当作没用flex布局来改

子元素纵向展示是因为view是块元素,自占一行,故view设置display:inline-block
在这里插入图片描述
可以横向展示

➡为了实现scroll-x效果,设置scroll-view设置width:100px
在这里插入图片描述
哦 又变成纵向的了 因为宽度不够默认会换行哇 给scroll-view加white-space:nowrap

完整代码

wxml

<!-- view组件 -->
<view class="container1">
  <view>A</view>
  <view>B</view>
  <view>C</view>
</view>

<!-- scroll-view组件 -->
<scroll-view class="container1 scroll-container-x" scroll-x>
  <view>A</view>
  <view>B</view>
  <view>C</view>
</scroll-view>

wxss

.container1{
  display: flex;
  justify-content: space-around;
}
.container1 view{
  width: 100px;
  height: 100px;
  display: inline-block;
  text-align: center;
  line-height: 100px;
}
.container1 view:nth-child(1){
  background-color: lightblue;
}
.container1 view:nth-child(2){
  background-color: lightpink;
}
.container1 view:nth-child(3){
  background-color: lightsalmon;
}
.scroll-container-x{
  width: 120px;
  white-space: nowrap;
}

在这里插入图片描述
效果实现~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值