美文网首页
scroll-view横向滚动

scroll-view横向滚动

作者: 舒小妮儿 | 来源:发表于2018-07-31 16:48 被阅读1465次

    之前只是用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的宽。

    相关文章

      网友评论

          本文标题:scroll-view横向滚动

          本文链接:https://www.haomeiwen.com/subject/crdhvftx.html