uni-app宽屏下左窗体fixed定位滚动条受主窗体影响
uni-app宽屏下左窗体fixed定位滚动条受主窗体影响
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows 7 | 3.1.2 | HBuilderX |
左窗体fixed,且不超出屏高
.left {
left: var(--window-margin);
right: calc(100vw - var(--window-left));
}
主窗体没有滚动条的时候没问题,但是有滚动条的时候,左窗体右侧就会多出一个滚动条的空白,因不够屏高不显示,只是挤走左窗体,
var(--window-left)
包括了左边滚动条的宽度,单独设置::-webkit-scrollbar
隐藏没用
示例代码:
<view class="fixed left">
#code...
<view>
<style lang="scss" scoped>
.left {
left: var(--window-margin);
right: calc(100vw - var(--window-left));
}
</style>
更多关于uni-app宽屏下左窗体fixed定位滚动条受主窗体影响的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app宽屏下左窗体fixed定位滚动条受主窗体影响的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个典型的宽屏适配中滚动条导致的布局偏移问题。当主窗体出现滚动条时,100vw
包含了滚动条的宽度,而var(--window-left)
也包含了滚动条区域,导致计算偏差。
解决方案:
- 使用CSS自定义属性修正:
.left {
left: var(--window-margin);
right: calc(100vw - var(--window-left) - var(--window-scrollbar-width, 0px));
}
- JavaScript动态计算:
onLoad() {
const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
this.scrollbarWidth = scrollbarWidth;
}
- CSS滚动条隐藏方案:
/* 全局隐藏滚动条但保留滚动功能 */
::-webkit-scrollbar {
display: none;
}
/* 兼容Firefox */
html {
scrollbar-width: none;
}
- 推荐使用flex布局替代fixed:
.container {
display: flex;
height: 100vh;
}
.left {
width: var(--window-left);
flex-shrink: 0;
}
.main {
flex: 1;
overflow: auto;
}