在数字化时代,个人中心页面已成为应用与用户互动的核心区域。它不仅是用户个人信息的展示平台,更是用户体验个性化服务的起点。优秀的个人中心页面设计能够提升用户的满意度和应用的使用频率。今天,我们有幸邀请到了前端技术专家——雪天,为我们分享他如何利用uniapp打造简洁而富有个性的个人中心页面。
01:第一个黄色(图一)
<template>
<view class="content">
<view class="tops">
<uni-icons type="gear" size="32" class="setIcon" @click="setFun"></uni-icons>
<view class="infos">
<image
src="https://img1.baidu.com/it/u=1665929857,2089570148&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=889"
mode="aspectFill"></image>
<view class="names">
韩信
</view>
<view class="desc">
纵情山河万里,肆意九州五岳,爱恨痴狂,抵不过沧海一笑
</view>
<view class="t-list">
<view class="t-item">
<view class="tit">
收藏
</view>
<view class="vals">
45
</view>
</view>
<view class="t-item">
<view class="tit">
点赞
</view>
<view class="vals">
266
</view>
</view>
<view class="t-item">
<view class="tit">
分享
</view>
<view class="vals">
103
</view>
</view>
</view>
</view>
</view>
<view class="lists">
<uni-list>
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon1" showArrow title="个人信息" clickable
@click="clickList" rightText="右侧文字" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon2" showArrow title="我的购物车" clickable
@click="clickList" rightText="右侧文字" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon3" showArrow title="用户反馈" clickable
@click="clickList" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon4" showArrow title="我的邮件" clickable
@click="clickList" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon5" showArrow title="分享有礼" clickable
@click="clickList" />
</uni-list>
</view>
</view>
</template>
<script>
export default {
data() {
return {
extraIcon1: {
color: '#666666',
size: '22',
type: 'auth'
},
extraIcon2: {
color: '#666666',
size: '22',
type: 'cart'
},
extraIcon3: {
color: '#666666',
size: '22',
type: 'chatboxes'
},
extraIcon4: {
color: '#666666',
size: '22',
type: 'email'
},
extraIcon5: {
color: '#666666',
size: '22',
type: 'gift'
}
}
},
methods: {
setFun() {
uni.showToast({
title: "点击设置",
icon: "none"
})
},
clickList() {
uni.showToast({
title: "点击列表",
icon: "none"
})
}
}
}
</script>
<style scoped>
.tops {
position: relative;
height: 580rpx;
background-color: aquamarine;
background: url("https://img1.baidu.com/it/u=3643237076,897388802&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=400") no-repeat;
background-size: 100% 100%;
}
.setIcon {
position: absolute;
top: 50rpx;
right: 50rpx;
}
.lists {
padding: 20rpx;
}
.tops .infos {
width: 80%;
height: 450rpx;
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -25%);
text-align: center;
}
.infos image {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
border: 4rpx solid #fff;
}
.infos .names {
font-size: 34rpx;
color: #333;
font-weight: 700;
margin: 20rpx 0 10rpx;
}
.infos .desc {
max-width: 62%;
font-size: 28rpx;
color: #333;
margin: 10rpx auto;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: center;
}
.infos .t-list {
margin-top: 60rpx;
display: flex;
justify-content: space-around;
}
.t-item .tit {
font-size: 32rpx;
color: #333;
margin-bottom: 10rpx;
}
.t-item .vals {
font-size: 36rpx;
color: #333;
font-weight: 700;
margin-bottom: 10rpx;
}
/deep/.uni-list-item__content-title[data-v-296a3d7e] {
font-size: 30rpx;
color: #333;
overflow: hidden;
font-weight: 500;
}
/deep/.uni-list-item__container {
padding: 30rpx;
}
</style>
02:第二个蓝色(图二)
<template>
<view class="content">
<view class="topBox">
<view class="setbox">
<view class="set-left">
<uni-icons type="calendar" size="30" color="#fff"></uni-icons>
<view class="txt">签到</view>
</view>
<view class="set-right">
<uni-icons type="gear" size="30" color="#fff" @click="setFun"></uni-icons>
<uni-icons type="chat" size="30" color="#fff"></uni-icons>
</view>
</view>
<view class="users">
<view class="u-top">
<image
src="https://img2.baidu.com/it/u=2953585264,744730101&fm=253&fmt=auto&app=138&f=JPEG?w=360&h=360"
mode=""></image>
<view class="tit">
登录 / 注册
</view>
</view>
<view class="u-bottom">
<view class="u-item">
<view class="num">12</view>
<view class="u-tit">浏览</view>
</view>
<view class="u-item">
<view class="num">12</view>
<view class="u-tit">浏览</view>
</view>
<view class="u-item">
<view class="num">12</view>
<view class="u-tit">浏览</view>
</view>
</view>
</view>
</view>
<view class="bottomBox">
<view class="order-list">
<view class="o-item">
<image src="../../static/daifuk.png" mode=""></image>
<view class="tit">待付款</view>
</view>
<view class="o-item">
<image src="../../static/daifa.png" mode=""></image>
<view class="tit">待发货</view>
</view>
<view class="o-item">
<image src="../../static/yifa.png" mode=""></image>
<view class="tit">已发货</view>
</view>
<view class="o-item">
<image src="../../static/wancheng.png" mode=""></image>
<view class="tit">已完成</view>
</view>
</view>
</view>
<view class="listBox">
<view class="lists">
<uni-list>
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon1" showArrow title="个人信息" clickable
@click="clickList" rightText="右侧文字" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon2" showArrow title="我的购物车" clickable
@click="clickList" rightText="右侧文字" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon3" showArrow title="用户反馈" clickable
@click="clickList" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon4" showArrow title="我的邮件" clickable
@click="clickList" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon5" showArrow title="分享有礼" clickable
@click="clickList" />
</uni-list>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
extraIcon1: {
color: '#666666',
size: '22',
type: 'auth'
},
extraIcon2: {
color: '#666666',
size: '22',
type: 'cart'
},
extraIcon3: {
color: '#666666',
size: '22',
type: 'chatboxes'
},
extraIcon4: {
color: '#666666',
size: '22',
type: 'email'
},
extraIcon5: {
color: '#666666',
size: '22',
type: 'gift'
},
}
},
methods: {
setFun() {
uni.showToast({
title: "点击设置",
icon: "none"
})
},
clickList() {
uni.showToast({
title: "点击列表",
icon: "none"
})
}
}
}
</script>
<style scoped>
.content {
background-color: #f5f5f5;
height: 100vh;
}
/* 弧形背景 */
.topBox {
width: 100%;
position: relative;
z-index: 1;
overflow: hidden;
padding: 60rpx 20rpx 20rpx;
box-sizing: border-box;
}
.topBox::after {
content: "";
width: 140%;
height: 200px;
position: absolute;
left: -20%;
top: 0;
z-index: -1;
border-radius: 0 0 50% 50%;
background: #00aaff;
}
/* 弧形背景 */
.setbox {
display: flex;
justify-content: space-between;
align-items: center;
}
.set-left {
width: 18%;
display: flex;
justify-content: space-between;
align-items: center;
}
.txt {
color: #fff;
font-size: 30rpx;
}
.set-right .uni-icons {
margin-right: 10rpx;
}
.users {
margin-top: 20rpx;
padding: 30rpx;
box-sizing: border-box;
height: 280rpx;
background-color: #fff;
box-shadow: 1px 10rpx 20rpx #ececec;
border-radius: 12rpx;
}
.u-top {
display: flex;
justify-content: flex-start;
align-items: center;
margin-bottom: 30rpx;
}
.users .u-top image {
width: 100rpx;
height: 100rpx;
border-radius: 50%;
margin-right: 20rpx;
}
.u-top .tit {
font-size: 30rpx;
font-weight: 700;
color: #333;
}
.u-bottom {
display: flex;
justify-content: space-around;
align-items: center;
}
.u-item {
text-align: center;
}
.u-item .u-tit {
color: #757575;
font-size: 26rpx;
margin-top: 10rpx;
}
.u-item .num {
color: #000000;
font-size: 33rpx;
font-weight: 700;
}
.bottomBox {
padding: 20rpx;
box-sizing: border-box;
}
.order-list {
height: 200rpx;
margin: -15rpx auto 0;
padding: 30rpx;
box-sizing: border-box;
background-color: #fff;
border-radius: 12rpx;
display: flex;
justify-content: space-around;
align-items: center;
}
.o-item {
width: 25%;
text-align: center;
}
.o-item image {
width: 65rpx;
height: 55rpx;
}
.o-item .tit {
font-size: 28rpx;
margin-top: 10rpx;
}
.listBox {
height: 200rpx;
margin: -10rpx auto 0;
padding: 20rpx;
box-sizing: border-box;
border-radius: 12rpx;
}
</style>
03:第三个绿色(图三)
<template>
<view class="content">
<view class="topBox">
<uni-icons type="gear" size="32" class="setIcon" color="#fff" @click="setFun"></uni-icons>
<image src="https://img0.baidu.com/it/u=464193705,1968194224&fm=253&fmt=auto&app=120&f=JPEG?w=801&h=500" mode="aspectFill"></image>
<view class="userName">
<view class="name">
着逝者为铠
</view>
<view class="desc">
以绝望挥剑,着逝者为铠
</view>
</view>
</view>
<view class="listBox">
<view class="lists">
<uni-list>
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon1" showArrow title="个人信息" clickable
@click="clickList" rightText="右侧文字" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon2" showArrow title="我的购物车" clickable
@click="clickList" rightText="右侧文字" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon3" showArrow title="用户反馈" clickable
@click="clickList" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon4" showArrow title="我的邮件" clickable
@click="clickList" />
<uni-list-item :show-extra-icon="true" :extra-icon="extraIcon5" showArrow title="分享有礼" clickable
@click="clickList" />
</uni-list>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
extraIcon1: {
color: '#666666',
size: '22',
type: 'auth'
},
extraIcon2: {
color: '#666666',
size: '22',
type: 'cart'
},
extraIcon3: {
color: '#666666',
size: '22',
type: 'chatboxes'
},
extraIcon4: {
color: '#666666',
size: '22',
type: 'email'
},
extraIcon5: {
color: '#666666',
size: '22',
type: 'gift'
},
}
},
methods: {
setFun() {
uni.showToast({
title: "点击设置",
icon: "none"
})
},
clickList() {
uni.showToast({
title: "点击列表",
icon: "none"
})
}
}
}
</script>
<style scoped>
.content {
box-sizing: border-box;
position: relative;
height: 100vh;
background-color: #00aa7f;
}
.topBox {
height: 350rpx;
padding: 50rpx;
box-sizing: border-box;
display: flex;
justify-content: flex-start;
align-items: center;
}
.topBox image {
width: 130rpx;
height: 130rpx;
border-radius: 50%;
border: 3rpx solid #fff;
margin-right: 30rpx;
}
.topBox .name {
font-size: 42rpx;
color: #fff;
font-weight: 700;
margin-bottom: 23rpx;
}
.topBox .desc {
font-size: 28rpx;
color: #ececec;
margin-bottom: 10rpx;
text-overflow: ellipsis;
white-space: nowrap;
text-align: center;
}
.listBox {
height: calc(100% - 330rpx);
background-color: #ffffff;
border-top-left-radius: 30rpx;
border-top-right-radius: 30rpx;
margin-top: -20rpx;
padding: 30rpx 20rpx;
}
.setIcon {
position: absolute;
top: 50rpx;
right: 50rpx;
}
</style>
最后,页面中用到了一些本地图片和uniapp的组件,为了更好的一键复制使用,我把整体源码-包含上期的登录页面源码和个人中心页面放在了gitee上,如有需要的话,下面附上
















