uniapp适配问题

原文链接:https://blog.csdn.net/weixin_52312684/article/details/125218453

一.计算公式

设计稿 1px / 设计稿基准宽度 = 框架样式 1rpx / 750rpx

换言之,页面元素宽度在 uni-app 中的宽度计算公式:

750 * 元素在设计稿中的宽度 / 设计稿基准宽度

举例说明:

 - 若设计稿宽度为 750px,元素 A 在设计稿上的宽度为 100px,那么元素 A 在 uni-app 里面的宽度应该设为:750 *
    100 / 750,结果为:100rpx。
 - 若设计稿宽度为 640px,元素 A 在设计稿上的宽度为 100px,那么元素 A 在 uni-app 里面的宽度应该设为:750 *
    100 / 640,结果为:117rpx。
 - 若设计稿宽度为 375px,元素 B 在设计稿上的宽度为 200px,那么元素 B 在 uni-app 里面的宽度应该设为:750 *
    200 / 375,结果为:400rpx。
 

二.宽度750px设计稿

更具上面的换算公式

750 * 元素在设计稿中的宽度 / 设计稿基准宽度=100rpx

设计图是100px转换成为100rpx 

结论:

1px=1rpx

验证:

<template>
	<view class="box">
		<view class="box1">
			
		</view>
		
	</view>
</template>

<script>
export default {

}
</script>

<style>
	.box{
		width: 750rpx;
		height: 1000rpx;
		background-color: pink;
	}
	.box1{
		width: 100rpx;
		height: 100rpx;
		background-color: blue;
	}
</style>

在大屏下:

盒子的大小由100x100变成50x50

说明:

在大屏下 1px=2rpx

得出结论:

 rpx能够自适应屏幕的大小 从而概念元素的尺寸。

实际开发的时候可以直接在手机模式下进行开发 

二.宽度640px设计稿

先换算一下:

750x100/640=117rpx

设计稿:100:117

1:1.17

也就是说1px等于1.17rpx

100rpx/1.17=85.47

通常情况下我们一般以750px作为标准来进行开发。

三.扩展

移动端是如何做适配的呢?

1.百分比   2.rem

这里我们重点说rem

假设设计稿为980px  如何做适配

rem是一个单位它相对于当前屏幕的大小而言的。

通常用flexbox.js 这个插件来将屏幕划分成10份。

980/10=98px

也就是1rem等于98px。

代码:

<template>
  <div class="box">

  </div>
</template>

<script>

export default {
  name: '',
  methods: {
  }
}
</script>

<style scoped>
.box{
  width: 1rem;
  height: 1rem;
  background-color: pink;
}

</style>

         

四.思考

设计稿999px,在789px做适配转换成rem

设计稿为999px。

在手机为789px做适配。

设计稿的1rem 为 99.9px。

手机的1rem为78.9px。

得出结论:

设计稿的1px等于:78.9px/99.9px=0.789

就可以按照设计稿上的1px 等于手机上0.789px来画图了

或者用另外一种算法:

 

UniApp 中实现不同设备屏幕尺寸的适配,通常需要结合响应式设计、动态单位转换、条件渲染等技术。以下是几种常见且有效的适配方法: ### 响应式布局与动态单位转换 UniApp 支持使用 `rpx` 单位,该单位可以根据屏幕宽度进行自适应缩放。通常,设计稿的宽度为 750rpx,因此需要将设计稿中的像素值转换为 `rpx`。例如,如果按钮的宽度是 100px,高度是 50px,字体大小是 16px,并且设计稿的宽度为 390px,则可以使用以下公式进行转换: - 宽度:$$ \left( \frac{100}{390} \right) \times 750 = 192.31rpx $$ - 高度:$$ \left( \frac{50}{390} \right) \times 750 = 96.15rpx $$ - 字体大小:$$ \left( \frac{16}{390} \right) \times 750 = 30.77rpx $$ 在 CSS 中使用: ```css .button { width: 192.31rpx; height: 96.15rpx; font-size: 30.77rpx; } ``` [^2] ### 使用条件渲染实现不同设备内容适配 通过检测设备的屏幕宽度,可以实现在不同设备上显示不同的内容。例如,移动端屏幕宽度小于 600px 时显示移动端内容,否则显示 PC 端内容。示例代码如下: ```html <template> <div> <div v-show="isMobile" class="mobile-content"> <!-- 移动端内容 --> </div> <div v-show="!isMobile" class="desktop-content"> <!-- PC端内容 --> </div> </div> </template> <script> export default { data() { return { isMobile: false }; }, mounted() { this.isMobile = window.innerWidth < 600; window.addEventListener('resize', () => { this.isMobile = window.innerWidth < 600; }); } }; </script> ``` [^1] ### 获取屏幕信息并进行动态适配 通过 `uni.getSystemInfo` 接口可以获取设备的系统信息,包括屏幕高度和宽度,从而实现动态适配。例如,计算屏幕高度并减去某个元素的高度: ```javascript onReady() { uni.getSystemInfo({ success(res) { let screenHeight = res.screenHeight; uni.createSelectorQuery().select('.padingLR_1rem').boundingClientRect(data => { let height = screenHeight - data.height; console.log(height); }).exec(); } }); } ``` [^3] ### 使用栅格系统进行布局 UniApp 提供了栅格系统,可以更方便地进行响应式布局。通过栅格系统的列和偏移量设置,可以灵活地控制不同屏幕尺寸下的布局表现。 ### 总结 在 UniApp适配不同设备屏幕尺寸,可以通过 `rpx` 单位转换、条件渲染、获取系统信息动态调整布局以及使用栅格系统等多种方式实现。这些方法能够有效提升应用在不同设备上的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值