@atooyu/uxto-ui 1.1.45 → 1.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +65 -59
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +65 -59
- package/dist/index.mjs.map +1 -1
- package/dist/style.css +22 -14
- package/package.json +1 -1
- package/src/components/u-tabbar/u-tabbar.vue +43 -28
package/dist/style.css
CHANGED
|
@@ -2380,17 +2380,18 @@ to {
|
|
|
2380
2380
|
}
|
|
2381
2381
|
.u-read-more__toggle-icon[data-v-b31720eb] {
|
|
2382
2382
|
font-size: 12px;
|
|
2383
|
-
}.u-tabbar[data-v-
|
|
2383
|
+
}.u-tabbar[data-v-4e37a87c] {
|
|
2384
2384
|
position: fixed;
|
|
2385
2385
|
left: 0;
|
|
2386
2386
|
right: 0;
|
|
2387
2387
|
bottom: 0;
|
|
2388
2388
|
z-index: 999;
|
|
2389
2389
|
width: 100%;
|
|
2390
|
+
height: 70px;
|
|
2390
2391
|
padding-bottom: constant(safe-area-inset-bottom);
|
|
2391
2392
|
padding-bottom: env(safe-area-inset-bottom);
|
|
2392
2393
|
}
|
|
2393
|
-
.u-tabbar__nav-wrap[data-v-
|
|
2394
|
+
.u-tabbar__nav-wrap[data-v-4e37a87c] {
|
|
2394
2395
|
position: absolute;
|
|
2395
2396
|
left: 14px;
|
|
2396
2397
|
right: 14px;
|
|
@@ -2406,7 +2407,7 @@ to {
|
|
|
2406
2407
|
padding: 0 8px;
|
|
2407
2408
|
box-sizing: border-box;
|
|
2408
2409
|
}
|
|
2409
|
-
.u-tabbar__tab-btn[data-v-
|
|
2410
|
+
.u-tabbar__tab-btn[data-v-4e37a87c] {
|
|
2410
2411
|
height: 40px;
|
|
2411
2412
|
border-radius: 20px;
|
|
2412
2413
|
background: transparent;
|
|
@@ -2421,23 +2422,30 @@ to {
|
|
|
2421
2422
|
padding: 0 16px;
|
|
2422
2423
|
margin: 0 20px;
|
|
2423
2424
|
}
|
|
2424
|
-
.u-tabbar__tab-btn--active[data-v-
|
|
2425
|
+
.u-tabbar__tab-btn--active[data-v-4e37a87c] {
|
|
2425
2426
|
background: #ffffff;
|
|
2426
2427
|
box-shadow: inset 0 0 0 1px rgba(17, 135, 128, 0.14);
|
|
2427
2428
|
}
|
|
2428
|
-
.u-tabbar__tab-
|
|
2429
|
+
.u-tabbar__tab-content[data-v-4e37a87c] {
|
|
2430
|
+
display: flex;
|
|
2431
|
+
align-items: center;
|
|
2432
|
+
justify-content: center;
|
|
2433
|
+
gap: 4px;
|
|
2434
|
+
pointer-events: none;
|
|
2435
|
+
}
|
|
2436
|
+
.u-tabbar__tab-text[data-v-4e37a87c] {
|
|
2429
2437
|
font-weight: 600;
|
|
2430
2438
|
font-size: 14px;
|
|
2431
2439
|
overflow: hidden;
|
|
2432
2440
|
text-overflow: ellipsis;
|
|
2433
2441
|
}
|
|
2434
|
-
.u-tabbar__center[data-v-
|
|
2442
|
+
.u-tabbar__center[data-v-4e37a87c] {
|
|
2435
2443
|
position: relative;
|
|
2436
2444
|
width: 72px;
|
|
2437
2445
|
height: 56px;
|
|
2438
2446
|
flex-shrink: 0;
|
|
2439
2447
|
}
|
|
2440
|
-
.u-tabbar__center-btn[data-v-
|
|
2448
|
+
.u-tabbar__center-btn[data-v-4e37a87c] {
|
|
2441
2449
|
position: absolute;
|
|
2442
2450
|
left: 50%;
|
|
2443
2451
|
top: -22px;
|
|
@@ -2455,29 +2463,29 @@ to {
|
|
|
2455
2463
|
box-shadow: 0 8px 20px rgba(8, 112, 106, 0.25);
|
|
2456
2464
|
transition: all 200ms ease;
|
|
2457
2465
|
}
|
|
2458
|
-
.u-tabbar__center-btn[data-v-
|
|
2466
|
+
.u-tabbar__center-btn[data-v-4e37a87c]:active {
|
|
2459
2467
|
transform: translateX(-50%) scale(0.95);
|
|
2460
2468
|
}
|
|
2461
|
-
.u-tabbar__center-btn--active[data-v-
|
|
2469
|
+
.u-tabbar__center-btn--active[data-v-4e37a87c] {
|
|
2462
2470
|
border-color: #12b6af;
|
|
2463
2471
|
box-shadow: 0 8px 24px rgba(8, 112, 106, 0.35);
|
|
2464
2472
|
}
|
|
2465
|
-
.u-tabbar__center-btn--side-active[data-v-
|
|
2473
|
+
.u-tabbar__center-btn--side-active[data-v-4e37a87c] {
|
|
2466
2474
|
background: linear-gradient(135deg, #12b6af 0%, #65d8d1 100%);
|
|
2467
2475
|
border-color: #9fe4dd;
|
|
2468
2476
|
}
|
|
2469
|
-
.u-tabbar__center-btn--side-active .u-tabbar__center-brand[data-v-
|
|
2470
|
-
.u-tabbar__center-btn--side-active .u-tabbar__center-text[data-v-
|
|
2477
|
+
.u-tabbar__center-btn--side-active .u-tabbar__center-brand[data-v-4e37a87c],
|
|
2478
|
+
.u-tabbar__center-btn--side-active .u-tabbar__center-text[data-v-4e37a87c] {
|
|
2471
2479
|
color: #ffffff;
|
|
2472
2480
|
}
|
|
2473
|
-
.u-tabbar__center-brand[data-v-
|
|
2481
|
+
.u-tabbar__center-brand[data-v-4e37a87c] {
|
|
2474
2482
|
font-size: 22px;
|
|
2475
2483
|
line-height: 1;
|
|
2476
2484
|
font-weight: 700;
|
|
2477
2485
|
color: #12b6af;
|
|
2478
2486
|
letter-spacing: 1px;
|
|
2479
2487
|
}
|
|
2480
|
-
.u-tabbar__center-text[data-v-
|
|
2488
|
+
.u-tabbar__center-text[data-v-4e37a87c] {
|
|
2481
2489
|
font-size: 12px;
|
|
2482
2490
|
letter-spacing: 0.5px;
|
|
2483
2491
|
color: #12b6af;
|
package/package.json
CHANGED
|
@@ -6,20 +6,22 @@
|
|
|
6
6
|
<view
|
|
7
7
|
class="u-tabbar__tab-btn"
|
|
8
8
|
:class="{ 'u-tabbar__tab-btn--active': modelValue === leftTab.value }"
|
|
9
|
-
@tap="switchTab(leftTab.value)"
|
|
9
|
+
@tap.stop="switchTab(leftTab.value)"
|
|
10
10
|
>
|
|
11
|
-
<u-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
<view class="u-tabbar__tab-content">
|
|
12
|
+
<u-icon
|
|
13
|
+
v-if="leftTab.icon"
|
|
14
|
+
:name="leftTab.icon"
|
|
15
|
+
:size="16"
|
|
16
|
+
:color="modelValue === leftTab.value ? activeColor : inactiveColor"
|
|
17
|
+
/>
|
|
18
|
+
<text
|
|
19
|
+
class="u-tabbar__tab-text"
|
|
20
|
+
:style="{ color: modelValue === leftTab.value ? activeColor : inactiveColor }"
|
|
21
|
+
>
|
|
22
|
+
{{ leftTab.label }}
|
|
23
|
+
</text>
|
|
24
|
+
</view>
|
|
23
25
|
</view>
|
|
24
26
|
|
|
25
27
|
<!-- 中间占位 + 凸起按钮 -->
|
|
@@ -30,7 +32,7 @@
|
|
|
30
32
|
'u-tabbar__center-btn--active': modelValue === centerTab.value,
|
|
31
33
|
'u-tabbar__center-btn--side-active': modelValue === leftTab.value || modelValue === rightTab.value
|
|
32
34
|
}"
|
|
33
|
-
@tap="switchTab(centerTab.value)"
|
|
35
|
+
@tap.stop="switchTab(centerTab.value)"
|
|
34
36
|
>
|
|
35
37
|
<text class="u-tabbar__center-brand">
|
|
36
38
|
{{ centerBrand }}
|
|
@@ -45,20 +47,22 @@
|
|
|
45
47
|
<view
|
|
46
48
|
class="u-tabbar__tab-btn"
|
|
47
49
|
:class="{ 'u-tabbar__tab-btn--active': modelValue === rightTab.value }"
|
|
48
|
-
@tap="switchTab(rightTab.value)"
|
|
50
|
+
@tap.stop="switchTab(rightTab.value)"
|
|
49
51
|
>
|
|
50
|
-
<u-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
52
|
+
<view class="u-tabbar__tab-content">
|
|
53
|
+
<u-icon
|
|
54
|
+
v-if="rightTab.icon"
|
|
55
|
+
:name="rightTab.icon"
|
|
56
|
+
:size="16"
|
|
57
|
+
:color="modelValue === rightTab.value ? activeColor : inactiveColor"
|
|
58
|
+
/>
|
|
59
|
+
<text
|
|
60
|
+
class="u-tabbar__tab-text"
|
|
61
|
+
:style="{ color: modelValue === rightTab.value ? activeColor : inactiveColor }"
|
|
62
|
+
>
|
|
63
|
+
{{ rightTab.label }}
|
|
64
|
+
</text>
|
|
65
|
+
</view>
|
|
62
66
|
</view>
|
|
63
67
|
</view>
|
|
64
68
|
</view>
|
|
@@ -124,7 +128,7 @@ const switchTab = (tab: string) => {
|
|
|
124
128
|
<script lang="ts">
|
|
125
129
|
export default {
|
|
126
130
|
options: {
|
|
127
|
-
virtualHost:
|
|
131
|
+
virtualHost: false,
|
|
128
132
|
styleIsolation: 'shared'
|
|
129
133
|
}
|
|
130
134
|
}
|
|
@@ -145,6 +149,8 @@ $--paper: #ffffff;
|
|
|
145
149
|
bottom: 0;
|
|
146
150
|
z-index: 999;
|
|
147
151
|
width: 100%;
|
|
152
|
+
// 设置高度,确保触摸区域正确
|
|
153
|
+
height: 70px;
|
|
148
154
|
// 底部安全区域适配
|
|
149
155
|
padding-bottom: constant(safe-area-inset-bottom);
|
|
150
156
|
padding-bottom: env(safe-area-inset-bottom);
|
|
@@ -188,6 +194,15 @@ $--paper: #ffffff;
|
|
|
188
194
|
}
|
|
189
195
|
}
|
|
190
196
|
|
|
197
|
+
// Tab内容容器 - 防止子元素拦截点击
|
|
198
|
+
&__tab-content {
|
|
199
|
+
display: flex;
|
|
200
|
+
align-items: center;
|
|
201
|
+
justify-content: center;
|
|
202
|
+
gap: 4px;
|
|
203
|
+
pointer-events: none;
|
|
204
|
+
}
|
|
205
|
+
|
|
191
206
|
&__tab-text {
|
|
192
207
|
font-weight: 600;
|
|
193
208
|
font-size: 14px;
|