返回 AiToEarn
userProfile.module.scss
根目录 / project / aitoearn-electron / src / views / user / mine / userProfile.module.scss
1 .profileContainer {
2 padding: 24px;
3 background-color: #f5f5f5;
4 min-height: calc(100vh - 64px);
5 position: relative;
6 overflow: hidden;
7
8 // 科技感背景效果
9 &::before {
10 content: '';
11 position: absolute;
12 top: 0;
13 left: 0;
14 right: 0;
15 bottom: 0;
16 background:
17 linear-gradient(90deg, rgba(166, 106, 228, 0.02) 1px, transparent 1px) 0 0 / 20px 20px,
18 linear-gradient(0deg, rgba(166, 106, 228, 0.02) 1px, transparent 1px) 0 0 / 20px 20px;
19 z-index: 0;
20 }
21
22 .profileHeader {
23 text-align: center;
24 margin: 40px 0 40px;
25 position: relative;
26 z-index: 1;
27
28 .profileAvatar {
29 margin-bottom: 24px;
30 position: relative;
31 display: flex;
32 flex-direction: column;
33 justify-content: center;
34 align-items: center;
35
36 h3{
37 margin-top: 10px;
38 }
39
40 :global(.ant-avatar) {
41 background: linear-gradient(135deg, #a66ae4 0%, #6a4ae4 100%);
42 box-shadow: 0 0 20px rgba(166, 106, 228, 0.2);
43 border: 4px solid #fff;
44 transition: all 0.3s ease;
45 position: relative;
46 z-index: 1;
47
48 &:hover {
49 transform: scale(1.05);
50 box-shadow: 0 0 30px rgba(166, 106, 228, 0.4);
51 }
52 }
53 }
54
55 .profileName {
56 color: #333;
57 margin: 0;
58 font-weight: 500;
59 text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
60 position: relative;
61 display: inline-block;
62 }
63 }
64
65 .profileContent {
66 max-width: 800px;
67 margin: 0 auto;
68 position: relative;
69 z-index: 1;
70
71 .profileCard {
72 background: #fff;
73 border-radius: 16px;
74 box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
75 transition: all 0.3s ease;
76 border: 1px solid rgba(166, 106, 228, 0.1);
77
78 &:hover {
79 transform: translateY(-5px);
80 box-shadow: 0 12px 40px rgba(166, 106, 228, 0.15);
81 }
82
83 :global(.ant-card-body) {
84 padding: 24px;
85 }
86 }
87
88 .infoSection {
89 width: 100%;
90 }
91
92 .infoGroup {
93 display: grid;
94 grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
95 gap: 24px;
96 }
97
98 .infoItem {
99 display: flex;
100 align-items: center;
101 padding: 20px;
102 background: #fff;
103 border-radius: 12px;
104 transition: all 0.3s ease;
105 border: 1px solid rgba(166, 106, 228, 0.1);
106 position: relative;
107 overflow: hidden;
108
109 &::before {
110 content: '';
111 position: absolute;
112 top: 0;
113 left: 0;
114 width: 4px;
115 height: 100%;
116 background: linear-gradient(to bottom, #a66ae4, #6a4ae4);
117 opacity: 0;
118 transition: opacity 0.3s ease;
119 }
120
121 &:hover {
122 transform: translateY(-2px);
123 box-shadow: 0 4px 12px rgba(166, 106, 228, 0.1);
124
125 &::before {
126 opacity: 1;
127 }
128
129 .infoIcon {
130 transform: scale(1.1);
131 background: rgba(166, 106, 228, 0.1);
132 }
133 }
134
135 .infoIcon {
136 font-size: 24px;
137 color: #a66ae4;
138 margin-right: 16px;
139 background: rgba(166, 106, 228, 0.05);
140 padding: 12px;
141 border-radius: 12px;
142 transition: all 0.3s ease;
143 }
144
145 .infoContent {
146 display: flex;
147 flex-direction: column;
148 gap: 4px;
149 }
150
151 .infoLabel {
152 color: #666;
153 font-size: 14px;
154 }
155
156 .infoValue {
157 color: #333;
158 font-size: 16px;
159 font-weight: 500;
160 }
161
162 .statusNormal {
163 color: #52c41a;
164 position: relative;
165 padding-left: 20px;
166
167 &::before {
168 content: '';
169 position: absolute;
170 left: 0;
171 top: 50%;
172 transform: translateY(-50%);
173 width: 8px;
174 height: 8px;
175 background: #52c41a;
176 border-radius: 50%;
177 }
178 }
179
180 .statusAbnormal {
181 color: #ff4d4f;
182 position: relative;
183 padding-left: 20px;
184
185 &::before {
186 content: '';
187 position: absolute;
188 left: 0;
189 top: 50%;
190 transform: translateY(-50%);
191 width: 8px;
192 height: 8px;
193 background: #ff4d4f;
194 border-radius: 50%;
195 }
196 }
197 }
198 }
199 }
200
201 // 添加响应式设计
202 @media screen and (max-width: 768px) {
203 .profileContainer {
204 padding: 16px;
205
206 .profileContent {
207 .infoGroup {
208 grid-template-columns: 1fr;
209 }
210 }
211 }
212 }
212 lines Plain Text