findme-miniprogram-frontend/pages/map/map.wxss

5843 lines
106 KiB
Text
Raw Normal View History

2025-12-27 17:16:03 +08:00
/* 地图页面 - 现代化设计 + 系统适配 */
page {
margin: 0;
padding: 0;
box-sizing: border-box;
background: #f5f5f5;
--menuButtonRight: 20px;
/* 定义右侧按钮与屏幕边缘的间距 */
}
/* 地图容器 */
.map-container {
position: relative;
width: 100%;
background: #f5f5f5;
padding-bottom: env(safe-area-inset-bottom);
}
.district-text.dark {
color: white;
}
.toggle-text.dark {
color: white;
}
.weather-temp .dark{
color: white;
}
/* 地图黑色主题基础样式 */
.map-dark {
--map-background-color: #0a0a0a;
--map-control-color: #ffffff;
--map-label-color: #ffffff;
--map-poi-color: #ffffff;
--map-background: #000000;
--map-text-color: #ffffff;
}
.custom-scale {
width: 100px;
position: absolute;
display: flex;
flex-direction: column;
align-items: center;
padding: 5rpx 12rpx;
border-radius: 4rpx;
box-shadow: 0 2rpx 6rpx rgba(0, 0, 0, 0.5);
}
.scale-unit {
font-size: 18rpx;
color: #333;
line-height: 1.2;
}
.metric {
/* 米/千米在上 */
margin-bottom: 4rpx;
}
.imperial {
/* 英尺在下 */
margin-top: 4rpx;
}
.scale-bar {
width: 80px;
/* 最大线段长度,可调整 */
height: 4rpx;
background: #eee;
position: relative;
}
.scale-line {
height: 100%;
background: #333;
/* 线段颜色 */
}
/* 适配底部导航栏的地图容器 */
.map-with-tabbar {
height: calc(100vh - env(safe-area-inset-bottom));
position: relative;
}
/* 底部导航栏玻璃效果适配 */
page {
background: #f5f5f5;
}
/* 修复地图页面底部内容不被遮挡 */
.content-area {
padding-bottom: 0;
}
/* 地图组件 */
.map {
width: 100%;
height: 100%;
}
/* 定位占位图 - 现代化设计 */
.location-placeholder {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
align-items: center;
justify-content: center;
z-index: 100;
}
.placeholder-content {
text-align: center;
color: white;
padding: 40px;
}
.location-icon {
font-size: 64px;
margin-bottom: 20px;
animation: float 3s ease-in-out infinite;
}
@keyframes float {
0%,
100% {
transform: translateY(0);
}
50% {
transform: translateY(-10px);
}
}
.placeholder-title {
font-size: 20px;
font-weight: 600;
margin-bottom: 8px;
display: block;
}
.placeholder-subtitle {
font-size: 14px;
opacity: 0.8;
margin-bottom: 30px;
display: block;
}
.location-progress {
width: 80px;
margin: 0 auto;
}
.progress-fill {
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.8);
border-radius: 2px;
animation: progress 2s ease-in-out infinite;
}
@keyframes progress {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}
.progress-text {
font-size: 12px;
opacity: 0.7;
}
/* 自定义导航栏 */
.custom-navigation-bar {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 999;
/* backdrop-filter: blur(10px); */
}
.status-bar-space {
width: 100%;
}
.nav-content {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 16rpx;
}
.nav-left,
.nav-right {
flex-shrink: 0;
}
.nav-title {
flex: 1;
text-align: center;
color: white;
font-size: 32rpx;
font-weight: 600;
letter-spacing: 2rpx;
}
/* 顶部状态栏 - 系统适配 */
.top-bar {
position: absolute;
top: 0;
left: 0;
right: 0;
padding: 16rpx 32rpx;
background: linear-gradient(180deg, rgba(0, 0, 0, 0.3) 0%, transparent 100%);
z-index: 100;
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 20rpx;
}
.location-info {
padding: 16rpx 20rpx;
display: flex;
align-items: center;
gap: 12rpx;
flex: 1;
min-width: 0;
transition: all 0.2s ease;
}
.location-info:active {
background: rgba(255, 255, 255, 1);
transform: scale(0.98);
}
.location-icon-small {
font-size: 24rpx;
opacity: 0.8;
flex-shrink: 0;
}
.location-content {
flex: 1;
min-width: 0;
}
.location-text {
font-size: 26rpx;
color: #2c3e50;
font-weight: 600;
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
line-height: 1.3;
}
.location-debug {
font-size: 20rpx;
color: #7f8c8d;
margin-top: 2rpx;
display: block;
opacity: 0.8;
}
.weather-info {
background: rgba(255, 255, 255, 0.95);
padding: 16rpx 20rpx;
border-radius: 48rpx;
backdrop-filter: blur(20rpx);
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
display: flex;
align-items: center;
gap: 8rpx;
flex-shrink: 0;
}
.weather-icon {
font-size: 24rpx;
}
.weather-text {
font-size: 24rpx;
color: #2c3e50;
font-weight: 600;
}
/* 顶部元素容器 - 统一的flex布局 */
.top-elements-container {
position: absolute;
top: 0;
left: 0;
right: 0;
width: 100%;
z-index: 100;
}
.top-elements-content {
display: flex;
align-items: flex-start;
justify-content: space-between;
padding: 16rpx 32rpx;
}
/* 左上角区域信息容器 - 垂直堆叠样式 */
.top-left-info-container {
padding: 12rpx 16rpx;
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 8px;
z-index: 100;
pointer-events: auto;
transition: all 0.3s ease;
margin-right: 10px;
flex-shrink: 0;
/* 确保左侧信息区域位置固定,不受到其他区域影响 */
}
/* 登录状态下的左侧信息容器样式 */
.top-left-info-container.logged-in {
position: relative;
left: 0;
top: 0;
/* 保持默认样式 */
}
/* 未登录状态下的左侧信息容器样式 */
.top-left-info-container.not-logged-in {
position: absolute;
left: 20rpx;
top: 0;
/* 固定在左上角,避免受其他元素影响 */
z-index: 101;
/* 确保在最上层显示 */
}
.top-left-info-container:active {
transform: scale(0.98);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
/* 1. 地点位置样式 */
.location-section {
display: flex;
color: #333 ;
align-items: center;
min-width: 100px;
}
.district-text {
font-size: 48rpx;
font-weight: 700;
color: #333 ;
line-height: 1.2;
text-shadow:
0 1px 2px rgba(255, 255, 255, 0.8),
0 -1px 0 rgba(0, 0, 0, 0.1);
}
/* 2. 天气信息样式 */
.weather-section {
display: flex;
align-items: center;
gap: 16px;
}
.weather-icon {
font-size: 36rpx;
animation: weather-float 3s ease-in-out infinite;
filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1));
}
/* 云彩图标特殊处理 - 黑色 */
.weather-icon.cloud-icon {
filter:
drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1)) grayscale(1) brightness(0.3);
}
@keyframes weather-float {
0%,
100% {
transform: translateY(0);
}
50% {
transform: translateY(-2px);
}
}
.weather-temp {
font-size: 32rpx;
font-weight: 700;
color: #333 ;
text-shadow:
0 1px 2px rgba(255, 255, 255, 0.8),
0 -1px 0 rgba(0, 0, 0, 0.1);
}
/* 容器样式:横向排列 */
.toggle-section {
display: flex;
align-items: center;
gap: 10px;
/* 文字与图片间距 */
cursor: pointer;
padding:10px 15px 5px 0px;
}
.toggle-section-dynamic {
display: flex;
align-items: center;
gap: 10px;
/* 文字与图片间距 */
cursor: pointer;
padding:0px 15px 0px 0px;
}
/* 文字样式 */
.toggle-text {
font-size: 14px;
color:#333
}
/* 开关图片样式 */
.switch-img {
width: 40px;
/* 图片宽度(根据你的图片尺寸调整) */
height: auto;
/* 高度自适应,保持比例 */
}
/* 中间搜索区域样式 - 只适应右侧按钮区域,不适应左侧区域 */
.search-area {
/* border: 2px solid #00ffcc; */
display: flex;
justify-content: flex-end;
align-items: center;
padding-right: 10px;
margin-left: auto;
}
/* 右侧元素容器样式 */
.right-elements-container {
display: flex;
align-items: flex-start;
/* padding-right: calc(var(--menuButtonRight)- 16px); */
padding-left: calc(var(--menuButtonLeft));
/* 使用与微信胶囊相同的右侧间距 */
}
/* 适配深色模式 */
@media (prefers-color-scheme: dark) {
.weather-temp {
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
}
.weather-icon {
filter: drop-shadow(0 1px 2px rgba(255, 255, 255, 0.1));
}
.weather-icon.cloud-icon {
filter:
drop-shadow(0 1px 2px rgba(255, 255, 255, 0.1)) grayscale(1) brightness(0.7);
}
}
/* 🎨 现代化用户头像 -/* 右侧垂直按钮组 */
.right-vertical-buttons {
display: flex;
flex-direction: column;
gap: 16rpx;
}
.user-avatar {
width: 44px;
height: 44px;
animation: avatarSlideIn 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}
/* 测试按钮样式 */
.test-favorite-btn {
width: 88rpx;
height: 88rpx;
background: linear-gradient(145deg, #007AFF 0%, #5AC8FA 50%, #AF52DE 100%);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
position: relative;
box-shadow:
0 8rpx 24rpx rgba(0, 122, 255, 0.3),
0 3rpx 8rpx rgba(0, 122, 255, 0.2),
inset 0 1rpx 0 rgba(255, 255, 255, 0.3);
border: 3rpx solid rgba(255, 255, 255, 0.95);
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
backdrop-filter: blur(10rpx);
z-index: 1;
}
.test-favorite-btn:active {
transform: scale(0.92);
box-shadow:
0 4rpx 16rpx rgba(0, 122, 255, 0.4),
0 2rpx 6rpx rgba(0, 122, 255, 0.3),
inset 0 1rpx 0 rgba(255, 255, 255, 0.2);
}
@keyframes avatarSlideIn {
from {
opacity: 0;
transform: translateX(60rpx) scale(0.8);
}
to {
opacity: 1;
transform: translateX(0) scale(1);
}
}
.avatar-container {
width: 88rpx;
height: 88rpx;
border-radius: 50%;
background: linear-gradient(145deg, #007AFF 0%, #5AC8FA 50%, #AF52DE 100%);
display: flex;
align-items: center;
justify-content: center;
position: relative;
box-shadow:
0 8rpx 24rpx rgba(0, 122, 255, 0.3),
0 3rpx 8rpx rgba(0, 122, 255, 0.2),
inset 0 1rpx 0 rgba(255, 255, 255, 0.3);
border: 3rpx solid rgba(255, 255, 255, 0.95);
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
backdrop-filter: blur(10rpx);
z-index: 1;
}
.avatar-container:active {
transform: scale(0.92);
box-shadow:
0 4rpx 16rpx rgba(0, 122, 255, 0.4),
0 2rpx 6rpx rgba(0, 122, 255, 0.3),
inset 0 1rpx 0 rgba(255, 255, 255, 0.2);
}
/* 悬停效果 */
@media (hover: hover) {
.avatar-container:hover {
transform: scale(1.05);
box-shadow:
0 12rpx 32rpx rgba(0, 122, 255, 0.4),
0 4rpx 12rpx rgba(0, 122, 255, 0.3),
inset 0 1rpx 0 rgba(255, 255, 255, 0.4);
}
}
.avatar-image {
width: 100%;
height: 100%;
border-radius: 50%;
position: relative;
z-index: 10;
}
.avatar-text {
font-size: 32rpx;
font-weight: 700;
color: white;
text-transform: uppercase;
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.3);
letter-spacing: 1rpx;
z-index: 2;
}
/* 🎯 方向小针指示器 */
.online-dot {
position: absolute;
bottom: -8rpx;
right: -8rpx;
width: 40rpx;
height: 40rpx;
background: url('/images/map/maker_position.png') no-repeat center center;
background-size: contain;
transform-origin: 50% 50%;
z-index: 3;
}
/* 方向针样式设置完成 */
/* 右侧功能按钮组 */
.right-controls {
position: absolute;
display: flex;
flex-direction: column;
gap: 12px;
z-index: 50;
}
.control-btn {
width: 44px;
height: 44px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(20px);
border-radius: 22px;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
border: 1px solid rgba(255, 255, 255, 0.8);
transition: all 0.2s ease;
}
.control-btn:active {
transform: scale(0.95);
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
}
.btn-icon {
font-size: 18px;
}
.refresh-icon {
transition: transform 0.3s ease;
}
.refresh-btn:active .refresh-icon {
transform: rotate(180deg);
}
/* 底部定位按钮 - 新增 */
.location-btn {
position: absolute;
left: 50%;
transform: translateX(-50%);
z-index: 60;
}
.location-btn-inner {
width: 40px;
height: 40px;
background: #41414149;
backdrop-filter: blur(20px);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.location-btn:active .location-btn-inner {
transform: scale(0.95);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}
.location-btn .location-btn-inner .location-icon {
position: relative;
z-index: 2;
animation: none;
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
margin: 0;
padding: 0;
}
.location-btn .location-btn-inner .location-icon image {
width: 22px;
height: 22px;
display: block;
margin: 0;
padding: 0;
filter: brightness(0) invert(1);
}
.location-ripple {
position: absolute;
top: 50%;
left: 50%;
width: 0;
height: 0;
border-radius: 50%;
background: rgba(102, 126, 234, 0.3);
transform: translate(-50%, -50%);
animation: location-ripple 2s ease-in-out infinite;
}
@keyframes location-ripple {
0% {
width: 0;
height: 0;
opacity: 1;
}
100% {
width: 80px;
height: 80px;
opacity: 0;
}
}
/* 地图动态浮层 */
.feed-bubble-overlay {
position: absolute;
left: 0;
right: 0;
display: flex;
justify-content: center;
z-index: 1200;
}
.feed-bubble-card {
position: relative;
width: calc(100% - 160rpx);
max-width: 700rpx;
padding: 32rpx 32rpx 28rpx;
border-radius: 36rpx;
background: rgba(24, 26, 36, 0.88);
color: #ffffff;
box-shadow: 0 28rpx 60rpx rgba(0, 0, 0, 0.35);
backdrop-filter: blur(28rpx);
border: 1px solid rgba(255, 255, 255, 0.08);
}
.feed-bubble-card.sunset {
background: linear-gradient(160deg, rgba(59, 31, 99, 0.92), rgba(226, 92, 121, 0.85));
}
.feed-bubble-card.ocean {
background: linear-gradient(160deg, rgba(26, 61, 110, 0.9), rgba(66, 185, 208, 0.82));
}
.feed-bubble-handle {
width: 88rpx;
height: 8rpx;
border-radius: 999rpx;
background: rgba(255, 255, 255, 0.28);
margin: 0 auto 26rpx;
}
.feed-bubble-header {
display: flex;
align-items: flex-start;
gap: 24rpx;
}
.feed-bubble-title-block {
flex: 1;
min-width: 0;
}
.feed-bubble-title {
display: block;
font-size: 36rpx;
font-weight: 600;
letter-spacing: 1rpx;
}
.feed-bubble-subtitle {
display: block;
margin-top: 8rpx;
font-size: 26rpx;
color: rgba(255, 255, 255, 0.75);
}
.feed-bubble-chip-group {
display: flex;
flex-direction: column;
gap: 16rpx;
align-items: flex-end;
}
.feed-bubble-chip {
padding: 6rpx 20rpx;
border-radius: 999rpx;
background: rgba(255, 255, 255, 0.2);
font-size: 22rpx;
font-weight: 500;
color: #fff;
}
.feed-bubble-chip.heat {
background: rgba(255, 194, 140, 0.24);
color: #ffe9db;
}
.feed-bubble-close {
/* 调整位置到右上角 */
position: absolute;
top: 1px;
right: 1px;
/* 扩大点击区域 */
width: 50px;
height: 50px;
/* 保持图标居中 */
display: flex;
align-items: center;
justify-content: center;
/* 原有样式保留 */
font-size: 28rpx;
color: rgba(255, 255, 255, 0.6);
/* 可选:添加点击反馈 */
border-radius: 50%;
transition: background-color 0.2s;
}
.feed-bubble-close:active {
background-color: rgba(255, 255, 255, 0.1);
}
.feed-bubble-meta {
display: flex;
flex-wrap: wrap;
gap: 32rpx;
margin: 28rpx 0 12rpx;
}
.feed-bubble-meta-item {
display: flex;
flex-direction: column;
min-width: 140rpx;
}
.feed-bubble-meta-label {
font-size: 22rpx;
color: rgba(255, 255, 255, 0.6);
}
.feed-bubble-meta-value {
font-size: 26rpx;
font-weight: 500;
margin-top: 6rpx;
color: #ffffff;
}
.feed-bubble-loading,
.feed-bubble-empty {
text-align: center;
padding: 48rpx 0;
font-size: 26rpx;
color: rgba(255, 255, 255, 0.75);
}
.feed-bubble-scroll {
margin: 6rpx 0 18rpx;
padding-bottom: 6rpx;
white-space: nowrap;
}
.feed-bubble-card-item {
position: relative;
width: 220rpx;
height: 200rpx;
border-radius: 26rpx;
overflow: hidden;
margin-right: 24rpx;
flex: 0 0 auto;
display: inline-block;
background: rgba(255, 255, 255, 0.1);
}
.feed-bubble-card-thumb {
width: 100%;
height: 100%;
}
.feed-bubble-card-gradient {
position: absolute;
inset: 0;
background: linear-gradient(180deg, rgba(0, 0, 0, 0.05) 10%, rgba(0, 0, 0, 0.75) 90%);
}
.feed-bubble-card-info {
position: absolute;
left: 18rpx;
right: 18rpx;
bottom: 18rpx;
display: flex;
flex-direction: column;
gap: 6rpx;
}
.feed-bubble-card-title {
font-size: 26rpx;
font-weight: 600;
color: #ffffff;
white-space: normal;
line-height: 1.34;
}
.feed-bubble-card-desc {
font-size: 22rpx;
color: rgba(255, 255, 255, 0.75);
}
.feed-bubble-actions {
margin-top: 12rpx;
}
.feed-bubble-action {
width: 100%;
text-align: center;
padding: 22rpx 0;
border-radius: 999rpx;
font-size: 28rpx;
font-weight: 600;
letter-spacing: 1rpx;
}
.feed-bubble-action.primary {
background: linear-gradient(135deg, rgba(92, 124, 255, 0.95), rgba(72, 200, 255, 0.95));
color: #ffffff;
box-shadow: 0 16rpx 28rpx rgba(86, 143, 255, 0.35);
}
.feed-bubble-action:active {
opacity: 0.86;
}
.feed-bubble-tip {
margin-top: 18rpx;
text-align: center;
font-size: 22rpx;
color: rgba(255, 255, 255, 0.55);
}
/* 用户详情卡片 - 现代化设计 */
.user-card {
position: absolute;
left: 16px;
right: 16px;
background: rgba(0, 0, 0, 0.95);
backdrop-filter: blur(20px);
border-radius: 20px;
padding: 20px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
border: 1px solid rgba(255, 255, 255, 0.1);
transform: translateY(100%);
opacity: 0;
transition: all 0.3s ease;
z-index: 100000;
/* 高于相机按钮 */
}
.user-card.show {
transform: translateY(0);
opacity: 1;
}
/* 已移除上沿彩条 */
.card-backdrop {
display: none;
}
.card-header {
display: flex;
align-items: center;
margin-bottom: 16px;
}
.card-avatar {
width: 48px;
height: 48px;
background: linear-gradient(23deg, #68F9FE 0%, #AA93ED 100%);
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12px;
box-shadow: 0 4px 16px rgba(104, 249, 254, 0.3);
overflow: hidden;
}
.card-avatar-url {
margin-right: 12px;
width: 48px;
height: 48px;
border-radius: 24px;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
background: #f0f0f0;
}
.avatar-img {
width: 100%;
height: 100%;
object-fit: cover; /* 保持比例并裁剪多余部分 */
}
/* 用户头像样式 */
.card-avatar image {
width: 100%;
height: 100%;
display: block;
object-fit: cover;
}
/* POI地点头像样式 - 与其他按钮统一渐变 */
.card-avatar.poi-avatar {
background: linear-gradient(23deg, #68F9FE 0%, #AA93ED 100%);
box-shadow: 0 4px 16px rgba(104, 249, 254, 0.3);
}
.card-avatar-text {
color: white;
font-size: 18px;
font-weight: 600;
}
.card-info {
flex: 1;
min-width: 0;
}
.card-name {
font-size: 18px;
font-weight: 600;
color: #fff;
margin-bottom: 4px;
display: block;
}
.image-getaddress {
margin-top: 20px;
width: 100%;
height: 35px;
}
.card-distance {
font-size: 13px;
color: #ccc;
margin-bottom: 4px;
display: block;
}
.card-status {
display: flex;
align-items: center;
gap: 4px;
}
.status-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: #2ed573;
animation: pulse 2s ease-in-out infinite;
}
@keyframes pulse {
0%,
100% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0.7;
transform: scale(1.2);
}
}
.status-text {
font-size: 11px;
color: #2ed573;
font-weight: 500;
}
.card-close {
width: 32px;
height: 32px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
background: rgba(255, 255, 255, 0.1);
transition: all 0.2s ease;
}
.card-close:active {
background: rgba(255, 255, 255, 0.2);
transform: scale(0.9);
}
.close-icon {
font-size: 16px;
color: #fff;
}
.card-actions {
display: flex;
gap: 12px;
padding-top: 8px;
}
/* 统一按钮样式 - 与发起群聊页面确定按钮风格一致 */
.action-btn {
flex: 1;
display: flex;
flex-direction: row;
/* 修改为水平排列 */
align-items: center;
justify-content: center;
gap: 6px;
padding: 12px 8px;
/* 调整为更适合水平排列的内边距 */
border-radius: 16px;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
background: linear-gradient(23deg, #68F9FE 0%, #AA93ED 100%);
border: 1px solid rgba(104, 249, 254, 0.7);
box-shadow: 0 6px 16px rgba(104, 249, 254, 0.3);
/* 增强阴影效果 */
}
.action-btn-share {
/* 1. 清除按钮自身基础样式 */
border: none;
/* 去除边框 */
background-color: transparent;
/* 背景色设为透明 */
padding: 0;
/* 清除内边距 */
margin: 0;
/* 清除外边距 */
border-radius: 0;
/* 可选,去除圆角 */
line-height: 1;
/* 调整行高,避免额外空间 */
/* 2. 设置按钮尺寸(或由内容决定) */
display: inline-block;
/* 使按钮尺寸由内容撑开 */
width: auto;
height: auto;
}
/* 3. 【关键】清除小程序按钮独特的伪元素边框 */
.action-btn-share::after {
border: none !important;
/* 必须使用 !important 确保覆盖默认样式 */
}
/* 4. 设置按钮内部图片的样式 */
.action-btn-share image {
display: block;
/* 消除图片底部的空隙 */
width: 80rpx;
/* 请根据您的图片尺寸和设计需求调整宽度 */
height: 100rpx;
/* 请根据您的图片尺寸和设计需求调整高度 */
}
/* 渐变背景增强 */
.action-btn::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(23deg, #68F9FE 0%, #AA93ED 100%);
z-index: -1;
opacity: 0.8;
}
.action-btn:active {
transform: scale(0.98);
box-shadow: 0 2px 8px rgba(104, 249, 254, 0.3);
}
/* 确保所有按钮使用相同的渐变背景 */
.chat-btn,
.add-btn,
.profile-btn {
/* 继承基础action-btn样式不再重复定义渐变背景 */
box-shadow: 0 6px 16px rgba(104, 249, 254, 0.3);
/* 确保与基础按钮相同的阴影效果 */
}
/* 点击效果优化 */
.chat-btn:active,
.add-btn:active,
.profile-btn:active {
transform: scale(0.96);
/* 更强的缩放效果 */
box-shadow: 0 3px 8px rgba(104, 249, 254, 0.4);
/* 点击时的阴影变化 */
}
.action-text {
font-size: 13px;
font-weight: 600;
color: #000000;
}
/* 浮动通知 */
.floating-notifications {
position: absolute;
z-index: 90;
}
.notification-item {
background: rgba(255, 255, 255, 0.95);
padding: 12rpx 20rpx;
border-radius: 32rpx;
backdrop-filter: blur(20rpx);
display: flex;
align-items: center;
gap: 12rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
margin-bottom: 12rpx;
animation: slide-in-left 0.3s ease;
}
.notification-icon {
font-size: 24rpx;
}
.notification-text {
font-size: 24rpx;
color: #2c3e50;
font-weight: 500;
}
@keyframes slide-in-left {
from {
transform: translateX(-100%);
opacity: 0;
}
to {
transform: translateX(0);
opacity: 1;
}
}
/* 加载提示 - 优化设计 */
.loading-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
align-items: center;
justify-content: center;
z-index: 100;
}
.loading-content {
text-align: center;
color: white;
}
.loading-spinner {
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 20px;
}
.spinner-ring {
width: 20px;
height: 20px;
border: 2px solid rgba(255, 255, 255, 0.3);
border-top: 2px solid white;
border-radius: 50%;
margin: 0 3px;
animation: spin 1s linear infinite;
}
.spinner-ring:nth-child(2) {
animation-delay: 0.1s;
}
.spinner-ring:nth-child(3) {
animation-delay: 0.2s;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.loading-text {
font-size: 16px;
font-weight: 600;
margin-bottom: 8px;
display: block;
}
.loading-subtitle {
font-size: 13px;
opacity: 0.8;
display: block;
}
/* 响应式设计 */
@media (max-width: 375px) {
.right-controls {
right: 12px;
}
.control-btn {
width: 40px;
height: 40px;
border-radius: 20px;
}
.btn-icon {
font-size: 16px;
}
.location-btn-inner {
width: 52px;
height: 52px;
border-radius: 26px;
}
.location-btn .location-icon {
font-size: 20px;
}
.user-card {
left: 12px;
right: 12px;
padding: 16px;
}
.card-avatar {
width: 44px;
height: 44px;
}
.card-avatar-text {
font-size: 16px;
}
.action-btn {
padding: 10px 6px;
}
}
/* 深色模式支持 */
@media (prefers-color-scheme: dark) {
.control-btn,
.location-btn-inner,
.user-card {
background: rgba(42, 42, 42, 0.95);
border-color: rgba(255, 255, 255, 0.1);
}
.card-name {
color: #fff;
}
.card-distance,
.close-icon,
.action-text {
color: #ccc;
}
.card-close {
background: rgba(255, 255, 255, 0.1);
}
.card-close:active {
background: rgba(255, 255, 255, 0.2);
}
}
/* 🔥 ===== 新增浮动UI样式 ===== */
/* 浮动头像 */
.floating-avatar {
position: fixed;
right: 32rpx;
z-index: 1000;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.floating-avatar:active {
transform: scale(0.95);
}
.floating-avatar .avatar-container {
width: 96rpx;
height: 96rpx;
position: relative;
border-radius: 50%;
overflow: hidden;
box-shadow: 0 8rpx 32rpx rgba(102, 126, 234, 0.4);
border: 6rpx solid rgba(255, 255, 255, 0.95);
}
.floating-avatar .user-avatar {
width: 100%;
height: 100%;
border-radius: 50%;
}
.floating-avatar .avatar-ring {
position: absolute;
top: -6rpx;
left: -6rpx;
right: -6rpx;
bottom: -6rpx;
border: 4rpx solid transparent;
border-radius: 50%;
background: linear-gradient(45deg, #667eea, #764ba2, #f093fb);
background-clip: border-box;
animation: avatar-ring-rotate 3s linear infinite;
}
@keyframes avatar-ring-rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.floating-avatar .online-indicator {
position: absolute;
bottom: 8rpx;
right: 8rpx;
width: 24rpx;
height: 24rpx;
background: #27ae60;
border: 4rpx solid white;
border-radius: 50%;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.2);
animation: online-pulse 2s ease-in-out infinite;
}
@keyframes online-pulse {
0%,
100% {
transform: scale(1);
}
50% {
transform: scale(1.1);
}
}
/* 底部浮动按钮组 */
.floating-buttons {
position: fixed;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 24rpx;
z-index: 1000;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(20rpx);
border-radius: 40rpx;
padding: 16rpx 40rpx;
box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.05);
border: 2rpx solid rgba(255, 255, 255, 0.8);
}
.floating-btn {
display: flex;
flex-direction: column;
align-items: center;
gap: 8rpx;
padding: 12rpx 24rpx;
background: transparent;
border-radius: 32rpx;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
min-width: 100rpx;
}
.floating-btn:active {
transform: scale(0.95);
}
.floating-btn::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(135deg, rgba(102, 126, 234, 0.1), rgba(118, 75, 162, 0.1));
opacity: 0;
transition: opacity 0.3s ease;
}
.floating-btn:active::before {
opacity: 1;
}
.floating-btn .btn-icon {
position: relative;
width: 56rpx;
height: 56rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
background: #667eea;
box-shadow: 0 4rpx 12rpx rgba(102, 126, 234, 0.2);
z-index: 2;
}
.floating-btn .icon-emoji {
font-size: 32rpx;
color: white;
filter: drop-shadow(0 2rpx 4rpx rgba(0, 0, 0, 0.2));
}
/* 移除图标光晕效果 */
/* 移除光晕动画 */
.floating-btn .btn-label {
font-size: 22rpx;
font-weight: 600;
color: #333;
z-index: 2;
position: relative;
}
/* 🎨 现代化通知徽章 */
.floating-btn .notification-badge {
position: absolute;
top: 8rpx;
right: 8rpx;
min-width: 40rpx;
height: 40rpx;
background: linear-gradient(145deg, #FF6B6B 0%, #FF8E8E 100%);
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
border: 3rpx solid rgba(255, 255, 255, 0.9);
box-shadow:
0 6rpx 20rpx rgba(255, 107, 107, 0.4),
0 2rpx 8rpx rgba(255, 107, 107, 0.3),
inset 0 1rpx 0 rgba(255, 255, 255, 0.3);
z-index: 3;
animation: badgePulse 2s ease-in-out infinite;
}
@keyframes badgePulse {
0%,
100% {
transform: scale(1);
box-shadow:
0 6rpx 20rpx rgba(255, 107, 107, 0.4),
0 2rpx 8rpx rgba(255, 107, 107, 0.3),
inset 0 1rpx 0 rgba(255, 255, 255, 0.3);
}
50% {
transform: scale(1.1);
box-shadow:
0 8rpx 24rpx rgba(255, 107, 107, 0.5),
0 3rpx 12rpx rgba(255, 107, 107, 0.4),
inset 0 1rpx 0 rgba(255, 255, 255, 0.4);
}
}
.floating-btn .badge-text {
font-size: 20rpx;
font-weight: 700;
color: white;
line-height: 1;
padding: 0 6rpx;
text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.2);
}
/* 按钮特定样式 */
.friends-btn .btn-icon {
background: #2ed573;
}
.messages-btn .btn-icon {
background: #667eea;
}
/* 地点按钮 - 当前选中状态 */
.floating-btn.messages-btn:nth-child(3) .btn-icon {
background: #ff9500;
box-shadow: 0 4rpx 16rpx rgba(255, 149, 0, 0.3);
}
/* 侧边操作按钮 */
.side-actions,
.right-actions {
position: fixed;
display: flex;
flex-direction: column;
gap: 24rpx;
z-index: 900;
}
.side-actions {
left: 32rpx;
}
.right-actions {
right: 32rpx;
}
.action-btn {
width: 88rpx;
height: 88rpx;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(20rpx);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 6rpx 24rpx rgba(0, 0, 0, 0.12);
border: 2rpx solid rgba(255, 255, 255, 0.8);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
}
.action-btn:active {
transform: scale(0.9);
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.16);
}
.action-btn .action-icon {
font-size: 36rpx;
filter: drop-shadow(0 2rpx 4rpx rgba(0, 0, 0, 0.1));
z-index: 2;
position: relative;
}
.action-btn .btn-ripple {
position: absolute;
top: 50%;
left: 50%;
width: 0;
height: 0;
border-radius: 50%;
background: rgba(102, 126, 234, 0.2);
transform: translate(-50%, -50%);
transition: all 0.3s ease;
}
.action-btn:active .btn-ripple {
width: 120rpx;
height: 120rpx;
}
/* 特定按钮样式 */
.location-btn .action-icon {
color: #667eea;
}
.layer-btn .action-icon {
color: #2ed573;
}
.search-btn .action-icon {
color: #ff9500;
}
.nearby-btn .action-icon {
color: #ff6b6b;
}
.post-btn .action-icon {
color: #a55eea;
}
.nearby-count {
position: absolute;
top: -8rpx;
right: -8rpx;
min-width: 32rpx;
height: 32rpx;
background: #ff4757;
border-radius: 16rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 18rpx;
font-weight: 700;
color: white;
border: 3rpx solid white;
box-shadow: 0 4rpx 12rpx rgba(255, 71, 87, 0.4);
z-index: 3;
}
/* 响应式适配 */
@media (max-width: 375px) {
.floating-avatar {
right: 24rpx;
}
.floating-avatar .avatar-container {
width: 80rpx;
height: 80rpx;
}
.floating-buttons {
gap: 24rpx;
}
.floating-btn {
padding: 20rpx;
min-width: 100rpx;
}
.floating-btn .btn-icon {
width: 56rpx;
height: 56rpx;
}
.floating-btn .icon-emoji {
font-size: 28rpx;
}
.side-actions,
.right-actions {
gap: 20rpx;
}
.side-actions {
left: 24rpx;
}
.right-actions {
right: 24rpx;
}
.action-btn {
width: 72rpx;
height: 72rpx;
}
.action-btn .action-icon {
font-size: 32rpx;
}
}
/* 🔥 ===== 新增样式 ===== */
/* 用户头像通知小红点 */
.user-avatar .notification-dot {
position: absolute;
top: 8rpx;
right: 8rpx;
width: 16rpx;
height: 16rpx;
background: #ff4757;
border: 3rpx solid white;
border-radius: 50%;
box-shadow: 0 4rpx 12rpx rgba(255, 71, 87, 0.4);
z-index: 10;
animation: notification-pulse 2s ease-in-out infinite;
}
@keyframes notification-pulse {
0%,
100% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(1.2);
opacity: 0.8;
}
}
/* 附近的人数量显示 */
.right-controls .nearby-count {
position: absolute;
top: -8rpx;
right: -8rpx;
min-width: 32rpx;
height: 32rpx;
background: #ff4757;
border-radius: 16rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 18rpx;
font-weight: 700;
color: white;
border: 3rpx solid white;
box-shadow: 0 4rpx 12rpx rgba(255, 71, 87, 0.4);
z-index: 3;
padding: 0 6rpx;
}
/* 附近的人按钮样式 */
.right-controls .nearby-btn {
position: relative;
}
.right-controls .nearby-icon {
font-size: 20px;
color: #ff6b6b;
}
/* 深色模式适配 */
@media (prefers-color-scheme: dark) {
.floating-btn,
.action-btn {
background: rgba(42, 42, 42, 0.95);
border-color: rgba(255, 255, 255, 0.1);
}
.floating-btn .btn-label {
color: #fff;
}
.floating-avatar .avatar-container {
border-color: rgba(42, 42, 42, 0.95);
}
.user-avatar .notification-dot,
.nearby-count {
border-color: rgba(42, 42, 42, 0.95);
}
}
/* 📱 响应式设计 - 现代化导航适配 */
@media screen and (max-width: 375px) {
/* 小屏幕适配 */
.floating-buttons {
gap: 32rpx;
}
.floating-btn {
min-width: 120rpx;
padding: 24rpx 20rpx;
}
.floating-btn .btn-icon {
width: 64rpx;
height: 64rpx;
}
.floating-btn .icon-emoji {
font-size: 32rpx;
}
.floating-btn .btn-label {
font-size: 24rpx;
}
.avatar-container {
width: 80rpx;
height: 80rpx;
}
.avatar-text {
font-size: 28rpx;
}
.online-dot {
width: 20rpx;
height: 20rpx;
}
}
@media screen and (min-width: 414px) {
/* 大屏幕优化 */
.floating-buttons {
gap: 48rpx;
}
.floating-btn {
min-width: 160rpx;
padding: 32rpx 28rpx;
}
.floating-btn .btn-icon {
width: 80rpx;
height: 80rpx;
}
.floating-btn .icon-emoji {
font-size: 40rpx;
}
.floating-btn .btn-label {
font-size: 28rpx;
}
.avatar-container {
width: 96rpx;
height: 96rpx;
}
.avatar-text {
font-size: 36rpx;
}
.online-dot {
width: 28rpx;
height: 28rpx;
}
}
/* 🎨 特殊设备适配 */
@media screen and (max-height: 667px) {
/* iPhone SE等小屏设备 */
.floating-buttons {
bottom: calc(env(safe-area-inset-bottom) + 32rpx) !important;
}
}
@media screen and (min-height: 812px) {
/* iPhone X及以上设备 */
.floating-buttons {
bottom: calc(env(safe-area-inset-bottom) + 48rpx) !important;
}
}
/* 🎨 横屏适配 */
@media screen and (orientation: landscape) {
.floating-buttons {
gap: 24rpx;
bottom: calc(env(safe-area-inset-bottom) + 24rpx) !important;
}
.floating-btn {
min-width: 100rpx;
padding: 20rpx 16rpx;
}
.floating-btn .btn-label {
font-size: 22rpx;
}
.avatar-container {
width: 72rpx;
height: 72rpx;
}
.avatar-text {
font-size: 26rpx;
}
}
.remind-slider-block {
margin: 18px 0 8px 0;
display: flex;
align-items: center;
gap: 10px;
}
.remind-label {
font-size: 15px;
color: #333;
margin-right: 8px;
}
.remind-value {
font-size: 15px;
color: #667eea;
margin-left: 8px;
font-weight: 600;
}
.remind-desc {
font-size: 13px;
color: #888;
margin-top: 8px;
text-align: left;
}
.remind-title-block {
margin-bottom: 8px;
text-align: left;
}
.remind-title {
font-size: 18px;
font-weight: 700;
color: #333;
display: block;
}
.remind-subtitle {
font-size: 13px;
color: #888;
margin-top: 2px;
display: block;
}
.remind-friends-mode-row {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 12px;
margin-bottom: 10px;
}
.remind-friends-block {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 4px;
}
.remind-friends-avatars {
display: flex;
gap: 4px;
margin-top: 2px;
}
.avatar-placeholder {
background: #f0f0f0;
color: #bbb;
}
.remind-mode-block {
display: flex;
align-items: center;
gap: 8px;
}
.remind-mode-radio {
display: flex;
gap: 8px;
}
.remind-mode-label {
font-size: 14px;
color: #333;
margin-right: 8px;
display: flex;
align-items: center;
gap: 2px;
}
.remind-value.highlight {
color: #ff9500;
font-size: 17px;
font-weight: 700;
}
.remind-mode-checkbox {
display: flex;
gap: 8px;
}
/* 好友选择弹窗样式 */
.friend-select-modal {
z-index: 20000;
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.45);
display: flex;
align-items: center;
justify-content: center;
}
.friend-select-content {
background: #fff;
border-radius: 18px;
width: 320px;
max-width: 90vw;
max-height: 70vh;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18);
display: flex;
flex-direction: column;
align-items: stretch;
padding: 20px 16px 12px 16px;
}
.friend-select-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 8px;
}
.friend-select-title {
font-size: 18px;
font-weight: 700;
color: #333;
flex: 1;
text-align: left;
}
.friend-select-close {
font-size: 22px;
color: #888;
padding: 0 8px;
cursor: pointer;
transition: color 0.2s;
}
.friend-select-close:active {
color: #ff4757;
}
/* 好友选择弹窗美化 */
.share-friends-list {
/* 确保滚动容器有足够内边距,避免内容贴边 */
padding: 0 10px;
}
.friend-list-scroll {
max-height: 45vh;
padding-bottom: 8px;
}
.result-info-title {
color: #fff;
margin-top: 20px;
padding: 0 10px;
/* 与内容区对齐 */
}
.friend-item {
display: flex;
align-items: center;
padding: 10px;
border-radius: 10px;
margin-bottom: 8px;
background: transparent;
position: relative;
cursor: pointer;
/* 关键使用justify-content: space-between实现两端对齐 */
justify-content: space-between;
/* 固定左右内边距,确保文字长时两侧距离相等 */
margin-left: auto;
margin-right: auto;
width: calc(100% - 20px);
/* 减去左右间距,确保居中对齐 */
}
/* 增加交互反馈 */
.friend-item:hover {
background-color: rgba(255, 255, 255, 0.1);
}
.friend-avatar {
width: 80px;
height: 80px;
border-radius: 10%;
/* 取消底部margin改为右侧margin与文字分隔 */
margin-right: 15px;
flex-shrink: 0;
/* 头像不压缩 */
}
.friend-name {
/* 使用rpx保持移动端适配一致性 */
width: 70px;
font-size: 24rpx;
color: #fff;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
/* 关键文字区域自适应通过容器padding控制两侧距离 */
padding-right: 15px;
/* 与头像左侧间距保持一致 */
flex-grow: 1;
/* 文字区域占满剩余空间 */
text-align: left;
/* 确保文字左对齐 */
}
.friend-item:active {
transform: scale(0.97);
box-shadow: 0 2px 8px rgba(24, 144, 255, 0.10);
}
.friend-item.selected {
background: #e6f7ff;
border: 1.5px solid #1890ff;
box-shadow: 0 2px 12px rgba(24, 144, 255, 0.10);
}
.friend-item.selected .friend-avatar,
.friend-item.selected .friend-avatar-txt {
border: 2.5px solid #1890ff;
box-shadow: 0 0 0 2px #bae7ff;
}
.friend-item.disabled {
background: #f5f5f5;
color: #bbb;
cursor: not-allowed;
opacity: 0.7;
}
.friend-item.disabled .friend-avatar,
.friend-item.disabled .friend-avatar-txt {
filter: grayscale(1);
border: 2px solid #eee;
}
.friend-avatar,
.friend-avatar-txt {
width: 36px;
height: 36px;
border-radius: 50%;
margin-right: 12px;
background: #f0f0f0;
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
color: #888;
font-weight: 600;
border: 2px solid #f0f0f0;
transition: border 0.18s, box-shadow 0.18s, filter 0.18s;
}
.friend-nickname {
font-size: 15px;
color: #222;
font-weight: 500;
flex: 1;
letter-spacing: 0.5px;
}
.friend-item.selected .friend-nickname {
color: #1890ff;
}
.friend-check {
margin-left: auto;
color: #1890ff;
font-size: 18px;
font-weight: bold;
background: #fff;
border-radius: 50%;
width: 26px;
height: 26px;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 1px 4px rgba(24, 144, 255, 0.08);
border: 2px solid #e6f7ff;
transition: background 0.18s, color 0.18s, border 0.18s;
}
.friend-item.selected .friend-check {
background: #1890ff;
color: #fff;
border: 2px solid #fff;
}
.friend-item.disabled .friend-check {
background: #eee;
color: #bbb;
border: 2px solid #eee;
}
.friend-selected-row {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 10px;
min-height: 40px;
}
.friend-selected-avatar {
width: 36px;
height: 36px;
border-radius: 50%;
background: #f0f0f0;
display: flex;
align-items: center;
justify-content: center;
position: relative;
font-size: 18px;
color: #888;
box-shadow: 0 2px 8px rgba(102, 126, 234, 0.08);
border: 2px solid #667eea;
cursor: pointer;
transition: box-shadow 0.2s;
}
.friend-selected-avatar:active {
box-shadow: 0 4px 16px rgba(102, 126, 234, 0.18);
}
.friend-selected-remove {
position: absolute;
top: -8px;
right: -8px;
width: 18px;
height: 18px;
background: #ff4757;
color: #fff;
border-radius: 50%;
font-size: 13px;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2px 8px rgba(255, 71, 87, 0.18);
border: 2px solid #fff;
}
.friend-selected-placeholder {
background: #f8f8f8;
color: #bbb;
border: 2px dashed #ddd;
}
.friend-search-input {
width: 100%;
height: 32px;
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 0 12px;
font-size: 15px;
margin-bottom: 10px;
outline: none;
box-sizing: border-box;
}
.friend-select-done[disabled] {
background: #eee !important;
color: #bbb !important;
border: none;
}
.card-actions-right {
display: flex;
align-items: center;
gap: 8px;
position: absolute;
right: 12px;
top: 20px;
}
.remind-save-btn {
padding: 0 14px;
height: 28px;
line-height: 28px;
font-size: 14px;
border-radius: 14px;
margin-right: 2px;
}
/* 底部导航栏 */
.bottom-tab-bar {
position: fixed;
left: 0;
right: 0;
bottom: 0;
height: 56px;
background: #fff;
display: flex;
align-items: center;
justify-content: space-around;
box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.06);
z-index: 10001;
}
.tab-btn {
flex: 1;
height: 40px;
margin: 0 8px;
border: none;
background: none;
font-size: 16px;
color: #666;
border-radius: 20px;
transition: background 0.2s;
}
.tab-btn:active {
background: #f0f4ff;
color: #1890ff;
}
/* 地点标记弹窗美化 */
.location-mark-modal {
z-index: 20000;
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.45);
display: flex;
align-items: center;
justify-content: center;
}
.location-mark-content {
background: #fff;
border-radius: 24px;
width: 370px;
max-width: 96vw;
max-height: 80vh;
box-shadow: 0 12px 40px rgba(24, 144, 255, 0.10), 0 2px 8px rgba(0, 0, 0, 0.10);
display: flex;
flex-direction: column;
padding: 0 0 18px 0;
overflow: hidden;
}
.location-mark-header {
position: relative;
display: flex;
align-items: center;
justify-content: center;
height: 56px;
background: #f8fbff;
}
.location-mark-title {
font-size: 20px;
font-weight: 700;
color: #222;
letter-spacing: 1px;
}
.location-mark-close {
position: absolute;
right: 18px;
top: 50%;
transform: translateY(-50%);
font-size: 22px;
color: #bbb;
padding: 4px 8px;
border-radius: 50%;
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
.location-mark-close:active {
background: #f0f4ff;
color: #ff4757;
}
.location-mark-divider {
height: 1px;
background: #f0f4ff;
margin: 0 0 8px 0;
}
.location-mark-search-row {
display: flex;
align-items: center;
background: #f4f7fa;
border-radius: 18px;
margin: 16px 18px 10px 18px;
padding: 0 10px;
box-shadow: 0 1px 4px rgba(24, 144, 255, 0.04);
position: relative;
}
.search-icon {
font-size: 15px;
color: #b0b8c7;
}
.location-mark-search {
flex: 1;
height: 36px;
border: none;
background: transparent;
font-size: 15px;
outline: none;
padding: 0 4px;
}
.clear-icon {
font-size: 16px;
color: #b0b8c7;
margin-left: 4px;
cursor: pointer;
transition: color 0.2s;
}
.clear-icon:active {
color: #ff4757;
}
.location-mark-list {
flex: 1;
min-height: 120px;
max-height: 340px;
overflow-y: auto;
padding: 0 12px 0 12px;
}
.location-mark-item-card {
background: #fff;
border-radius: 16px;
box-shadow: 0 2px 12px rgba(24, 144, 255, 0.06);
margin-bottom: 16px;
padding: 0 0 0 0;
transition: box-shadow 0.2s;
display: flex;
flex-direction: column;
}
.location-mark-item-card:active {
box-shadow: 0 4px 18px rgba(24, 144, 255, 0.13);
}
.location-mark-item-main {
display: flex;
align-items: flex-start;
justify-content: space-between;
padding: 16px 16px 10px 16px;
}
.location-mark-item-info {
flex: 1;
min-width: 0;
}
.location-mark-name-row {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 2px;
}
.location-mark-name {
font-size: 17px;
font-weight: 700;
color: #1890ff;
max-width: 110px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.location-mark-edit-btn,
.location-mark-del-btn {
font-size: 13px;
padding: 0 8px;
height: 24px;
line-height: 24px;
border-radius: 12px;
margin-left: 2px;
display: flex;
align-items: center;
border: none;
background: #f4f7fa;
color: #1890ff;
transition: background 0.2s, color 0.2s;
}
.location-mark-edit-btn:active {
background: #e6f7ff;
color: #1761a0;
}
.location-mark-del-btn {
color: #ff4757;
background: #fff0f0;
}
.location-mark-del-btn:active {
background: #ffeaea;
color: #c82333;
}
.location-mark-edit-btn .iconfont,
.location-mark-del-btn .iconfont {
font-size: 15px;
margin-right: 2px;
}
.location-mark-coord {
font-size: 13px;
color: #888;
overflow: hidden;
margin-top: 2px;
}
.location-mark-meta {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 8px;
margin-left: 14px;
}
.location-mark-friends {
display: flex;
align-items: center;
gap: 2px;
}
.location-mark-friend-avatar {
width: 28px;
height: 28px;
border-radius: 50%;
background: #f0f0f0;
border: 1.5px solid #fff;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
display: flex;
align-items: center;
justify-content: center;
font-size: 15px;
color: #888;
font-weight: 600;
overflow: hidden;
}
.location-mark-friend-avatar image {
width: 100%;
height: 100%;
border-radius: 50%;
}
.location-mark-friend-btn {
width: 28px;
height: 28px;
border-radius: 50%;
background: #e6f7ff;
color: #1890ff;
font-size: 20px;
line-height: 28px;
padding: 0;
border: none;
margin-left: 2px;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 1px 4px rgba(24, 144, 255, 0.08);
transition: background 0.2s, color 0.2s;
cursor: pointer;
}
.location-mark-friend-btn:active {
background: #bae7ff;
color: #1761a0;
}
.location-mark-type-tag {
font-size: 13px;
color: #fff;
border-radius: 12px;
padding: 3px 16px;
cursor: pointer;
user-select: none;
font-weight: 600;
box-shadow: 0 1px 4px rgba(24, 144, 255, 0.08);
transition: background 0.2s;
margin-top: 4px;
}
.location-mark-type-tag.arrive {
background: linear-gradient(90deg, #1890ff 60%, #40a9ff 100%);
}
.location-mark-type-tag.leave {
background: linear-gradient(90deg, #faad14 60%, #ffd666 100%);
color: #fff;
}
.location-mark-type-tag:active {
filter: brightness(0.92);
}
.location-mark-empty {
text-align: center;
color: #bbb;
font-size: 16px;
margin-top: 60px;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
}
.empty-icon {
font-size: 38px;
color: #e6f7ff;
margin-bottom: 2px;
}
/* 遮罩层 */
.location-mark-mask {
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.45);
z-index: 20000;
}
/* 弹窗内容区 */
.location-mark-dialog {
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
background: #fff;
border-radius: 24px;
width: 370px;
max-width: 96vw;
max-height: 80vh;
box-shadow: 0 12px 40px rgba(24, 144, 255, 0.10), 0 2px 8px rgba(0, 0, 0, 0.10);
display: flex;
flex-direction: column;
padding: 0 0 18px 0;
overflow: hidden;
z-index: 20001;
animation: locationMarkDialogFadeIn 0.25s cubic-bezier(.4, 0, .2, 1);
}
/* 弹窗动画 */
@keyframes locationMarkDialogFadeIn {
0% {
opacity: 0;
transform: translate(-50%, -46%) scale(0.96);
}
100% {
opacity: 1;
transform: translate(-50%, -50%) scale(1);
}
}
.location-mark-dialog-animate {
animation: locationMarkDialogFadeIn 0.25s cubic-bezier(.4, 0, .2, 1);
}
/* 底部弹出卡片样式 */
.location-mark-sheet {
position: fixed;
left: 0;
right: 0;
bottom: 0;
background: #fff;
border-top-left-radius: 22px;
border-top-right-radius: 22px;
box-shadow: 0 -8px 32px rgba(24, 144, 255, 0.10), 0 -2px 8px rgba(0, 0, 0, 0.10);
z-index: 20001;
width: 100vw;
max-width: 100vw;
min-height: 220px;
max-height: 80vh;
display: flex;
flex-direction: column;
animation: locationMarkSheetSlideIn 0.28s cubic-bezier(.4, 0, .2, 1);
}
@keyframes locationMarkSheetSlideIn {
0% {
transform: translateY(60px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
.location-mark-sheet-animate {
animation: locationMarkSheetSlideIn 0.28s cubic-bezier(.4, 0, .2, 1);
}
.location-mark-sheet-handle-row {
display: flex;
align-items: center;
justify-content: space-between;
height: 32px;
padding: 0 12px 0 0;
position: relative;
}
.location-mark-sheet-handle {
width: 44px;
height: 5px;
border-radius: 3px;
background: #e6eaf0;
margin: 10px auto 0 auto;
}
.location-mark-sheet-close {
position: absolute;
right: 16px;
top: 8px;
font-size: 22px;
color: #bbb;
padding: 4px 8px;
border-radius: 50%;
cursor: pointer;
transition: background 0.2s, color 0.2s;
z-index: 1;
}
.location-mark-sheet-close:active {
background: #f0f4ff;
color: #ff4757;
}
.location-mark-sheet-title {
font-size: 18px;
font-weight: 700;
color: #222;
text-align: center;
margin-bottom: 6px;
}
.location-mark-list-sheet {
flex: 1;
min-height: 120px;
max-height: 54vh;
overflow-y: auto;
padding: 0 12px 0 12px;
}
/* 兼容原有卡片内容美化样式 */
/* POI提醒操作弹窗名称可编辑样式 */
.card-name-editable {
margin-bottom: 2px;
}
.card-name-input {
font-size: 17px;
font-weight: 700;
color: #222;
border: none;
background: transparent;
outline: none;
width: 100%;
padding: 0 0 2px 0;
border-bottom: 1.5px solid #e6eaf0;
transition: border-color 0.2s;
}
.card-name-input:focus {
border-bottom: 1.5px solid #1890ff;
}
.card-name-tip {
font-size: 12px;
color: #b0b8c7;
margin-top: 2px;
margin-left: 2px;
}
/* 优化后的地点标记卡片布局 */
.location-mark-item-card {
cursor: pointer;
transition: all 0.2s ease;
border-radius: 12px;
margin-bottom: 8px;
background: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
border: 1px solid #f0f0f0;
}
.location-mark-item-card:active {
transform: scale(0.98);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
background: #f8f9fa;
}
.location-mark-item-main-opt {
display: flex;
align-items: flex-start;
justify-content: space-between;
padding: 16px 16px 6px 16px;
}
.location-mark-item-info-opt {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
justify-content: center;
}
.location-mark-name-opt {
font-size: 17px;
font-weight: 700;
color: #1890ff;
max-width: 140px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.location-mark-coord-opt {
font-size: 12px;
color: #b0b8c7;
margin-top: 2px;
max-width: 140px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.location-mark-actions-opt {
display: flex;
align-items: flex-start;
gap: 6px;
margin-left: 12px;
}
.location-mark-edit-btn-opt,
.location-mark-del-btn-opt {
font-size: 13px;
padding: 0 8px;
height: 24px;
line-height: 24px;
border-radius: 12px;
display: flex;
align-items: center;
border: none;
background: #f4f7fa;
color: #1890ff;
transition: background 0.2s, color 0.2s;
}
.location-mark-edit-btn-opt:active {
background: #e6f7ff;
color: #1761a0;
}
.location-mark-del-btn-opt {
color: #ff4757;
background: #fff0f0;
}
.location-mark-del-btn-opt:active {
background: #ffeaea;
color: #c82333;
}
.location-mark-edit-btn-opt .iconfont,
.location-mark-del-btn-opt .iconfont {
font-size: 15px;
margin-right: 2px;
}
.location-mark-meta-opt {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 16px 12px 16px;
gap: 8px;
}
.location-mark-friends-opt {
display: flex;
align-items: center;
gap: 2px;
}
.location-mark-friend-avatar-opt {
width: 22px;
height: 22px;
border-radius: 50%;
background: #f0f0f0;
border: 1.5px solid #fff;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
color: #888;
font-weight: 600;
overflow: hidden;
}
.location-mark-friend-avatar-opt image {
width: 100%;
height: 100%;
border-radius: 50%;
}
.location-mark-friend-btn-opt {
width: 22px;
height: 22px;
border-radius: 50%;
background: #e6f7ff;
color: #1890ff;
font-size: 16px;
line-height: 22px;
padding: 0;
border: none;
margin-left: 2px;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 1px 4px rgba(24, 144, 255, 0.08);
transition: background 0.2s, color 0.2s;
cursor: pointer;
}
.location-mark-friend-btn-opt:active {
background: #bae7ff;
color: #1761a0;
}
.location-mark-type-tag-opt {
font-size: 12px;
color: #fff;
border-radius: 10px;
padding: 2px 12px;
cursor: pointer;
user-select: none;
font-weight: 600;
box-shadow: 0 1px 4px rgba(24, 144, 255, 0.08);
transition: background 0.2s;
margin-left: 8px;
}
.location-mark-type-tag-opt.arrive {
background: linear-gradient(90deg, #1890ff 60%, #40a9ff 100%);
}
.location-mark-type-tag-opt.leave {
background: linear-gradient(90deg, #faad14 60%, #ffd666 100%);
color: #fff;
}
.location-mark-type-tag-opt:active {
filter: brightness(0.92);
}
/* 地点标记浮动按钮 */
.location-mark-fab {
position: absolute;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
width: 56px;
height: 56px;
border-radius: 50%;
background: linear-gradient(135deg, #1890ff 0%, #40a9ff 100%);
box-shadow: 0 4px 12px rgba(24, 144, 255, 0.3);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
z-index: 10;
}
.location-mark-fab:active {
transform: translateX(-50%) scale(0.95);
box-shadow: 0 2px 8px rgba(24, 144, 255, 0.4);
background: linear-gradient(135deg, #1761a0 0%, #1890ff 100%);
}
.location-mark-fab-icon {
font-size: 28px;
font-weight: 300;
color: #fff;
line-height: 1;
user-select: none;
transition: transform 0.2s ease;
}
.location-mark-fab:active .location-mark-fab-icon {
transform: rotate(45deg);
}
/*POI周边列表弹窗*/
.poi-around-modal {
position: fixed;
left: 0;
right: 0;
bottom: 0;
top: 0;
z-index: 9999;
display: flex;
align-items: flex-end;
justify-content: center;
font-family: "PingFang SC", "Microsoft YaHei", Arial, sans-serif;
}
.poi-around-mask {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.32);
}
.poi-around-sheet {
position: relative;
width: 92vw;
max-width: 500px;
background: #fff;
border-radius: 18px 18px 0 0;
padding: 24px 18px 18px 18px;
box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.10);
z-index: 1;
min-height: 220px;
animation: popUpSheet 0.25s cubic-bezier(.4, 1.4, .6, 1) 1;
}
@keyframes popUpSheet {
from {
transform: translateY(100px);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
.poi-around-close-x {
position: absolute;
top: 14px;
right: 14px;
width: 32px;
height: 32px;
background: #f5f6fa;
border-radius: 50%;
color: #888;
font-size: 20px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: background 0.2s, color 0.2s;
z-index: 2;
}
.poi-around-close-x:active {
background: #e6eaf0;
color: #1890ff;
}
.poi-around-title {
font-size: 19px;
font-weight: bold;
margin-bottom: 16px;
text-align: center;
letter-spacing: 1px;
color: #222;
}
.poi-around-list {
max-height: 52vh;
overflow-y: auto;
margin-bottom: 10px;
}
.poi-around-item {
padding: 14px 0 10px 0;
border-bottom: 1px solid #f0f0f0;
cursor: pointer;
transition: background 0.18s;
border-radius: 8px;
}
.poi-around-item:active {
background: #f5f8ff;
}
.poi-around-name {
font-size: 16px;
font-weight: 600;
color: #1890ff;
margin-bottom: 2px;
word-break: break-all;
}
.poi-around-address {
font-size: 13px;
color: #888;
margin-top: 1px;
word-break: break-all;
}
.poi-around-distance {
font-size: 13px;
color: #faad14;
margin-top: 2px;
}
.poi-around-close-btn {
margin: 18px auto 0 auto;
width: 90px;
text-align: center;
background: #f5f5f5;
border-radius: 10px;
padding: 10px 0;
color: #666;
font-size: 15px;
letter-spacing: 1px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
transition: background 0.2s, color 0.2s;
}
.poi-around-close-btn:active {
background: #e6eaf0;
color: #1890ff;
}
.poi-around-empty {
text-align: center;
color: #bbb;
padding: 32px 0;
font-size: 15px;
}
/**搜索结果信息**/
.result-info-modal {
position: fixed;
left: 0;
right: 0;
bottom: 0;
z-index: 999999;
display: flex;
justify-content: center;
align-items: flex-end;
}
.merchant-info-meta-text {
font-size: 20px;
color: #ffffff;
}
.merchant-info-meta-content {
margin-top: 10rpx;
font-size: 12px;
color: #ffffff;
}
.result-info-card {
width: 100%;
background: #1C1C1E;
border-radius: 20px 20px 0 0;
box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.10);
padding: 0px 20px 18px 20px;
margin-bottom: env(safe-area-inset-bottom);
position: relative;
animation: slideUp 0.25s;
}
/**商家信息**/
.merchant-info-modal {
position: fixed;
left: 0;
right: 0;
bottom: 0;
z-index: 9999;
background: rgba(0, 0, 0, 0.3);
display: flex;
justify-content: center;
align-items: flex-end;
/* 为安卓设备提供足够的底部间距,避免内容被遮挡 */
/* 在安卓上 env(safe-area-inset-bottom) 会返回 0所以最小间距是 160rpx */
padding-bottom: calc(40rpx + env(safe-area-inset-bottom) + 140rpx);
}
.merchant-info-card {
width: 92vw;
background: linear-gradient(180deg, #ffffff 0%, #fafafa 100%);
border-radius: 32rpx;
box-shadow: 0 -12rpx 60rpx rgba(0, 0, 0, 0.15);
padding: 48rpx 40rpx 40rpx;
/* 移除 margin-bottom改用父容器的 padding-bottom 来提供间距 */
position: relative;
animation: slideUp 0.3s ease-out;
max-height: 70vh;
overflow-y: auto;
}
@keyframes slideUp {
from {
transform: translateY(100%);
}
to {
transform: translateY(0);
}
}
.close-btn-abs {
position: absolute;
top: 14rpx;
right: 14rpx;
background: rgba(207, 207, 207, 0.95);
border: 2rpx solid rgba(0, 0, 0, 0.08);
border-radius: 50%;
width: 64rpx;
height: 64rpx;
line-height: 64rpx;
font-size: 44rpx;
display: flex;
align-items: center;
justify-content: center;
z-index: 10;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
padding: 0;
transition: all 0.2s ease;
}
.close-btn-abs .close-icon {
color: #666;
font-size: 40rpx;
font-weight: 300;
}
.close-btn-abs:active {
background: rgba(0, 0, 0, 0.05);
transform: scale(0.95);
}
/* 菜品信息容器 */
.dish-info-container {
display: flex;
flex-direction: column;
gap: 32rpx;
margin-top: 8rpx;
width: 100%;
}
.dish-image-row{
display: flex;
gap: 24rpx;
align-items: flex-start;
}
.dish-description{
font-size: 28rpx;
color: #666;
display: block; /* 确保文本元素正确显示 */
width: 100%;
line-height: 1.6;
}
.dish-description-row{
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 最多显示2行 */
line-clamp: 2; /* 标准属性,提升兼容性 */
text-overflow: ellipsis;
word-break: break-all;
line-height: 1.6;
max-height: calc(1.6em * 2); /* 限制最大高度为2行 */
margin-top: 4rpx;
}
/* 左侧:菜品宣传图 */
.dish-image {
width: 220rpx;
height: 220rpx;
border-radius: 20rpx;
background: linear-gradient(135deg, #f5f5f5 0%, #e8e8e8 100%);
flex-shrink: 0;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08);
overflow: hidden;
}
/* 右侧:菜品详情 */
.dish-detail {
flex: 1;
min-width: 0; /* 允许 flex 子元素收缩 */
display: flex;
flex-direction: column;
gap: 16rpx;
overflow: hidden; /* 防止内容溢出 */
padding-top: 4rpx;
}
/* 第一行:标题 */
.dish-title-row {
display: flex;
align-items: flex-start;
min-width: 0;
width: 100%;
}
.dish-title {
font-size: 36rpx;
font-weight: 700;
color: #2c3e50;
line-height: 1.5;
width: 100%;
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 最多显示2行 */
line-clamp: 2; /* 标准属性,提升兼容性 */
text-overflow: ellipsis;
word-break: break-all;
max-height: calc(1.5em * 2); /* 限制最大高度为2行 */
letter-spacing: 0.5rpx;
}
/* 第二行:销售数据和排名 */
.dish-sales-row {
display: flex;
align-items: center;
gap: 24rpx;
flex-wrap: wrap;
}
.dish-info-address{
font-size: 26rpx;
color: #666;
margin-top: 8rpx;
display: block; /* 确保文本元素正确显示 */
width: 100%;
padding: 16rpx 20rpx;
background: linear-gradient(135deg, #f8f9fa 0%, #f1f3f5 100%);
border-radius: 16rpx;
border: 1rpx solid rgba(0, 0, 0, 0.05);
line-height: 1.6;
word-break: break-all;
}
.dish-sales {
font-size: 24rpx;
color: #666;
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
border-radius: 12rpx;
padding: 8rpx 16rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex-shrink: 1; /* 允许收缩 */
min-width: 0;
border: 1rpx solid rgba(0, 0, 0, 0.05);
}
.dish-ranking {
font-size: 24rpx;
color: #ff6f3c;
background: linear-gradient(135deg, #fff5f2 0%, #ffe5d9 100%);
border-radius: 12rpx;
padding: 8rpx 16rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex-shrink: 1; /* 允许收缩 */
min-width: 0;
border: 1rpx solid rgba(255, 111, 60, 0.2);
font-weight: 500;
}
/* 第三行:评分和店铺信息 */
.dish-rating-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16rpx;
flex-wrap: nowrap;
min-width: 0; /* 允许 flex 子元素收缩 */
overflow: hidden; /* 防止内容溢出 */
}
.dish-rating-left {
display: flex;
align-items: center;
gap: 16rpx;
flex: 1;
min-width: 0; /* 允许 flex 子元素收缩 */
overflow: hidden; /* 防止内容溢出 */
}
.dish-rating {
font-size: 28rpx;
color: #ff6f3c;
font-weight: 700;
flex-shrink: 0; /* 评分不压缩 */
display: flex;
align-items: center;
}
.dish-shop-name {
font-size: 26rpx;
color: #666;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1;
min-width: 0; /* 允许 flex 子元素收缩 */
padding-left: 12rpx;
border-left: 2rpx solid #e0e0e0;
}
.dish-district {
font-size: 24rpx;
color: #999;
margin-left: auto;
flex-shrink: 0; /* 防止被压缩 */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
max-width: 200rpx; /* 限制最大宽度 */
background: #f5f5f5;
padding: 6rpx 12rpx;
border-radius: 8rpx;
}
/* 第四行:价格信息 */
.dish-price-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16rpx;
flex-wrap: nowrap;
margin-top: 12rpx;
padding: 24rpx 20rpx;
background: linear-gradient(135deg, #f5e9e9 0%, #ffffff 100%);
border-radius: 20rpx;
border: 1rpx solid rgba(255, 111, 60, 0.15);
position: relative;
min-width: 0; /* 允许 flex 子元素收缩 */
overflow: hidden; /* 防止内容溢出 */
}
.dish-price-left {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 8rpx;
flex: 1;
min-width: 0; /* 允许 flex 子元素收缩 */
flex-wrap: nowrap;
z-index: 2;
margin-right: 100rpx;
overflow: hidden; /* 防止内容溢出 */
}
.dish-group-price {
font-size: 42rpx;
font-weight: 700;
color: #ff6f3c;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 100%;
line-height: 1.2;
letter-spacing: 1rpx;
}
.dish-discount {
font-size: 24rpx;
color: #ff6f3c;
background: linear-gradient(135deg, #fff5f2 0%, #ffe5d9 100%);
border-radius: 10rpx;
padding: 6rpx 14rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: fit-content;
border: 1rpx solid rgba(255, 111, 60, 0.2);
font-weight: 500;
margin-top: 8rpx;
}
.dish-original-price {
font-size: 24rpx;
color: #999;
text-decoration: line-through;
}
.dish-go-btn {
width: 180rpx;
height: 80rpx;
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
flex-shrink: 0;
z-index: 1;
filter: drop-shadow(0 4rpx 8rpx rgba(0, 0, 0, 0.1));
transition: transform 0.2s ease;
}
.dish-buy-btn {
background: linear-gradient(135deg, #ff6f3c 0%, #ff8c5a 100%);
color: #fff;
border: none;
border-radius: 40rpx;
padding: 2rpx 40rpx;
font-size: 28rpx;
font-weight: 600;
margin-left: auto;
box-shadow: 0 4rpx 16rpx rgba(255, 111, 60, 0.3);
}
.dish-buy-btn:active {
opacity: 0.8;
}
.merchant-info-header {
display: flex;
justify-content: flex-start;
align-items: center;
margin-bottom: 2px;
}
.merchant-name {
font-size: 20px;
font-weight: bold;
color: #222;
flex: 1;
line-height: 1.2;
}
.merchant-info-row {
margin: 8px 0 0 0;
color: #666;
font-size: 14px;
display: flex;
flex-wrap: wrap;
gap: 12px;
}
.merchant-info-meta {
margin-top: 2px;
color: #999;
font-size: 13px;
}
.merchant-address {
color: #fff;
font-size: 15px;
font-weight: 500;
}
.merchant-packages {
margin: 16px 0 8px 0;
}
.package-card {
background: #f7f8fa;
border-radius: 12px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.03);
padding: 12px 14px 10px 14px;
margin-bottom: 10px;
display: flex;
flex-direction: column;
transition: box-shadow 0.2s;
}
.package-card-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2px;
}
.package-title {
font-weight: 600;
font-size: 15px;
color: #333;
}
.package-price {
color: #1aad19;
font-weight: bold;
font-size: 15px;
}
.package-desc {
color: #888;
font-size: 13px;
margin-top: 2px;
}
.merchant-actions {
display: flex;
justify-content: flex-start;
margin-top: 14px;
gap: 10px;
}
.merchant-navigation-img {
width: 80rpx;
/* 图标宽度 */
height: 80rpx;
/* 图标高度 */
margin-bottom: 10rpx;
/* 图标与文字的间距 */
}
.action-text-navigation {
font-size: 24rpx;
/* 文字大小 */
color: #fff;
/* 文字颜色 */
text-align: center;
/* 文字自身居中(增强对齐效果) */
}
.share-friends-scroll {
/* 容器样式,根据需要调整 */
padding: 16px;
}
.share-friends-list-share {
/* 滚动容器不换行 */
white-space: nowrap;
/* 移除滚动条但保留功能(可选) */
scrollbar-width: none;
-webkit-overflow-scrolling: touch;
/* 平滑滚动 */
}
/* 隐藏滚动条 */
.share-friends-list-share::-webkit-scrollbar {
display: none;
}
.friend-item-share {
/* 每个好友项 inline-block 确保横向排列 */
display: inline-block;
/* 文本居中对齐 */
text-align: center;
/* 项之间的间距 */
margin-right: 20px;
}
.avatar-container-share {
/* 头像容器固定宽度,确保对齐 */
width: 64px;
height: 64px;
margin: 0 auto;
/* 水平居中 */
}
.friend-avatar-share {
/* 头像样式 */
width: 100%;
height: 100%;
border-radius: 10%;
/* 圆形头像 */
display: block;
}
.friend-name-share {
/* 文本样式 */
display: inline-block;
max-width: 80px;
/* 最大宽度,根据需要调整 */
margin-top: 8px;
font-size: 14px;
color: #fff;
/* 文字超出时显示省略号 */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
/* 关键:左右内边距相等,确保对称 */
padding: 0 8px;
/* 计算宽度确保整体居中 */
box-sizing: border-box;
}
.merchant-actions-img {
height: 25px;
width: 60px;
}
.action-btn {
flex: 1;
margin: 0;
background: linear-gradient(23deg, #68F9FE 0%, #AA93ED 100%);
color: #000000;
border-radius: 9px;
font-size: 16px;
padding: 10px 0;
border: 1px solid rgba(104, 249, 254, 0.7);
font-weight: 500;
transition: background 0.15s, color 0.15s;
}
.action-btn:active {
background: linear-gradient(23deg, #AA93ED, #68F9FE);
}
.action-fav {
color: #000000;
background: linear-gradient(23deg, #68F9FE 0%, #AA93ED 100%);
border: 1px solid rgba(104, 249, 254, 0.7);
}
.action-fav-share {
color: #000000;
background: linear-gradient(23deg, #68F9FE 0%, #AA93ED 100%);
border: 1px solid rgba(104, 249, 254, 0.7);
}
.action-fav:active {
background: linear-gradient(23deg, #AA93ED, #68F9FE);
}
.action-nav {
color: #000000;
background: linear-gradient(23deg, #68F9FE 0%, #AA93ED 100%);
border: 1px solid rgba(104, 249, 254, 0.7);
}
.action-nav:active {
background: linear-gradient(23deg, #AA93ED, #68F9FE);
}
.action-remind {
color: #000000;
background: linear-gradient(23deg, #68F9FE 0%, #AA93ED 100%);
border: 1px solid rgba(104, 249, 254, 0.7);
}
.action-remind:active {
background: linear-gradient(23deg, #AA93ED, #68F9FE);
}
/* 静态数据标记样式 */
.callout-static-data-icon {
width: 50px;
/* 方形静态数据标记的宽度,比用户头像(35)大 */
height: 50px;
/* 方形静态数据标记的高度,比用户头像(45)大 */
border-radius: 8px;
/* 稍微圆角,保持方形外观 */
background: rgba(255, 255, 255, 0.95);
border: 2px solid rgba(255, 255, 255, 0.8);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
margin: 4px 0;
display: block;
}
.callout-static-data-desc {
font-size: 12px;
color: #666;
margin-top: 2px;
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 100px;
}
/* 聚合点通用样式 */
.callout-cluster {
width: 40rpx;
height: 40rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
border: 2rpx solid white;
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.2);
}
.callout-cluster-count {
font-size: 24rpx;
font-weight: bold;
color: white;
}
.callout-feed {
position: relative;
width: 86px;
height: 77px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
border: 2px solid #000;
}
.callout-feed-cluster {
width: 48px;
height: 48px;
border-radius: 24px;
display: flex;
align-items: center;
justify-content: center;
border: 2px solid #fff;
}
.online-thumb {
position: absolute;
top: 0;
left: 0;
z-index: 2; /* 在线图在上层 */
opacity: 0; /* 初始透明 */
transition: opacity 0.3s ease; /* 平滑过渡效果 */
}
/* 加载完成后显示在线图片 */
.online-thumb.loaded {
opacity: 1;
}
.callout-feed-cluster {
font-size: 16px;
font-weight: 600;
}
.callout-feed-count {
font-size: 16px;
font-weight: 600;
}
/* ===================== 炫酷地图气泡 callout ===================== */
.customCallout,
.callout-vertical {
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
min-width: 110px;
max-width: 180px;
z-index: 999;
background: transparent;
box-shadow: none;
border: none;
padding: 0;
}
.callout-bubble {
background: linear-gradient(23deg, #68F9FE 0%, #AA93ED 100%);
border-radius: 18px;
box-shadow: 0 4px 24px 0 rgba(104, 249, 254, 0.25), 0 0 12px 2px #fff3;
padding: 10px 16px 8px 16px;
display: flex;
flex-direction: column;
align-items: center;
position: relative;
border: 2px solid #fff;
animation: callout-pop 0.4s cubic-bezier(.68, -0.55, .27, 1.55);
}
@keyframes callout-pop {
0% {
transform: scale(0.7);
opacity: 0;
}
80% {
transform: scale(1.1);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 1;
}
}
.callout-user .callout-bubble {
background: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);
box-shadow: 0 4px 24px 0 rgba(67, 233, 123, 0.18), 0 0 12px 2px #fff3;
}
.callout-merchant .callout-bubble {
background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);
box-shadow: 0 4px 24px 0 rgba(250, 112, 154, 0.18), 0 0 12px 2px #fff3;
}
.callout-static .callout-bubble {
background: linear-gradient(135deg, #4285f4 0%, #34a853 100%);
box-shadow: 0 4px 24px 0 rgba(66, 133, 244, 0.18), 0 0 12px 2px #fff3;
}
.callout-nickname {
font-size: 15px;
font-weight: bold;
color: rgb(8, 8, 8);
margin-bottom: 6px;
text-align: center;
letter-spacing: 1px;
text-shadow: 0 2px 8px #0006, 0 0 6px #fff8;
max-width: 120px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.callout-text-glow {
text-shadow: 0 0 8px #fff, 0 2px 8px #0006, 0 0 16px #fff8;
}
.callout-avatar {
width: 38px;
height: 38px;
border-radius: 50%; /* 圆形显示 */
border: 2px solid #fff;
box-shadow: 0 0 8px 1px #fff8, 0 2px 4px #0003;
background: #eee; /* 图片加载前的占位背景 */
object-fit: cover; /* 核心:从中心裁剪,保持比例填充容器 */
}
.callout-avatar-dot {
width: 15px;
border-radius: 50%;
height: 15px;
background: #eee;
object-fit: cover;
overflow: hidden;
}
.callout-avatar-dot-stranger {
margin-top: -15px;
margin-left: 15px;
width: 15px;
border-radius: 50%;
height: 15px;
background: #eee;
object-fit: cover;
overflow: hidden;
}
.callout-avatar-dot-mine {
width: 16px; /* 适当当缩小尺寸 */
height: 16px;
border-radius: 50%;
position: absolute;
bottom: 15px; /* 距离头像底部2px */
right: 15px; /* 距离头像右侧2px */
border: 2px solid #ffffffff; /* 白色边框与头像边框呼应 */
z-index: 2; /* 确保在头像上方显示 */
}
/* 解决头像被截断的容器样式 */
.mine-avatar-container {
position: relative;
width: 88px;
/* 比头像大10px避免边缘截断 */
height: 88px;
overflow: visible;
/* 关键:允许内容超出容器显示 */
}
/* 修复头像显示不全问题 */
.callout-avatar-mine {
width: 44px;
/* 原始头像尺寸 */
height: 44px;
border-radius: 50%;
/* 保持圆形 */
border: 2px solid #fff;
position: absolute;
top: 50%;
/* 垂直居中 */
left: 50%;
/* 水平居中 */
transform: translate(-50%, -50%);
/* 精准居中 */
z-index: 1;
/* 确保头像在容器底层 */
}
/* 方向箭头样式(优化位置避免遮挡头像) */
.direction-indicator {
position: absolute;
width: 18px;
height: 18px;
left: 50%;
transform-origin: 50% 40px;
/* 旋转原点=头像中心 */
z-index: 2;
/* 箭头在头像上方 */
margin-left: -9px;
margin-top:4px;
pointer-events: none;
}
.callout-avatar-glow {
box-shadow: 0 0 16px 4px #38f9d7cc, 0 2px 8px #0003;
}
.callout-battery {
display: flex;
align-items: center;
font-size: 13px;
color: rgb(10, 10, 10);
margin-top: 2px;
text-shadow: 0 1px 4px #0006;
font-weight: 500;
background: rgba(0, 0, 0, 0.12);
border-radius: 8px;
padding: 2px 8px 2px 4px;
min-width: 38px;
justify-content: center;
}
.callout-battery-glow {
text-shadow: 0 0 8px #fff, 0 1px 4px #0006;
}
.callout-battery-icon {
width: 16px;
height: 16px;
margin-right: 4px;
vertical-align: middle;
}
.callout-merchant-icon {
width: 44px;
height: 44px;
border-radius: 12px;
margin-bottom: 4px;
background: #fff;
object-fit: cover;
box-shadow: 0 0 12px 2px #fff8, 0 2px 8px #0002;
}
/* 商家名称高亮显示样式 */
.callout-merchant-name {
font-size: 28rpx;
font-weight: bold;
color: #382200;
text-align: center;
padding: 8rpx 32rpx;
background: #FFFFFF;
border-radius: 24rpx;
border: 2rpx solid #000000;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
white-space: normal;
word-wrap: break-word;
word-break: break-all;
min-width: 160rpx;
max-width: 300rpx;
letter-spacing: 1rpx;
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 56rpx;
line-height: 1.2;
}
.callout-merchant-name-active {
background: #FFE5D9;
border-color: #FF6F3C;
}
.callout-merchant-glow {
box-shadow: 0 0 16px 4px #fa709acc, 0 2px 8px #0003;
}
/* 兼容旧结构的圆形icon和内容 */
.circle {
width: 20px;
height: 20px;
border: 1px solid #ccc;
border-radius: 50%;
}
.icon {
width: 16px;
height: 16px;
}
.content {
flex: 0 1 auto;
margin: 0 10px;
font-size: 14px;
}
/* 显示模式筛选弹窗样式 */
.filter-modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
}
.filter-mask {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
backdrop-filter: blur(4px);
animation: fadeIn 0.3s ease;
}
.filter-options {
position: relative;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(20px);
border-radius: 24rpx;
padding: 20rpx 0;
box-shadow: 0 16rpx 48rpx rgba(0, 0, 0, 0.15);
border: 1px solid rgba(255, 255, 255, 0.8);
animation: slideUp 0.3s ease;
min-width: 60%;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes slideUp {
from {
opacity: 0;
transform: translateY(20rpx) scale(0.98);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
.filter-option {
display: flex;
align-items: center;
gap: 20rpx;
padding: 30rpx 40rpx;
transition: all 0.2s ease;
position: relative;
}
.filter-option:active {
background: rgba(0, 0, 0, 0.03);
}
.filter-option.active {
background: rgba(102, 126, 234, 0.08);
}
.filter-option.active::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 6rpx;
height: 40rpx;
background: linear-gradient(135deg, #667eea, #764ba2);
border-radius: 0 3rpx 3rpx 0;
}
.filter-icon {
font-size: 36rpx;
flex-shrink: 0;
}
.filter-text {
font-size: 32rpx;
color: #333;
font-weight: 500;
flex: 1;
}
.filter-option.active .filter-text {
color: #667eea;
font-weight: 600;
}
/* 分割线 */
.filter-options .filter-option:not(:last-child)::after {
content: '';
position: absolute;
bottom: 0;
left: 40rpx;
right: 40rpx;
height: 1rpx;
background: rgba(0, 0, 0, 0.06);
}
/* 适配横屏和不同尺寸设备 */
@media (min-width: 768px) {
.filter-options {
min-width: 40%;
max-width: 320px;
}
}
/* 深色模式支持 */
@media (prefers-color-scheme: dark) {
.filter-options {
background: rgba(26, 26, 26, 0.95);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.filter-text {
color: #e0e0e0;
}
.filter-option:active {
background: rgba(255, 255, 255, 0.05);
}
.filter-option.active {
background: rgba(102, 126, 234, 0.15);
}
.filter-option:not(:last-child)::after {
background: rgba(255, 255, 255, 0.1);
}
.filter-option.active .filter-text {
color: #8ea0fc;
}
}
/* 调试按钮 */
.debug-button {
position: absolute;
width: 44px;
height: 44px;
background: rgba(255, 255, 255, 0.9);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
z-index: 10;
}
.debug-icon {
font-size: 20px;
}
/* ===== 搜索相关样式 ===== */
/* 搜索按钮样式:圆形、半透明黑色背景 */
.search-btn {
width: 44px;
/* 按钮宽度 */
height: 44px;
/* 按钮高度 */
background: rgba(0, 0, 0, 0.8);
/* 半透明黑色背景 */
border-radius: 50%;
/* 圆形按钮 */
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
/* 阴影效果 */
transition: all 0.3s ease;
/* 平滑过渡动画 */
margin-right: 8px;
/* 在个人主页按钮左边保留适当间距 */
}
/* 搜索按钮点击状态:缩小并变为不透明黑色 */
.search-btn:active {
transform: scale(0.95);
/* 缩小效果 */
background: rgba(0, 0, 0, 1);
/* 不透明黑色 */
}
/* 搜索按钮内图标样式白色SVG图标 */
.search-btn .search-icon {
width: 20px;
/* 图标宽度 */
height: 20px;
/* 图标高度 */
filter: brightness(0) invert(1);
/* 滤镜效果:将图标变为白色 */
position: static;
/* left: auto; */
}
/* 搜索建议列表容器 */
.search-suggestions-container {
position: absolute;
top: calc(var(--nav-bar-height, 88px) + 70px);
left: 20rpx;
right: 20rpx;
max-height: 500rpx;
background-color: rgba(0, 0, 0, 0.9);
border-radius: 16rpx;
padding: 20rpx;
z-index: 200;
overflow-y: auto;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.5);
}
/* 搜索中状态 */
.searching-status {
display: flex;
align-items: center;
justify-content: center;
padding: 40rpx 20rpx;
}
.searching-spinner {
width: 32rpx;
height: 32rpx;
border: 4rpx solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
border-top-color: #fff;
animation: spin 1s linear infinite;
margin-right: 20rpx;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
.searching-text {
color: #fff;
font-size: 28rpx;
}
/* 搜索历史 */
.search-history-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
padding-bottom: 20rpx;
border-bottom: 1rpx solid rgba(255, 255, 255, 0.2);
}
.search-history-title {
color: #aaa;
font-size: 26rpx;
}
.search-history-clear {
color: #ff9500;
font-size: 26rpx;
}
.search-history-list {
display: flex;
flex-wrap: wrap;
gap: 16rpx;
}
.search-history-item {
display: flex;
align-items: center;
background-color: rgba(255, 255, 255, 0.1);
padding: 12rpx 24rpx;
border-radius: 32rpx;
font-size: 26rpx;
color: #fff;
}
.search-history-item:active {
background-color: rgba(255, 255, 255, 0.2);
}
.history-icon {
width: 24rpx;
height: 24rpx;
margin-right: 12rpx;
filter: brightness(0) invert(1);
}
/* 搜索建议列表 */
/* .search-suggestions-list {
} */
.search-suggestion-item {
display: flex;
justify-content: space-between;
align-items: flex-start;
padding: 24rpx 0;
border-bottom: 1rpx solid rgba(255, 255, 255, 0.1);
}
.search-suggestion-item:last-child {
border-bottom: none;
}
.search-suggestion-item:active {
background-color: rgba(255, 255, 255, 0.05);
}
.suggestion-content {
flex: 1;
margin-right: 20rpx;
}
.suggestion-title {
display: block;
color: #fff;
font-size: 32rpx;
margin-bottom: 8rpx;
}
.suggestion-address {
display: block;
color: #aaa;
font-size: 24rpx;
line-height: 1.4;
}
.suggestion-distance {
color: #ff9500;
font-size: 24rpx;
white-space: nowrap;
}
/* 无结果提示 */
.no-results {
text-align: center;
padding: 60rpx 20rpx;
color: #aaa;
font-size: 28rpx;
}
/* 适配iOS安全区域 */
@media screen and (device-width: 375px) and (device-height: 812px) {
.search-suggestions-container {
top: calc(var(--nav-bar-height, 88px) + 80px);
}
}
/* 搜索框容器样式:圆角矩形、白色背景、阴影效果 */
.search-input-wrapper {
width: 100%;
max-width: 100%;
height: 44px;
/* 搜索框高度 */
background: #ffffff;
/* 白色背景 */
border-radius: 24px;
/* 圆角 */
display: flex;
align-items: center;
padding: 0 16px;
/* 左右内边距 */
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
/* 阴影效果 */
transition: all 0.3s ease;
/* 过渡动画 */
animation: searchBoxSlideIn 0.3s ease;
/* 滑入动画 */
backdrop-filter: blur(10px);
/* 背景模糊效果 */
}
/* 废弃的样式,使用.search-input-wrapper替代 */
.search-input-container {
display: none;
}
/* 搜索框滑入动画:从上方淡入并下滑 */
@keyframes searchBoxSlideIn {
from {
opacity: 0;
/* 透明 */
transform: translateY(-10px);
/* 向上偏移 */
}
to {
opacity: 1;
/* 不透明 */
transform: translateY(0);
/* 回到原位 */
}
}
/* 搜索输入框样式:占据大部分空间、无边框 */
.search-input {
flex: 1;
/* 占据剩余空间 */
font-size: 14px;
/* 字体大小 */
color: #333;
/* 黑色文字 */
padding: 0;
margin: 0;
border: none;
/* 无边框 */
background: transparent;
/* 透明背景 */
outline: none;
/* 无轮廓线 */
height: 32px;
}
/* 搜索输入框占位符样式:灰色半透明文字 */
.search-input::placeholder {
color: rgba(51, 51, 51, 0.5);
/* 灰色半透明 */
}
/* 搜索框关闭按钮样式:居中的关闭符号 */
.search-input-close {
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
color: rgba(51, 51, 51, 0.8);
/* 灰色文字 */
font-size: 16px;
margin-left: 8px;
/* 与输入框的间距 */
}
/* ===== 右上角按钮组样式 - 在flex布局中已废弃使用.right-elements-container替代 */
.right-top-buttons {
display: none;
}
.avatar-container {
position: relative;
width: 100%;
height: 100%;
border-radius: 50%;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
overflow: hidden;
}
.avatar-text {
color: white;
font-size: 16px;
font-weight: 600;
}
.notification-dot {
position: absolute;
top: 2px;
right: 2px;
width: 8px;
height: 8px;
background: #ff4d4f;
border-radius: 50%;
border: 2px solid white;
}
.right-vertical-buttons {
display: flex;
flex-direction: column;
gap: 16px;
align-items: center;
}
.more-btn,
.mapsettings-btn {
width: 44px;
height: 44px;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
}
.more-btn:active,
.mapsettings-btn:active {
transform: scale(0.95);
}
.more-icon,
.mapsettings-icon {
width: 28px;
height: 28px;
filter: brightness(0) saturate(100%);
/* 浅色模式下全黑色 */
}
/* ===== 更多菜单弹窗样式 - 卡片形式 ===== */
.more-menu-modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 999;
display: flex;
justify-content: flex-end;
align-items: flex-start;
padding-right: 20px;
padding-top: 260px;
}
.more-menu-mask {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.3);
}
.more-menu-content {
position: relative;
width: 200px;
background: #1a1a1a;
border-radius: 12px;
padding: 8px 0;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
animation: popupMenu 0.25s ease-out;
overflow: hidden;
}
@keyframes popupMenu {
from {
opacity: 0;
transform: translateY(-10px) scale(0.95);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
.more-menu-item {
display: flex;
align-items: center;
padding: 14px 20px;
transition: all 0.2s ease;
position: relative;
}
.more-menu-item:active {
background-color: rgba(255, 255, 255, 0.1);
}
/* 菜单项之间的分割线 */
.more-menu-item:not(:last-child)::after {
content: '';
position: absolute;
bottom: 0;
left: 20px;
right: 20px;
height: 1px;
background-color: rgba(255, 255, 255, 0.1);
}
.more-menu-icon {
width: 24px;
height: 24px;
margin-right: 14px;
}
.more-menu-text {
font-size: 15px;
color: #ffffff;
flex: 1;
}
/* 更多菜单中添加好友按钮的小红点样式 */
.more-menu-item .notification-dot {
position: absolute;
top: 12px;
right: 12px;
width: 8px;
height: 8px;
background: #ff4d4f;
border-radius: 50%;
border: 2px solid white;
}
/* 更多菜单项的容器样式调整 */
.more-menu-item {
position: relative;
}
/* ===== 地图设置弹窗样式 ===== */
.map-settings-modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 10002;
/* 提高z-index确保在底部导航栏之上 */
display: flex;
align-items: flex-end;
justify-content: center;
}
.map-settings-mask {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.3);
}
.map-settings-content {
position: relative;
width: 100%;
background: black;
border-radius: 20px 20px 0 0;
padding: 12px;
box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.3);
animation: slideInUp 0.3s ease;
max-height: 80vh;
overflow-y: auto;
transition: transform 0.3s ease;
}
.map-settings-content.sliding-down {
transform: translateY(100%);
}
@keyframes slideInUp {
from {
transform: translateY(100%);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
@keyframes slideOutDown {
from {
transform: translateY(0);
opacity: 1;
}
to {
transform: translateY(100%);
opacity: 0;
}
}
.map-settings-title {
font-size: 20px;
font-weight: 600;
color: white;
text-align: center;
margin-bottom: 12px;
}
.map-settings-section {
margin-bottom: 24px;
}
.map-settings-section-title {
font-size: 16px;
font-weight: 600;
color: white;
margin-bottom: 16px;
display: block;
}
.map-layer-options {
display: flex;
justify-content: space-around;
gap: 12px;
margin: 0 20px;
}
.map-layer-option {
display: flex;
flex-direction: column;
align-items: center;
padding: 0px;
background: transparent;
border-radius: 20px;
transition: all 0.2s ease;
position: relative;
border: 3px solid transparent;
/* 默认无色透明边框 */
flex: 1;
max-width: 150px;
height: 100px;
}
.map-layer-option.active {
border: 3px solid #0cff18;
background: transparent;
}
.map-layer-option:active {
transform: scale(0.98);
}
.map-layer-icon {
font-size: 32px;
}
.map-layer-text-bottom {
font-size: 14px;
color: white;
width: 100%;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
margin: 0;
}
/* B框 - 图标框,占四分之三 */
.map-layer-icon-box {
width: 100%;
height: 75%;
display: flex;
align-items: center;
justify-content: center;
border-top-left-radius: 12px;
border-top-right-radius: 12px;
padding: 16px 0;
}
/* 探索按钮渐变背景 - 白粉黄绿色有角度 */
.standard-bg {
background: linear-gradient(135deg, #ffffff 0%, #f0f0f0 20%, #e0ffe0 60%, #8bff8b 100%);
}
/* 卫星按钮渐变背景 - 绿蓝青绿有角度 */
.satellite-bg {
background: linear-gradient(135deg, #00cc00 0%, #0099cc 50%, #00cccc 75%, #00ffcc 100%);
}
/* C框 - 文本框,占四分之一 */
.map-layer-text-box {
width: 100%;
height: 25%;
background: #333;
display: flex;
align-items: center;
justify-content: center;
border-bottom-left-radius: 12px;
border-bottom-right-radius: 12px;
padding: 8px 0;
}
.map-layer-text-box-img {
height: 100%;
width: 100%;
align-items: center;
justify-content: center;
padding: 0px;
}
.map-display-options {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px 0;
}
.map-display-text {
font-size: 16px;
color: white;
}
.map-settings-actions {
margin-top: 32px;
}
.map-settings-close-btn {
width: 100%;
height: 48px;
background: #007aff;
color: white;
font-size: 16px;
border: none;
border-radius: 24px;
box-shadow: 0 4px 12px rgba(0, 122, 255, 0.3);
transition: all 0.2s ease;
}
.map-settings-close-btn:active {
transform: scale(0.98);
box-shadow: 0 2px 6px rgba(0, 122, 255, 0.3);
}
/* 深色模式适配 */
@media (prefers-color-scheme: dark) {
.search-btn {
background: rgba(30, 30, 30, 0.95);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}
.search-btn:active {
background: rgba(40, 40, 40, 1);
}
.more-icon,
.mapsettings-icon {
filter: none;
/* 深色模式下使用原色 */
}
.search-input-wrapper {
background: rgba(30, 30, 30, 0.95);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
}
.search-input-container {
background: rgba(30, 30, 30, 0.95);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
}
.search-input {
color: #e0e0e0;
}
.search-input::placeholder {
color: rgba(255, 255, 255, 0.6);
}
.search-input-close {
color: #777;
}
.more-menu-content {
background: #222;
box-shadow: -4px 0 16px rgba(0, 0, 0, 0.3);
}
.more-menu-item:active {
background-color: #333;
}
.more-menu-text {
color: #e0e0e0;
}
.map-settings-content {
background: #222;
box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.3);
}
.map-settings-title {
color: #e0e0e0;
}
.map-settings-section-title {
color: #999;
}
.map-layer-option {
background: #333;
color: #e0e0e0;
}
.map-display-text {
color: #e0e0e0;
}
/* 深色模式下的快速发布按钮样式 */
.quick-publish-button {
background-color: #06b259;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.3);
}
/* 深色模式下的相机图标样式 */
.camera-icon {
filter: brightness(0) invert(1);
}
}
/* 右下角快速发布动态按钮样式 */
.quick-publish-container {
position: fixed;
bottom: 100rpx;
right: 40rpx;
z-index: 999;
}
.quick-publish-button {
width: 160rpx;
height: 160rpx;
background-color: #07c160;
border-radius: 50%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.15);
transition: all 0.3s ease;
}
.quick-publish-button:active {
transform: scale(0.95);
opacity: 0.9;
}
.quick-publish-plus {
color: white;
font-size: 80rpx;
font-weight: bold;
line-height: 1;
margin-top: -20rpx;
}
.quick-publish-text {
color: white;
font-size: 24rpx;
margin-top: -10rpx;
}
/* 地点收藏栏样式 */
.location-favorite-bar {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1000;
display: flex;
align-items: flex-end;
}
.location-favorite-mask {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
}
.location-favorite-sheet {
width: 100%;
height: 60vh;
background-color: #000;
border-top-left-radius: 30rpx;
border-top-right-radius: 30rpx;
position: relative;
box-sizing: border-box;
transform: translateY(0);
transition: transform 0.3s ease;
}
/* 地点收藏栏顶部 */
.location-favorite-header {
position: relative;
padding-top: 20rpx;
padding-right: 30rpx;
display: flex;
justify-content: center;
align-items: flex-start;
}
.location-favorite-sheet-handle {
width: 80rpx;
height: 8rpx;
background-color: #555;
border-radius: 4rpx;
margin-bottom: 30rpx;
}
.location-favorite-sheet-close {
position: absolute;
right: 30rpx;
top: 20rpx;
width: 60rpx;
height: 60rpx;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
font-size: 40rpx;
}
/* 地点收藏栏搜索框 */
.location-favorite-search {
margin: 0 30rpx 30rpx 30rpx;
position: relative;
display: flex;
align-items: center;
}
.search-icon {
position: absolute;
left: 30rpx;
color: #888;
font-size: 32rpx;
}
.result-menu-item {
/* 确保容器宽度充满父元素,为居中提供基础 */
width: 100%;
/* 开启弹性布局,方便子元素居中 */
display: flex;
/* 水平方向居中对齐 */
justify-content: center;
/* 垂直方向可根据需要调整(这里顶部对齐) */
align-items: flex-start;
/* 可添加适当的内边距控制位置 */
padding: 2px 0;
/* 上下各10px间距左右0 */
}
.result-menu-item image {
/* 控制图片大小(根据实际图片尺寸调整) */
width: 30px;
/* 示例宽度 */
height: 20px;
/* 示例高度,与宽度一致保持正方形 */
/* 确保图片自适应容器大小 */
object-fit: contain;
/* 移除可能的默认间距 */
display: block;
}
.location-favorite-input {
width: 100%;
height: 80rpx;
background-color: #333;
border-radius: 40rpx;
padding-left: 80rpx;
padding-right: 80rpx;
color: #fff;
font-size: 28rpx;
box-sizing: border-box;
}
.clear-icon {
position: absolute;
right: 30rpx;
color: #888;
font-size: 32rpx;
}
/* 地点收藏栏选项卡 */
.location-favorite-tabs {
display: flex;
margin: 0 30rpx 30rpx 30rpx;
}
.location-favorite-tab {
margin-right: 40rpx;
font-size: 32rpx;
color: #fff;
padding-bottom: 10rpx;
position: relative;
}
.location-favorite-tab.active {
background: linear-gradient(to right, #ff0000, #0000ff);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.location-favorite-tab.active::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 4rpx;
background: linear-gradient(to right, #ff0000, #0000ff);
}
/* 地点收藏栏列表 */
.location-favorite-list {
height: calc(100% - 240rpx);
margin: 0 30rpx;
padding-right: 30rpx;
overflow-y: auto;
}
.location-favorite-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 30rpx 0;
border-bottom: 1rpx solid #333;
}
.location-favorite-item-content {
flex: 1;
margin-right: 20rpx;
}
.location-favorite-item-name {
font-size: 32rpx;
color: #fff;
margin-bottom: 8rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.location-favorite-item-coord {
font-size: 26rpx;
color: #888;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.location-favorite-item-star {
width: 60rpx;
height: 60rpx;
display: flex;
align-items: center;
justify-content: center;
color: #9c27b0;
font-size: 40rpx;
}
.star-icon {
font-size: 40rpx;
}
/* 地点收藏栏空状态 */
.location-favorite-empty {
text-align: center;
padding: 100rpx 0;
color: #666;
font-size: 28rpx;
}
/* 滚动条样式 */
.location-favorite-list::-webkit-scrollbar {
width: 4rpx;
}
.location-favorite-list::-webkit-scrollbar-track {
background: #222;
}
.location-favorite-list::-webkit-scrollbar-thumb {
background: #555;
border-radius: 2rpx;
}
.location-favorite-list::-webkit-scrollbar-thumb:hover {
background: #666;
}
.map-feed-toggle {
position: absolute;
right: 40rpx;
padding: 12rpx 24rpx;
border-radius: 999rpx;
background: rgba(28, 31, 43, 0.88);
color: #ffffff;
font-size: 26rpx;
display: flex;
align-items: center;
gap: 12rpx;
box-shadow: 0 12rpx 30rpx rgba(0, 0, 0, 0.25);
backdrop-filter: blur(20rpx);
border: 1px solid rgba(255, 255, 255, 0.12);
z-index: 1100;
}
.map-feed-toggle.active {
background: linear-gradient(135deg, rgba(93, 160, 255, 0.95), rgba(76, 226, 227, 0.9));
box-shadow: 0 18rpx 34rpx rgba(93, 160, 255, 0.45);
}
.map-feed-toggle-icon {
font-size: 30rpx;
}
.map-feed-toggle-text {
font-size: 26rpx;
font-weight: 500;
letter-spacing: 2rpx;
}
/* ===== 搜索结果列表样式 ===== */
/* 搜索结果容器样式:半透明白色背景、模糊效果 */
.search-results-container {
width: 100%;
/* 宽度充满父容器 */
background: rgba(255, 255, 255, 0.95);
/* 半透明白色背景 */
backdrop-filter: blur(10px);
/* 背景模糊效果 */
border-radius: 16px;
/* 圆角 */
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
/* 阴影效果 */
overflow: hidden;
margin: 0 16px;
/* 左右边距 */
}
/* 搜索结果列表样式:可滚动、限制最大高度 */
.search-results-list {
max-height: 400px;
/* 最大高度,超出部分可滚动 */
overflow-y: auto;
/* 垂直滚动 */
}
/* 单个搜索结果项样式:横向布局、底部边框 */
.search-result-item {
display: flex;
align-items: center;
padding: 16px;
/* 内边距 */
border-bottom: 1px solid #f0f0f0;
/* 底部边框 */
transition: background-color 0.2s ease;
/* 背景色过渡动画 */
}
/* 搜索结果项点击状态:背景色变化 */
.search-result-item:active {
background-color: #f5f5f5;
/* 点击时的背景色 */
}
/* 最后一个搜索结果项:移除底部边框 */
.search-result-item:last-child {
border-bottom: none;
}
/* 结果图标样式:居中显示、固定尺寸 */
.result-icon {
font-size: 24px;
/* 图标大小 */
margin-right: 16px;
/* 与内容区的间距 */
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
}
/* 结果内容区样式:占据剩余空间、防止溢出 */
.result-content {
flex: 1;
/* 占据剩余空间 */
min-width: 0;
/* 允许内容收缩避免flex子项溢出 */
}
/* 结果名称样式:黑色粗体、单行显示 */
.result-name {
font-size: 16px;
font-weight: 600;
/* 加粗 */
color: #333;
/* 黑色文字 */
margin-bottom: 4px;
overflow: hidden;
text-overflow: ellipsis;
/* 超出部分显示省略号 */
white-space: nowrap;
/* 不换行 */
}
/* 结果地址样式:灰色文字、单行显示 */
.result-address {
font-size: 14px;
color: #666;
/* 灰色文字 */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* ===== 未登录状态样式 ===== */
/* 登录提示按钮 */
.login-prompt-btn {
width: 48px;
height: 48px;
background: rgba(0, 0, 0, 0.6);
border-radius: 24px;
display: flex;
align-items: center;
justify-content: center;
margin: 10px 0;
backdrop-filter: blur(5px);
transition: all 0.3s ease;
}
.login-prompt-btn:active {
background: rgba(0, 0, 0, 0.8);
transform: scale(0.95);
}
.login-prompt-text {
font-size: 12px;
color: white;
font-weight: 500;
}
/* 登录后使用提示文字 */
.login-required-text {
display: flex;
align-items: center;
justify-content: center;
padding: 8px 16px;
background: rgba(0, 0, 0, 0.6);
border-radius: 20px;
backdrop-filter: blur(5px);
transition: all 0.3s ease;
}
.login-required-text:active {
background: rgba(0, 0, 0, 0.8);
}
.login-required {
font-size: 12px;
color: white;
font-weight: 500;
}
/* 登录按钮样式 */
.login-btn {
background: rgba(0, 0, 0, 0.6);
color: white;
transition: all 0.3s ease;
}
.login-btn:active {
background: rgba(0, 0, 0, 0.8);
}
.share-friends-list {
white-space: nowrap;
}
/* 好友项 */
.friend-item {
display: inline-block;
width: 120rpx;
text-align: center;
margin-right: 20rpx;
}
.friend-name {
font-size: 24rpx;
/* 文字大小 */
color: #fff;
/* 文字颜色 */
text-align: center;
/* 文字自身居中(增强对齐效果) */
}
.friend-avatar {
width: 80rpx;
height: 80rpx;
border-radius: 20%;
margin-bottom: 8rpx;
}
.friend-name {
font-size: 24rpx;
color: #fff;
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* 分享选项容器(自动换行) */
.share-options {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
}
/* 分享选项项 */
.option-item {
width: 25%;
display: flex;
flex-direction: column;
align-items: center;
margin-bottom: 30rpx;
}
.option-icon {
width: 100rpx;
height: 100rpx;
margin-bottom: 8rpx;
}
.option-name {
font-size: 24rpx;
color: #fff;
}
.feed-bubble-header {
display: flex;
align-items: flex-start;
padding: 16rpx;
gap: 12rpx;
}
.feed-bubble-avatar {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
overflow: hidden;
flex-shrink: 0;
}
/* 外层容器控制上下左右10px间距高度自适应内容 */
.feed-bubble-content {
padding: 5px; /* 上下左右各10px间距 */
width: 100%; /* 按需设置宽度(如适配父容器) */
box-sizing: border-box; /* 避免padding撑大宽度 */
}
/* 内容容器限制最多3行多余显示省略号高度自适应 */
.content-inner {
/* 关键:行数限制+省略号(修复压缩丢失问题) */
display: -webkit-box;
-webkit-line-clamp: 3; /* 最多3行 */
/* 重点:用注释包裹,防止被代码压缩移除 */
/*! autoprefixer: off */
-webkit-box-orient: vertical;
/*! autoprefixer: on */
overflow: hidden;
text-overflow: ellipsis;
/* 调整:行高建议用具体像素(真机更稳定) */
font-size: 14px;
line-height: 22px; /* 替换1.5倍14*1.5=21取整22px避免小数兼容性问题 */
color: #fff;
/* 新增确保宽度足够避免内容被强制换行成1行 */
width: 100%;
box-sizing: border-box;
}
.feed-bubble-avatar image {
width: 100%;
height: 100%;
}
.feed-bubble-user-content {
padding-top:5px;
flex: 1;
overflow: hidden;
}
.feed-bubble-user-name {
font-size: 24rpx;
font-weight: 600;
color: #fff;
margin-bottom: 8rpx;
display: block;
}
.feed-bubble-post-content {
font-size: 22rpx;
color: #666;
line-height: 1.5;
display: -webkit-box;
color: #fff;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.feed-bubble-image-container {
width: 100%;
height: 320rpx;
overflow: hidden;
background-color: #f5f5f5;
}
.feed-bubble-post-image {
width: 100%;
height: 100%;
/* 禁用缩放(确保图片不被压缩) */
transform: none !important;
object-fit: cover; /* 核心:从中心裁剪,保持比例填充容器 */
}
/* 原有样式完全保留,仅新增以下样式 + 微调定位 */
.callout-feed-single {
position: relative; /* 原有已存在,无需重复写,仅作提醒 */
width: 172rpx;
height: 152rpx;
border-radius: 10px;
display: block; /* 恢复原有布局流不使用flex */
border: 2px solid #000;
overflow: hidden;
}
.callout-feed-thumb {
width: 100%;
height: 100%; /* 恢复原有图片高度,铺满容器 */
border-radius: 10px; /* 恢复原有圆角 */
display: block;
z-index: 911;
}
/* 新增:左下方固定操作区(图片底部边框上方) */
.callout-actions-fixed {
position: absolute;
bottom: 0px; /* 紧贴图片底部边框上方 */
display: flex;
width:100%;
padding-bottom:2px;
padding-top:2px;
gap: 4px; /* 点赞和评论之间的间距 */
z-index: 911; /* 确保在图片上方显示 */
background-color: rgba(0, 0, 0, 0.3); /* 50% 透明度(中间值),黑色背景 */
}
/* 操作项通用样式 */
.action-item {
display: flex;
align-items: center;
gap: 1px; /* 图标和数字间距 */
padding: 1px 2px;
border-radius: 2px;
}
/* 图标样式 */
.action-icon {
width: 12px;
height: 12px;
margin:0px 5px 0px 5px
}
/* 数字样式 */
.action-count {
font-size: 10px;
color: #fff;
left:5px;
line-height: 1;
}
/* 原有箭头样式保留 */
.callout-arrow {
width: 24rpx;
height: 16rpx;
margin: 0 auto;
margin-top: -2rpx;
z-index: 1;
}