dapaijizhang3/pages/game/detail/detail.wxss

874 lines
15 KiB
Plaintext
Raw Permalink Normal View History

2025-11-20 16:42:59 +08:00
/* 牌局详情页面样式 */
page {
background: linear-gradient(135deg, #1A1A1A 0%, #252525 100%);
min-height: 100vh;
}
/* ========== 跑马灯公告条 ========== */
.marquee-container {
background: rgba(255, 255, 255, 0.95);
padding: 16rpx 24rpx;
display: flex;
align-items: center;
gap: 16rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
}
.marquee-icon {
font-size: 32rpx;
flex-shrink: 0;
}
.marquee-content {
flex: 1;
overflow: hidden;
position: relative;
height: 40rpx;
line-height: 40rpx;
}
.marquee-text {
white-space: nowrap;
font-size: 26rpx;
color: #E0E0E0;
display: inline-block;
padding-left: 100%;
animation: marquee 20s linear infinite;
}
@keyframes marquee {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}
/* ========== 容器 ========== */
.container {
padding: 20rpx 30rpx 140rpx;
}
/* ========== 玩家卡片区域 ========== */
.players-section {
margin-bottom: 24rpx;
}
.section-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 0 20rpx;
}
.section-title {
font-size: 34rpx;
font-weight: bold;
color: white;
text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
}
.total-rounds {
font-size: 26rpx;
color: rgba(255, 255, 255, 0.9);
background: rgba(255, 255, 255, 0.15);
padding: 6rpx 16rpx;
border-radius: 20rpx;
backdrop-filter: blur(10rpx);
}
.players-scroll {
white-space: nowrap;
height: 220rpx;
}
.player-card {
display: inline-block;
vertical-align: top;
width: 120rpx;
height: 180rpx;
background: #1A1A1A;
border-radius: 20rpx;
padding: 20rpx 16rpx 16rpx;
margin-right: 16rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.2);
position: relative;
transition: all 0.3s;
text-align: center;
}
.player-card:active {
transform: translateY(-4rpx);
box-shadow: 0 8rpx 28rpx rgba(0, 0, 0, 0.3);
}
.my-card {
background: linear-gradient(135deg, #1A1A1A 0%, #252525 100%);
border: 2rpx solid rgba(255, 255, 255, 0.3);
}
.my-card .player-card-nickname,
.my-card .player-card-score {
color: white;
}
.host-card {
border: 2rpx solid rgba(255, 154, 118, 0.5);
}
.invite-card {
background: rgba(255, 255, 255, 0.2);
border: 2rpx dashed rgba(255, 255, 255, 0.5);
backdrop-filter: blur(10rpx);
display: inline-flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.invite-card:active {
background: rgba(255, 255, 255, 0.3);
}
.player-card-avatar {
width: 70rpx;
height: 70rpx;
border-radius: 50%;
margin: 0 auto 12rpx;
border: 3rpx solid rgba(0, 0, 0, 0.1);
display: block;
}
.my-card .player-card-avatar {
border-color: rgba(255, 255, 255, 0.5);
}
.player-card-nickname {
font-size: 24rpx;
color: #FFFFFF;
font-weight: 500;
margin: 0 auto 8rpx;
max-width: 110rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: block;
}
.player-card-score {
font-size: 30rpx;
font-weight: bold;
color: #FFFFFF;
display: block;
}
.player-card-score.win {
color: #50C878;
}
.player-card-score.lose {
color: #ff3b30;
}
.player-card-tag {
position: absolute;
top: 8rpx;
right: 8rpx;
font-size: 20rpx;
padding: 4rpx 10rpx;
border-radius: 20rpx;
font-weight: 500;
line-height: 1;
}
.me-tag {
background: rgba(255, 255, 255, 0.3);
color: white;
}
.host-tag {
background: rgba(255, 154, 118, 0.15);
color: #ff9a76;
}
.invite-icon {
width: 70rpx;
height: 70rpx;
border-radius: 50%;
background: rgba(255, 255, 255, 0.3);
display: flex;
align-items: center;
justify-content: center;
font-size: 44rpx;
color: white;
margin-bottom: 8rpx;
}
.invite-text {
font-size: 24rpx;
color: white;
font-weight: 500;
}
/* ========== 操作日志区域 ========== */
.logs-section {
margin-bottom: 30rpx;
}
.log-count {
font-size: 26rpx;
color: rgba(255, 255, 255, 0.9);
background: rgba(255, 255, 255, 0.15);
padding: 6rpx 16rpx;
border-radius: 20rpx;
backdrop-filter: blur(10rpx);
}
.logs-card {
background: #1A1A1A;
border-radius: 20rpx;
padding: 0;
overflow: hidden;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.2);
}
.logs-scroll {
height: 500rpx;
padding: 24rpx;
}
.log-item {
display: flex;
flex-direction: column;
margin-bottom: 24rpx;
padding-bottom: 24rpx;
border-bottom: 1rpx solid #f5f5f5;
}
.log-item:last-child {
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}
.log-time {
font-size: 22rpx;
line-height: 22rpx;
color: #B0B0B0;
text-align: center;
margin-bottom: 8rpx;
}
.log-text {
font-size: 28rpx;
color: #FFFFFF;
line-height: 1.5;
display: flex;
flex-wrap: wrap;
align-items: baseline;
text-align: left;
}
/* 玩家昵称样式 */
.log-player-name {
padding:0 10rpx 0 10rpx;
color: #1A1A1A;
font-weight: 600;
}
.log-player-name.self {
color: #50C878; /* 微信绿色,表示自己 */
}
/* 操作描述样式 */
.log-action {
color: #E0E0E0;
}
/* 金额样式 */
.log-amount {
color: #ff6b6b;
font-weight: 700;
font-size: 30rpx;
}
.log-detail {
font-size: 24rpx;
color: #1A1A1A;
font-weight: 600;
}
.logs-empty {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 80rpx 0;
}
.empty-text {
font-size: 28rpx;
color: #ccc;
}
.logs-loadmore {
padding: 24rpx;
text-align: center;
font-size: 26rpx;
color: #1A1A1A;
border-top: 1rpx solid #f5f5f5;
margin-top: 16rpx;
cursor: pointer;
}
.logs-loadmore:active {
background: rgba(0, 0, 0, 0.05);
}
/* ========== 底部固定操作栏 ========== */
.bottom-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background: #1A1A1A;
padding: 16rpx 30rpx;
box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.1);
z-index: 100;
}
.bottom-actions {
display: flex;
gap: 16rpx;
align-items: stretch;
}
.action-group {
display: flex;
gap: 16rpx;
}
.action-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: #f8f9fa;
border-radius: 16rpx;
padding: 16rpx 20rpx;
min-width: 100rpx;
transition: all 0.3s;
}
.action-btn:active {
background: rgba(0, 0, 0, 0.1);
transform: scale(0.95);
}
.action-icon {
font-size: 32rpx;
margin-bottom: 4rpx;
}
.action-label {
font-size: 22rpx;
color: #FFFFFF;
font-weight: 500;
}
.settle-btn {
flex: 1;
background: linear-gradient(135deg, #1A1A1A 0%, #252525 100%);
color: white;
border-radius: 16rpx;
padding: 24rpx;
font-size: 32rpx;
font-weight: bold;
border: none;
box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.4);
transition: all 0.3s;
display: flex;
align-items: center;
justify-content: center;
}
.settle-btn:active {
opacity: 0.9;
transform: scale(0.98);
}
/* ========== 弹窗通用样式 ========== */
.modal-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
z-index: 999;
}
.modal-content {
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 620rpx;
max-height: 80vh;
background: #1A1A1A;
border-radius: 24rpx;
overflow: hidden;
z-index: 1000;
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 32rpx 32rpx 24rpx;
border-bottom: 1rpx solid #f0f0f0;
}
.modal-title {
font-size: 34rpx;
font-weight: bold;
color: #FFFFFF;
}
.close-btn {
font-size: 48rpx;
color: #B0B0B0;
line-height: 1;
width: 48rpx;
height: 48rpx;
display: flex;
align-items: center;
justify-content: center;
}
.modal-body {
padding: 32rpx;
max-height: 60vh;
overflow-y: auto;
}
/* ========== 玩家操作弹窗 ========== */
.player-modal-content {
padding: 0;
}
.player-modal-info {
display: flex;
flex-direction: column;
align-items: center;
padding: 20rpx 20rpx 20rpx;
background: linear-gradient(135deg, rgba(0, 0, 0, 0.05) 0%, rgba(118, 75, 162, 0.05) 100%);
border-bottom: 1rpx solid #f0f0f0;
}
.modal-avatar {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
margin-bottom: 16rpx;
border: 4rpx solid rgba(0, 0, 0, 0.2);
}
.modal-nickname {
font-size: 36rpx;
font-weight: bold;
color: #FFFFFF;
margin-bottom: 12rpx;
}
.modal-score {
font-size: 40rpx;
font-weight: bold;
color: #FFFFFF;
}
.modal-score.win {
color: #50C878;
}
.modal-score.lose {
color: #ff3b30;
}
.score-input-section {
padding: 32rpx;
}
.input-label {
display: block;
font-size: 28rpx;
font-weight: 600;
color: #FFFFFF;
margin-bottom: 16rpx;
}
.score-input {
width: 100%;
background: #f8f9fa;
border: 2rpx solid rgba(0, 0, 0, 0.1);
border-radius: 12rpx;
height: 60rpx;
padding-left: 24rpx;
font-size: 32rpx;
color: #FFFFFF;
text-align: center;
font-weight: bold;
box-sizing: border-box;
margin-bottom: 24rpx;
}
.score-input:focus {
border-color: #1A1A1A;
background: #1A1A1A;
box-shadow: 0 0 0 4rpx rgba(0, 0, 0, 0.1);
}
.quick-inputs {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 12rpx;
margin-bottom: 32rpx;
}
.quick-btn {
padding: 16rpx;
background: #f8f9fa;
border-radius: 12rpx;
text-align: center;
font-size: 28rpx;
font-weight: 600;
color: #1A1A1A;
border: 2rpx solid rgba(0, 0, 0, 0.1);
transition: all 0.3s;
}
.quick-btn:active {
background: rgba(0, 0, 0, 0.1);
transform: scale(0.95);
}
.modal-actions {
padding: 0rpx;
}
.btn-danger {
width: 100%;
background: linear-gradient(135deg, #ff3b30 0%, #e02020 100%);
color: white;
border-radius: 16rpx;
padding: 28rpx;
font-size: 32rpx;
font-weight: bold;
border: none;
box-shadow: 0 8rpx 24rpx rgba(255, 59, 48, 0.4);
}
.btn-danger:active {
opacity: 0.9;
transform: scale(0.98);
}
/* ========== 支出弹窗 ========== */
.expense-list {
display: flex;
flex-direction: column;
gap: 12rpx;
margin-bottom: 32rpx;
max-height: 500rpx;
overflow-y: auto;
}
.expense-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 16rpx;
background: #f8f9fa;
border-radius: 12rpx;
}
.expense-player {
display: flex;
align-items: center;
gap: 12rpx;
flex: 1;
}
.expense-avatar {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
border: 2rpx solid rgba(0, 0, 0, 0.1);
}
.expense-nickname {
font-size: 28rpx;
color: #FFFFFF;
font-weight: 500;
}
.expense-input {
width: 160rpx;
background: #1A1A1A;
border: 2rpx solid rgba(0, 0, 0, 0.1);
border-radius: 12rpx;
padding: 16rpx;
font-size: 28rpx;
color: #FFFFFF;
text-align: center;
font-weight: bold;
}
.expense-input:focus {
border-color: #1A1A1A;
box-shadow: 0 0 0 4rpx rgba(0, 0, 0, 0.1);
}
/* ========== 设置弹窗 ========== */
.setting-section {
margin-bottom: 32rpx;
}
.setting-section:last-child {
margin-bottom: 0;
}
.setting-label {
display: block;
font-size: 28rpx;
font-weight: 600;
color: #FFFFFF;
margin-bottom: 16rpx;
}
.setting-input {
width: 100%;
background: #f8f9fa;
border: 2rpx solid rgba(0, 0, 0, 0.1);
border-radius: 12rpx;
height: 60rpx;
padding-left: 24rpx;
font-size: 32rpx;
color: #FFFFFF;
text-align: center;
font-weight: bold;
box-sizing: border-box;
}
.setting-input:focus {
border-color: #1A1A1A;
background: #1A1A1A;
box-shadow: 0 0 0 4rpx rgba(0, 0, 0, 0.1);
}
.quick-input-settings {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12rpx;
}
.quick-value-input {
background: #f8f9fa;
border: 2rpx solid rgba(0, 0, 0, 0.1);
border-radius: 12rpx;
padding: 20rpx;
font-size: 28rpx;
color: #FFFFFF;
text-align: center;
font-weight: bold;
}
.quick-value-input:focus {
border-color: #1A1A1A;
background: #1A1A1A;
box-shadow: 0 0 0 4rpx rgba(0, 0, 0, 0.1);
}
/* 语音播报开关 */
.setting-row {
display: flex;
justify-content: space-between;
align-items: center;
}
.setting-switch {
transform: scale(0.9);
}
/* 快捷输入设置标题 */
.label-row-settings {
display: flex;
align-items: center;
margin-bottom: 16rpx;
}
.label-hint-settings {
font-size: 22rpx;
color: #B0B0B0;
margin-left: 8rpx;
font-weight: normal;
}
/* 快捷输入网格布局(参考创建房间) */
.quick-settings-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 12rpx;
}
.quick-setting-item {
position: relative;
height: 80rpx;
}
.quick-input-box {
width: 100%;
height: 100%;
background: #f8f9fa;
border: 2rpx solid rgba(0, 0, 0, 0.1);
border-radius: 12rpx;
padding: 0 10rpx;
font-size: 28rpx;
color: #FFFFFF;
box-sizing: border-box;
text-align: center;
}
.quick-input-box:focus {
border-color: #1A1A1A;
background: #1A1A1A;
box-shadow: 0 0 0 4rpx rgba(0, 0, 0, 0.1);
}
.remove-btn-settings {
position: absolute;
top: -8rpx;
right: -8rpx;
width: 40rpx;
height: 40rpx;
background: #ff3b30;
color: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
line-height: 1;
box-shadow: 0 2rpx 8rpx rgba(255, 59, 48, 0.3);
z-index: 1;
}
.remove-btn-settings:active {
opacity: 0.8;
transform: scale(0.95);
}
.add-btn-settings {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
gap: 8rpx;
height: 80rpx;
background: rgba(0, 0, 0, 0.05);
border: 2rpx dashed rgba(0, 0, 0, 0.3);
border-radius: 12rpx;
color: #1A1A1A;
font-size: 24rpx;
}
.add-btn-settings:active {
background: rgba(0, 0, 0, 0.1);
}
.add-icon-settings {
font-size: 36rpx;
font-weight: bold;
line-height: 1;
}
.add-text-settings {
font-weight: 500;
font-size: 24rpx;
}
/* ========== 分享弹窗 ========== */
/* 二维码区域 */
.qrcode-section {
text-align: center;
margin-bottom: 24rpx;
}
.qrcode-image {
width: 400rpx;
height: 400rpx;
margin: 0 auto;
display: block;
border-radius: 12rpx;
background: #1A1A1A;
}
.qrcode-loading {
width: 400rpx;
height: 400rpx;
margin: 0 auto;
background: #f5f5f5;
border-radius: 12rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #B0B0B0;
}
.invite-code-box {
background: #f8f9fa;
border-radius: 16rpx;
padding: 32rpx;
text-align: center;
margin-bottom: 24rpx;
}
.code-label {
display: block;
font-size: 26rpx;
color: #B0B0B0;
margin-bottom: 12rpx;
}
.code-value {
display: block;
font-size: 48rpx;
font-weight: bold;
color: #1A1A1A;
font-family: 'Courier New', monospace;
letter-spacing: 8rpx;
margin-bottom: 20rpx;
}
.copy-btn {
background: linear-gradient(135deg, #1A1A1A 0%, #252525 100%);
color: white;
border-radius: 12rpx;
padding: 16rpx 48rpx;
font-size: 28rpx;
font-weight: bold;
border: none;
}
.share-tip {
text-align: center;
padding: 24rpx 0;
}
.share-tip text {
font-size: 26rpx;
color: #B0B0B0;
}