1***@qq.com
1***@qq.com
  • 发布:2026-01-30 09:09
  • 更新:2026-01-30 11:10
  • 阅读:22

scroll-view标签,css高度如果设置calc计算属性,在真机上运行,就算内容未超出高度,也可以滑动,web运行不会,设置具体像素也不会

分类:HBuilderX
uni-scroll-view {  
  width: 100%;  
  height: calc(100% - 100px);  
}
2026-01-30 09:09 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com (作者)

  .scroll-area{  
                width: 100%;  
                height: calc(100% - .rpx2px(70)[]);  
                display: flex;  
            }  
            uni-scroll-view {  
                height: 100%;  
                                               }  
                    }

这样写问题未解决

DCloud_UNI_yuhe

DCloud_UNI_yuhe

你好请提供一下一个完整的可以运行的示例

Ask小助手

Ask小助手

该问题请在专业群( HBuilderX技术交流群 ) 咨询,群中有相关专业的管理员和群友。

在 App 端(Android/iOS)的 scroll-view 组件里,只要给 scroll-view 设置了固定高度(无论是直接写死像素值还是用 calc 计算),引擎就会认为“我已经有固定容器了”,从而把可滚动区域锁定为这个固定高度
如果此时子元素总高度 ≤ 容器高度,按设计本来不应该滚动;但 4.0 之后 scroll-view 的默认高度改为“子元素高度之和”,而 App 端在计算子元素高度时会把 calc 表达式当成一个固定值参与比较,导致即使实际内容没撑满,也会认为“子元素高度 = 容器高度”,于是出现“内容没超出也能滑动”的现象。Web 端因为浏览器本身对 calc 支持完整,不会触发这一差异。

解决思路

  1. 不用 calc,改用 flex 布局让 scroll-view 自动撑满剩余空间

    .page {  
     display: flex;  
     flex-direction: column;  
     height: 100%;  
    }  
    .header { height: 100px; }  
    .scroll-area { flex: 1; }   /* scroll-view 就是这个节点 */  
  2. 如果必须用 calc,可在 onReady 里通过 uni.createSelectorQuery() 拿到父容器实际高度,再减 100px 后通过行内样式写到 scroll-view 上,避开 calc 表达式。

  3. 临时规避:给 scroll-view 再包一层 view,外层用 calc,scroll-view 本身高度设 100%,让 App 端计算时拿到的是“纯百分比”而不是 calc。

简单一句话:App 端 scroll-view 对 calc 支持不完整,建议改用 flex 或动态计算高度。

内容为 AI 生成,仅供参考

要回复问题请先登录注册