uni-app scroll-view组件 scroll-x属性在pc版无法横向滚动或拖动

uni-app scroll-view组件 scroll-x属性在pc版无法横向滚动或拖动

产品分类 PC开发环境操作系统 PC开发环境操作系统版本号 HBuilderX类型 HBuilderX版本号 浏览器平台 浏览器版本 项目创建方式
uniapp/H5 Windows w10 正式 3.1.22 Chrome 最新 HBuilderX

产品分类:uniapp/H5
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:w10
HBuilderX类型:正式
HBuilderX版本号:3.1.22
浏览器平台:Chrome
浏览器版本:最新
项目创建方式:HBuilderX
App下载地址或H5网址:https://hm.lyy1688.com/dt


示例代码:

<template>
<view>
<view class="ha">
<view class="fr padding margin-right text-white">管理员:{{user.user_name}}</view>
</view>
<view class="co" >
<view class="dt">
<view class="mp">
</view>
/*横向滚动 开始*/
<scroll-view scroll-x="true" class="bg-white gd" [@scroll](/user/scroll)="gscroll" :scroll-left="gscTop">
<view v-for="(g,l) in gds" :key="l" class="relative margin gds" [@tap](/user/tap)="$show(g.id,'gd')" >
<block>
<image :src="g.goods_imgs+'x200.jpg'" style="width:200upx;height: 200upx;"></image>
<view class="bg-white" style="height:40upx;">{{g.goods_name}}</view>
<view class="text-price" style="left:auto;right:0upx;bottom:40rpx;font-size:32rpx;padding: 1upx 12upx;color:#f00;position: absolute;background: rgba(255,255,255,0.65);border-radius:10upx;" >{{g.price}}</view>
</block>
</view>
</scroll-view>
/*横向滚动 结束*/
</view>
<view class="oi">
<scroll-view scroll-y scroll-with-animation style="width:100%;height: 100%;" scroll-left="10">
</scroll-view>  
</view>   
</view>  
</view>  
</template>

<script>
export default {
data() {
return {
spid:5,  
user:uni.getStorageSync('user'),  
upu:this.$upu,  
CustomBar: this.CustomBar,  
upu:this.$upu,  
curl:'hm',                    
lg:uni.getStorageSync('longitude')||103.84,  
lt:uni.getStorageSync('latitude')||30.708513,  
lgo:uni.getStorageSync('longitude')||103.84,  
lto:uni.getStorageSync('latitude')||30.708513,                
marker:[],
gds:[],
gy:[],
os:this.$os,                  
fw:[],
sg:[],
nm:'',  
xgd:1,  
p:1,  
jp:0,  
ss:'',            
tp:'gy',  
imgshow:false,  
pos:false,  
hackReset:true,  
gg_mj:'',  
gg_dj:'',  
gg_xj:'',  
gg_gd:'',  
gg_gf:'',  
gg_bx:'',  
price:'',  
goods_number:'',  
gg_fzs:'',  
gg_fzc:'',  
gg_fzf:'',  
xgg:false,  
pli:10,                   
mdtop:'100',  
gnms:[],
lis:[],
p:1,

gscTop:0  

}
},  
onLoad() {  
this.lism()  
this.getli()  
},  
methods: {  
getli:function(){                 
var that=this  
uni.request({  
url: that.$URL+'/bj/bjog',  
data: {  
uid: that.user.user_id||5,  
tm:this.tm,  
tp:this.tp,  
nm:this.nm||'',       
p:that.p  
},  
success: function (res) {  
console.log(res.data);  
if(that.p>1){  
if(res.data[0])that.lis = that.lis.concat(res.data)  
}else{  
if(res.data[0])that.lis=res.data  
for(var i=0;i<20;i++){  
that.tt +=that.lis[i].goods_name+',';  
}  
uni.setStorageSync('qgs',that.tt)  
}     
}  
});   
},            
gocur:function(url){  
this.curl=url  
},  
gscroll: function(e) {  
this.gscTop = e.detail.scrollTop  
console.log(8)  
},  
}  
}
</script>

<style>
.ha{height:160upx;width: 100%;background-color: #222222;}
.co{height: calc(100vh - 80px) ;width: 100%;}
.dt{width:calc(100vw - 250px);height: 100%;float:left;}
.oi{width:500upx;height: 100%;float:left;}
.mp{width: 100%;height:calc(100vh - 240px);}
/*横向滚动 开始*/
.gd{width: 100%;height:300upx;white-space: nowrap;overflow: hidden;}
.gds{width: 200upx;display: inline-block;overflow: hidden;}
/*横向滚动 结束*/
</style>

更多关于uni-app scroll-view组件 scroll-x属性在pc版无法横向滚动或拖动的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

浏览器暂不支持。scroll-view用的是浏览器原生的滚动。
如果想要在PC端拖动滚动,可以使用模拟滚动的库来实现。

更多关于uni-app scroll-view组件 scroll-x属性在pc版无法横向滚动或拖动的实战教程也可以访问 https://www.itying.com/category-93-b0.html


better-scroll

在PC端Chrome浏览器中,scroll-view组件的横向滚动问题通常由以下几个原因导致:

  1. 容器宽度限制:从代码中看到.gd样式设置了width: 100%,但父容器.dt的宽度为calc(100vw - 250px)。需要确保滚动容器的实际宽度足够容纳所有子项,否则无法触发滚动。

  2. 子项布局问题:虽然.gds设置了display: inline-block,但在PC端可能需要更严格的布局控制。建议添加:

.gd {
  display: flex;
  flex-wrap: nowrap;
  overflow-x: auto;
}
.gds {
  flex-shrink: 0;
}
  1. 事件冲突:PC端的拖动操作可能与触摸事件不兼容。可以尝试在scroll-view上添加:
<scroll-view scroll-x="true" class="bg-white gd" @scroll="gscroll" :scroll-left="gscTop" enable-flex>
  1. 样式覆盖:检查浏览器开发者工具中scroll-view最终渲染的样式,可能被默认样式覆盖。可以尝试强制样式:
.gd ::v-deep .uni-scroll-view-content {
  display: flex;
  width: max-content;
}
回到顶部