scroll-view的横向滚动

本文分享了在使用scroll-view实现横向滚动时遇到的问题及解决方案,包括如何利用display:inline-block和white-space:nowrap属性,以及添加左右渐变修饰来美化界面。
部署运行你感兴趣的模型镜像

本来以为实现一个横向滚动的view很简单,但是实际上还是有个小坑的。因为scroll-view本身的display:flex不生效。

scroll-view的内层view元素需要:

display: inline-block

scroll-view的外层元素需要:

white-space: nowrap

使得内部组件不换行。

再加上一些左右空行的渐变修饰,使得一个简单的横向滚动元素比较美观。

wxml:

<view class="skill-sequence-panel-content-wrapper"> 
    <!--左边虚化-->
    <view class="hide-content-box hide-content-box-left"></view>
    <!--右边虚化-->
    <view class="hide-content-box hide-content-box-right"></view>
    <!--横向滚动-->
    <scroll-view class="skill-sequence-panel-content" scroll-x>
        <view class="skill-sequence-skill-wrapper"
            wx:for="{{sequence}}" wx:key="{{index}}"
        >
            ...
        </view>
    </scroll-view>
</view>

wxss:

/*scroll-view外层*/
.skill-sequence-panel-content-wrapper{
  position: relative;
  height: 55px;
  white-space:nowrap;
  padding: 2px 10px;
}
/*左右渐变遮罩*/
.hide-content-box{
  position:absolute;
  top:0;
  height: 100%;
  width:32px;
  z-index: 2;
}
.hide-content-box-left{
  left:0;
  background-image: linear-gradient(to left,rgba(255,255,255,0) ,#f3f3f3 60%);
}
.hide-content-box-right{
  right:0;
  background-image: linear-gradient(to right,rgba(255,255,255,0) ,#f3f3f3 60%);
}
/*scroll-view本身*/
.skill-sequence-panel-content{
  min-width:100%;
}
/*scroll-view内层*/
.skill-sequence-skill-wrapper{
  margin-left: 2px;
  display: inline-block;
}
/*设置空白以保持美观*/
.skill-sequence-panel-content .skill-sequence-skill-wrapper:first-child{
  margin-left: 18px;  
}
.skill-sequence-panel-content .skill-sequence-skill-wrapper:last-child{
  margin-right: 16px;  
}

效果如图:

 

  

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

在不同场景下,Scroll - View实现横向滚动的方法如下: #### 微信小程序(uniApp) -微信小程序的uniApp框架中,实现横向滚动可在`scroll - view`标签中添加`scroll - x="true"`属性。例如: ```html <scroll-view scroll-x="true" class="scroll-x x" :scroll-left='scrollLeft' :scroll-with-animation="scrollAnimation" :show-scrollbar="false" :scroll-into-view="seqToView"> <view class="week-list"> <view class="week-item" :class="weekIndex === index ? 'week-item-active' : 'week-item-default'" v-for="(item, index) in weekDayList" :key="index" :id="'seq-' + index" @click="weekClick(index)">{{item}}</view> </view> </scroll-view> ``` 通过此代码,可以创建横向滚动的`scroll - view`区域,其中包含一系列动态生成的元素,每个元素具备点击事件处理逻辑。另外,还可以在`onLoad`生命周期函数中添加滚动至选中序号位置的逻辑: ```javascript onLoad() { // 滚动至选中序号位置 this.seqToView = 'seq-' + this.weekIndex } ``` 同时,可以实现点击元素滚动到页面中间的功能,代码如下: ```javascript // 将点击元素移动到中间 moveTo(index) { const query = uni.createSelectorQuery().in(this) query .selectAll(`.week-item`) .boundingClientRect(rect => { this.scrollLeft = rect[index].left + rect[index].width / 2 - (this.width1 - this.documentWidth) / 2 - rect[0].left }).exec() }, weekClick(index) { this.topBack() this.moveTo(index) this.weekIndex = index } ``` 这样,当点击元素时,该元素会滚动到页面中间位置 [^1]。 #### 普通小程序场景 在普通小程序场景(如示例中的`index.wxml`),同样是在`scroll - view`标签添加`scroll - x`属性来实现横向滚动: ```html <scroll-view class="myScoll" scroll-x> <view class="row">1</view> <view class="row">2</view> <view class="row">3</view> <view class="row">4</view> <view class="row">5</view> <view class="row">6</view> <view class="row">7</view> <view class="row">8</view> </scroll-view> ``` 此代码创建了一个包含多个元素的横向滚动区域,每个元素显示一个数字 [^2]。 #### uni - app 通用场景 在uni - app中,实现横向滚动的代码如下: ```html <view> <scroll-view class="scroll-view" scroll-x="true" @scroll="scroll" scroll-left="100%" @scrolltolower="scrolltolower"> <view class="item" v-for="(item,index) in ListTab" :key="index"> {{item.name}} </view> </scroll-view> </view> ``` 这里的`scroll - x="true"`属性使`scroll - view`支持横向滚动,并且添加了滚动事件`@scroll`和滚动到底部事件`@scrolltolower`的监听 [^3]。 #### uni - app 另一种场景 还有一种uni - app实现横向滚动的布局代码: ```html <scroll-view :scroll-x="true" class="scrollview-box"> <block v-for="item in list" :key="item"> <view class="item"> <image src="/static/logo.png" class="cover" mode="aspectFill"></image> <text class="name">{{item}}</text> </view> </block> </scroll-view> ``` 该代码通过`v - for`指令动态生成多个包含图片和文本的元素,利用`scroll - x`属性实现横向滚动 [^4]。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值