可复现代码就是以上代码;
操作步骤:清空缓存再重新进入,不做任何操作就会出现问题;
问题截图:如图所示,自定义的中间背景色会发生右下偏移遮盖住右下滑倒,但是滑道又可以正常操作
ray-js/circle-progress 包组件表现异常?
Re: ray-js/circle-progress 包组件表现异常?
可以打包个代码附件上传下么?样式没有提供不知道是不是跟样式有关
Re: ray-js/circle-progress 包组件表现异常?
这个里面的使用与样式定义已经都给出,请帮忙查看一下
- Attachments
-
- slider.zip
- (3.25 KiB) Downloaded 12 times
Re: ray-js/circle-progress 包组件表现异常?
大概知道原因了,组件内部使用的单位是 px, 不是rpx 如果使用 rpx 就会导致大小与 progress 大小产生差异,两个方案:1.内部圆环使用px 2. 可以先自行处理下 rpx <=> px; 转换代码:
Code: Select all
import { getSystemInfoSync, platform } from '@ray-js/ray';
const systemInfo = getSystemInfoSync();
export const rpx2pxNum = (maybeRpx: string | number) => {
if (typeof maybeRpx === 'string') {
if (maybeRpx.endsWith('rpx')) {
const value = Number(maybeRpx.replace(/rpx/g, ''));
if (platform.isMiniProgram) {
return (value / 750) * systemInfo.windowWidth;
}
if (platform.isWeb) {
return value / 2;
}
} else if (maybeRpx.endsWith('px')) {
const value = Number(maybeRpx.replace(/px/g, ''));
return Number(value);
}
} else {
if (platform.isMiniProgram) {
return (maybeRpx / 750) * systemInfo.windowWidth;
}
if (platform.isWeb) {
return maybeRpx / 2;
}
}
return Number(maybeRpx);
};
export const px2rpxNum = (maybeRpx: string | number) => {
if (typeof maybeRpx === 'string') {
if (maybeRpx.endsWith('rpx')) {
const value = Number(maybeRpx.replace(/rpx/g, ''));
return value;
}
if (maybeRpx.endsWith('px')) {
const value = Number(maybeRpx.replace(/px/g, ''));
if (platform.isMiniProgram) {
return (value * 750) / systemInfo.windowWidth;
}
if (platform.isWeb) {
return value * 2;
}
}
}
if (platform.isMiniProgram) {
return (Number(maybeRpx) * 750) / systemInfo.windowWidth;
}
if (platform.isWeb) {
return Number(maybeRpx) * 2;
}
return Number(maybeRpx);
};Re: ray-js/circle-progress 包组件表现异常?
crisiron 2025年 Dec 22日 15:51大概知道原因了,组件内部使用的单位是 px, 不是rpx 如果使用 rpx 就会导致大小与 progress 大小产生差异,两个方案:1.内部圆环使用px 2. 可以先自行处理下 rpx <=> px; 转换代码:
Code: Select all
import { getSystemInfoSync, platform } from '@ray-js/ray'; const systemInfo = getSystemInfoSync(); export const rpx2pxNum = (maybeRpx: string | number) => { if (typeof maybeRpx === 'string') { if (maybeRpx.endsWith('rpx')) { const value = Number(maybeRpx.replace(/rpx/g, '')); if (platform.isMiniProgram) { return (value / 750) * systemInfo.windowWidth; } if (platform.isWeb) { return value / 2; } } else if (maybeRpx.endsWith('px')) { const value = Number(maybeRpx.replace(/px/g, '')); return Number(value); } } else { if (platform.isMiniProgram) { return (maybeRpx / 750) * systemInfo.windowWidth; } if (platform.isWeb) { return maybeRpx / 2; } } return Number(maybeRpx); }; export const px2rpxNum = (maybeRpx: string | number) => { if (typeof maybeRpx === 'string') { if (maybeRpx.endsWith('rpx')) { const value = Number(maybeRpx.replace(/rpx/g, '')); return value; } if (maybeRpx.endsWith('px')) { const value = Number(maybeRpx.replace(/px/g, '')); if (platform.isMiniProgram) { return (value * 750) / systemInfo.windowWidth; } if (platform.isWeb) { return value * 2; } } } if (platform.isMiniProgram) { return (Number(maybeRpx) * 750) / systemInfo.windowWidth; } if (platform.isWeb) { return Number(maybeRpx) * 2; } return Number(maybeRpx); };
目前第二种方式有效。
第一种方式在 iOS 与 Android 上表现不一致
Re: ray-js/circle-progress 包组件表现异常?
幽冥墨 2025年 Dec 23日 17:31crisiron 2025年 Dec 22日 15:51大概知道原因了,组件内部使用的单位是 px, 不是rpx 如果使用 rpx 就会导致大小与 progress 大小产生差异,两个方案:1.内部圆环使用px 2. 可以先自行处理下 rpx <=> px; 转换代码:
Code: Select all
import { getSystemInfoSync, platform } from '@ray-js/ray'; const systemInfo = getSystemInfoSync(); export const rpx2pxNum = (maybeRpx: string | number) => { if (typeof maybeRpx === 'string') { if (maybeRpx.endsWith('rpx')) { const value = Number(maybeRpx.replace(/rpx/g, '')); if (platform.isMiniProgram) { return (value / 750) * systemInfo.windowWidth; } if (platform.isWeb) { return value / 2; } } else if (maybeRpx.endsWith('px')) { const value = Number(maybeRpx.replace(/px/g, '')); return Number(value); } } else { if (platform.isMiniProgram) { return (maybeRpx / 750) * systemInfo.windowWidth; } if (platform.isWeb) { return maybeRpx / 2; } } return Number(maybeRpx); }; export const px2rpxNum = (maybeRpx: string | number) => { if (typeof maybeRpx === 'string') { if (maybeRpx.endsWith('rpx')) { const value = Number(maybeRpx.replace(/rpx/g, '')); return value; } if (maybeRpx.endsWith('px')) { const value = Number(maybeRpx.replace(/px/g, '')); if (platform.isMiniProgram) { return (value * 750) / systemInfo.windowWidth; } if (platform.isWeb) { return value * 2; } } } if (platform.isMiniProgram) { return (Number(maybeRpx) * 750) / systemInfo.windowWidth; } if (platform.isWeb) { return Number(maybeRpx) * 2; } return Number(maybeRpx); };目前第二种方式有效。
第一种方式在 iOS 与 Android 上表现不一致0.1.4 版本这个问题解决了吗