之前只是用sroll-view实现纵向滚动,没发现横向滚动实现起来需要注意的一些问题,所以现在记录,也算为时不晚吧。我的需求是横向滚动,里面显示一组带图片文字的按钮,点击收集formID。
wxml文件:
<scroll-view class='scrollContainer' scroll-x>
<form report-submit='true' bindsubmit='onClickingRecommandItem' data-id="{{item.id}}" wx:for="{{recommand_list}}" wx:key="{{recIndex}}">
<button class='recommandItemBtn' form-type='submit' hover-class='none'>
<image class='recommandItemImg' src="{{item.img}}"></image>
<view class='recommandItemText' >{{item.name}}</view>
</button>
</form>
</scroll-view>
wxss文件:
.scrollContainer {
width: 100%;
height: 234rpx;
border-top: 1rpx solid #EF639F;
border-bottom: 1rpx solid #EF639F;
background-color: #EEE;
}
.recommandItemBtn {
display: flex;
flex-direction: column;
align-items: center;
margin-left: 30rpx;
margin-right: 0;
padding-left: 0;
padding-right: 0;
width: 140rpx;
height: 234rpx;
line-height: 1;
border-radius: 0;
background-color: rgba(0, 0, 0, 0);
}
.recommandItemBtn::after {
display: none;
}
.recommandItemImg {
width: 130rpx;
height: 130rpx;
margin-top: 30rpx;
border-radius: 10rpx;
}
.recommandItemText {
color: black;
font-size: 24rpx;
margin: 20rpx 0 30rpx 0;
text-align: center;
width: 140rpx;
height: 24rpx;
line-height: 24rpx;
}
发现:recommandItemBtn是竖向排列,效果如下图1:
图1
此时我给scrollContainer新增:
.scrollContainer {
display: flex;
flex-direction: row;
white-space: nowrap;
}
还是无效,scroll-view并没有横向滚动,内部的recommandItemBtn仍然是竖向排列。
观察属性控制区域:发现scroll-view的display默认block。另外社区中 Scroll-View 组件的scroll-x属性不起作用 给出了解决方案。所以,我决定在我的recommandItemBtn外层包一层view作为scroll-view的最外层子元素,此时代码修改量最小。
最终的wxml文件改为:
<scroll-view class='scrollContainer' scroll-x>
<view class='itemBg' wx:for="{{recommand_list}}" wx:key="{{recIndex}}">
<form report-submit='true' bindsubmit='onClickingRecommandItem' data-id="{{item.id}}" wx:for="{{recommand_list}}" wx:key="{{recIndex}}">
<button class='recommandItemBtn' form-type='submit' hover-class='none'>
<image class='recommandItemImg' src="{{item.img}}"></image>
<view class='recommandItemText' >{{item.name}}</view>
</button>
</form>
</view>
</scroll-view>
最终的wxss文件改为:
.scrollContainer {
width: 100%;
height: 234rpx;
border-top: 1rpx solid #EF639F;
border-bottom: 1rpx solid #EF639F;
white-space: nowrap;
background-color: #EEE;
}
.itemBg {
display: inline-block;
margin-left: 30rpx;
width: 140rpx;
height: 234rpx;
}
.recommandItemBtn {
/*其余属性一致,此处略写,只改margin-left*/
margin-left: 0;
}
...
效果如下图2所示:
图2
至此:横向滚动实现。纵向滚动时没有因为子元素都是竖向排列,所以一直没注意过这些细节问题如:scroll-view不支持flex,默认block; 子元素需要设置display为inline-block。所以还是需要多实践多踩坑多记录,掌握的东西才不仅限于文档所介绍的部分,也能避免以后再次被文档没写明的细节问题所坑。
总结:关于scroll-view及横向滚动条件:
1、scroll-view不支持flex,默认block;
2、scroll-view设置scroll-x width: 100%; white-space: nowrap;
3、子元素设置display: inline-block;
4、内部元素内容宽度超出scroll-view的宽。
网友评论