uniapp移动端ui
uniapp移动端UI设计要点
遵循平台规范 iOS应用需参照《Apple人机交互指南》,Android应用需遵循Material Design规范。跨平台开发时可通过条件编译实现差异化样式,确保各平台用户体验一致性。
自适应布局方案
采用flex弹性布局配合rpx单位(1rpx=屏幕宽度/750),使用@media媒体查询处理特殊屏幕尺寸。关键CSS示例:
.container {
display: flex;
padding: 20rpx;
}
.item {
flex: 1;
margin: 10rpx;
}
组件库选择 推荐使用官方uni-ui组件库或第三方库如uView UI(v3.x),安装方式:
npm install uview-ui
需在main.js中注册并引入主题文件:
import uView from 'uview-ui'
Vue.use(uView)
性能优化技巧
图片处理规范 网络图片使用懒加载:
<image lazy-load mode="aspectFill" src="..."></image>
本地图片建议压缩至2倍图尺寸(750x1334为基准),雪碧图最大不超过200KB。
动画实现方案 优先使用CSS3动画,复杂动画可使用renderjs技术。示例旋转动画:
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.spin {
animation: spin 2s linear infinite;
}
主题与皮肤系统
动态换肤实现 通过CSS变量结合Vuex状态管理:
// store.js
state: {
themeColor: '#4CD964'
}
样式文件中使用:
.button {
background-color: var(--themeColor);
}
暗黑模式适配
通过uni.getSystemInfo()获取系统主题,CSS媒体查询:
@media (prefers-color-scheme: dark) {
body {
background: #121212;
color: #f5f5f5;
}
}
交互细节优化
手势操作支持
使用@touchstart、@touchmove等事件实现滑动操作,注意300ms点击延迟可通过fastclick库解决。示例滑动删除:
handleTouchStart(e) {
this.startX = e.touches[0].clientX
}
handleTouchEnd(e) {
if (e.changedTouches[0].clientX - this.startX > 50) {
// 滑动触发动作
}
}
加载状态设计
分页加载建议使用<uni-load-more>组件,骨架屏通过v-if控制显示:
<view v-if="loading" class="skeleton"></view>
<view v-else>实际内容</view>
调试与适配技巧
多设备预览 使用HBuilderX内置模拟器,真机调试时注意:
- iOS需配置Viewport meta标签
- Android需处理状态栏沉浸:
uni.getSystemInfo({ success: res => { this.statusBarHeight = res.statusBarHeight } })
样式兼容方案 常见问题处理:
- 安卓按钮边框使用
overflow: hidden失效时,改用::after伪元素 - iOS滚动卡顿添加:
-webkit-overflow-scrolling: touch; - 1px边框问题使用transform缩放:
.border-1px { position: relative; } .border-1px::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; transform: scaleY(0.5); background: #e5e5e5; }







