569 lines
9.1 KiB
CSS
569 lines
9.1 KiB
CSS
/* =========== 基础页面样式 =========== */
|
||
.ticket-page {
|
||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||
background-color: #f5f6f8;
|
||
min-height: 100vh;
|
||
position: relative;
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
.header-banner {
|
||
background:
|
||
radial-gradient(ellipse at 20% 80%, rgba(120, 80, 255, 0.15) 0%, transparent 50%),
|
||
radial-gradient(ellipse at 80% 20%, rgba(255, 0, 127, 0.1) 0%, transparent 40%),
|
||
linear-gradient(160deg, #1a1625 0%, #2d2840 50%, #1f1b2e 100%);
|
||
padding: 54px 20px 64px 20px;
|
||
display: flex;
|
||
align-items: stretch;
|
||
color: #fff;
|
||
position: relative;
|
||
}
|
||
|
||
.poster {
|
||
flex-shrink: 0;
|
||
width: 105px;
|
||
height: 140px;
|
||
border-radius: 8px;
|
||
overflow: hidden;
|
||
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
|
||
}
|
||
|
||
.poster-img {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.header-info {
|
||
margin-left: 16px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: flex-start;
|
||
}
|
||
|
||
.header-info .title {
|
||
font-size: 18px;
|
||
font-weight: bold;
|
||
line-height: 1.4;
|
||
margin: 0;
|
||
margin-top: 4px;
|
||
}
|
||
|
||
.header-info .tag {
|
||
font-size: 12px;
|
||
color: #d0cdd8;
|
||
margin-top: 10px;
|
||
text-align: left;
|
||
}
|
||
|
||
.collect-btn {
|
||
margin-top: auto;
|
||
align-self: flex-start;
|
||
background-color: rgba(0, 0, 0, 0.4);
|
||
padding: 6px 14px;
|
||
border-radius: 20px;
|
||
font-size: 12px;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.heart-icon {
|
||
font-size: 14px;
|
||
margin-right: 4px;
|
||
}
|
||
|
||
/* =========== Main Content =========== */
|
||
.main-content {
|
||
background-color: #fff;
|
||
border-radius: 16px 16px 0 0;
|
||
margin-top: -24px;
|
||
padding: 20px;
|
||
position: relative;
|
||
z-index: 10;
|
||
}
|
||
|
||
/* Location Card */
|
||
.location-card {
|
||
margin-top: 10px;
|
||
background-color: #fcfcfc;
|
||
border: 1px solid #f0f0f0;
|
||
border-radius: 12px;
|
||
padding: 16px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
background-image: radial-gradient(circle at right center, rgba(240, 240, 240, 0.8) 0%, transparent 50%);
|
||
}
|
||
|
||
.location-content {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: stretch;
|
||
width: 100%;
|
||
}
|
||
|
||
.location-info .venue {
|
||
font-size: 15px;
|
||
font-weight: bold;
|
||
color: #111;
|
||
text-align: left;
|
||
}
|
||
|
||
.location-info .address {
|
||
font-size: 12px;
|
||
color: #999;
|
||
margin-top: 6px;
|
||
}
|
||
|
||
.location-info {
|
||
flex: 1;
|
||
text-align: left;
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: center;
|
||
}
|
||
|
||
.venue-badge {
|
||
display: inline-block;
|
||
font-size: 12px;
|
||
color: #fff;
|
||
background-color: #ff404f;
|
||
padding: 1px 6px;
|
||
border-radius: 4px;
|
||
margin-bottom: 4px;
|
||
}
|
||
|
||
.map-more {
|
||
font-size: 11px;
|
||
color: #999;
|
||
margin-top: 4px;
|
||
text-align: center;
|
||
}
|
||
|
||
.map-wrapper {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
padding-left: 12px;
|
||
}
|
||
|
||
.map-icon {
|
||
width: 22px;
|
||
height: 22px;
|
||
background-color: #ffffff;
|
||
border: 1.5px solid #f76464;
|
||
border-radius: 50%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.pin-icon {
|
||
width: 16px;
|
||
height: 16px;
|
||
fill: #e61818;
|
||
}
|
||
|
||
/* Service Header */
|
||
.service-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: flex-start;
|
||
margin-top: 20px;
|
||
}
|
||
|
||
.service-tags {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 12px;
|
||
flex: 1;
|
||
}
|
||
|
||
.service-tags-wrapper {
|
||
flex: 1;
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.service-tags-wrapper::after {
|
||
content: '';
|
||
position: absolute;
|
||
top: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
width: 30px;
|
||
background: linear-gradient(to right, transparent, #fff);
|
||
}
|
||
|
||
.service-more {
|
||
font-size: 13px;
|
||
color: #999;
|
||
margin-left: 8px;
|
||
}
|
||
|
||
.tag-item {
|
||
font-size: 11px;
|
||
color: #333;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.icon-success,
|
||
.icon-warning {
|
||
width: 14px;
|
||
height: 14px;
|
||
border-radius: 50%;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-size: 10px;
|
||
color: #fff;
|
||
margin-right: 6px;
|
||
transform: scale(0.9);
|
||
}
|
||
|
||
.icon-success {
|
||
background-color: #2ac55a;
|
||
}
|
||
|
||
.icon-warning {
|
||
background-color: transparent;
|
||
color: #ff404f;
|
||
border: 1px solid #ff404f;
|
||
}
|
||
|
||
/* =========== Section Card =========== */
|
||
.mt-10 {
|
||
margin-top: 10px;
|
||
}
|
||
|
||
.section-card {
|
||
background-color: #fff;
|
||
padding: 24px 20px;
|
||
}
|
||
|
||
.section-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
}
|
||
|
||
.section-title {
|
||
font-size: 18px;
|
||
font-weight: bold;
|
||
color: #111;
|
||
margin: 0;
|
||
}
|
||
|
||
.section-more {
|
||
font-size: 13px;
|
||
color: #999;
|
||
}
|
||
|
||
.notice-grid {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 20px 16px;
|
||
margin-top: 20px;
|
||
}
|
||
|
||
.notice-item {
|
||
width: calc(50% - 8px);
|
||
min-width: 0;
|
||
}
|
||
|
||
.notice-title {
|
||
font-size: 14px;
|
||
font-weight: bold;
|
||
color: #333;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.notice-title .dot {
|
||
width: 4px;
|
||
height: 4px;
|
||
background-color: #d8d8d8;
|
||
border-radius: 50%;
|
||
margin-right: 6px;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.notice-desc {
|
||
font-size: 12px;
|
||
color: #999;
|
||
margin-top: 6px;
|
||
padding-left: 12px;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
text-align: left;
|
||
}
|
||
|
||
/* =========== Bottom Bar =========== */
|
||
.bottom-bar {
|
||
position: fixed;
|
||
bottom: 0;
|
||
left: 0;
|
||
right: 0;
|
||
background-color: #fff;
|
||
display: flex;
|
||
align-items: center;
|
||
padding: 10px 20px;
|
||
padding-bottom: calc(10px + constant(safe-area-inset-bottom));
|
||
padding-bottom: calc(10px + env(safe-area-inset-bottom));
|
||
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.03);
|
||
z-index: 100;
|
||
}
|
||
|
||
.customer-service {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
margin-right: 24px;
|
||
color: #333;
|
||
}
|
||
|
||
.service-icon {
|
||
font-size: 20px;
|
||
margin-bottom: 2px;
|
||
}
|
||
|
||
.customer-service text {
|
||
font-size: 10px;
|
||
}
|
||
|
||
.buy-button {
|
||
flex: 1;
|
||
background-color: #ff404f;
|
||
color: #fff;
|
||
border: none;
|
||
border-radius: 25px;
|
||
padding: 14px 0;
|
||
font-size: 16px;
|
||
font-weight: bold;
|
||
text-align: center;
|
||
line-height: 1;
|
||
}
|
||
|
||
/* =========== Popup 样式 =========== */
|
||
.popup-mask {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
background-color: rgba(0, 0, 0, 0.6);
|
||
z-index: 999;
|
||
display: flex;
|
||
align-items: flex-end;
|
||
}
|
||
|
||
.popup-container {
|
||
width: 100%;
|
||
height: 70vh;
|
||
background-color: #fff;
|
||
border-radius: 16px 16px 0 0;
|
||
display: flex;
|
||
flex-direction: column;
|
||
max-height: 70vh;
|
||
padding: 0 16px;
|
||
}
|
||
|
||
.popup-header {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
padding: 20px;
|
||
position: relative;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.popup-header.has-tabs {
|
||
justify-content: flex-start;
|
||
}
|
||
|
||
.popup-title-text {
|
||
font-size: 18px;
|
||
font-weight: bold;
|
||
color: #111;
|
||
}
|
||
|
||
.popup-tabs {
|
||
display: flex;
|
||
gap: 24px;
|
||
}
|
||
|
||
.tab-item {
|
||
font-size: 16px;
|
||
color: #666;
|
||
position: relative;
|
||
transition: all 0.2s;
|
||
}
|
||
|
||
.tab-item.active {
|
||
font-size: 20px;
|
||
font-weight: bold;
|
||
color: #111;
|
||
}
|
||
|
||
.tab-item.active::after {
|
||
content: '';
|
||
position: absolute;
|
||
bottom: -12px;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
width: 50%;
|
||
height: 3px;
|
||
background-color: #ff404f;
|
||
border-radius: 2px;
|
||
}
|
||
|
||
.popup-close {
|
||
position: absolute;
|
||
right: 20px;
|
||
font-size: 20px;
|
||
color: #333;
|
||
font-weight: 300;
|
||
}
|
||
|
||
.popup-content {
|
||
flex: 1;
|
||
overflow-y: auto;
|
||
overflow-x: hidden;
|
||
padding: 24px 20px 40px 20px;
|
||
box-sizing: border-box;
|
||
word-break: break-word;
|
||
}
|
||
|
||
/* 弹窗内的说明列表样式 */
|
||
.service-popup-global-desc {
|
||
font-size: 14px;
|
||
color: #666;
|
||
line-height: 1.5;
|
||
margin-bottom: 24px;
|
||
}
|
||
|
||
.service-popup-item {
|
||
margin-bottom: 24px;
|
||
}
|
||
|
||
.service-popup-item-title {
|
||
font-size: 16px;
|
||
font-weight: bold;
|
||
color: #111;
|
||
display: flex;
|
||
align-items: center;
|
||
margin-bottom: 8px;
|
||
}
|
||
|
||
.notice-pure-title {
|
||
/* 须知弹窗里没有icon,可以微调样式 */
|
||
}
|
||
|
||
.service-popup-item-content {
|
||
font-size: 14px;
|
||
color: #666;
|
||
line-height: 1.6;
|
||
padding-left: 0;
|
||
text-align: left;
|
||
}
|
||
|
||
/* 带有icon时,文字需要和icon对齐,缩进处理 */
|
||
.service-popup-item-title .icon-success,
|
||
.service-popup-item-title .icon-warning {
|
||
margin-right: 8px;
|
||
}
|
||
|
||
/* 场馆列表样式 */
|
||
.location-card {
|
||
cursor: pointer;
|
||
}
|
||
|
||
.venue-popup-item {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
padding: 16px 16px;
|
||
border-bottom: 1px solid #f0f0f0;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.venue-popup-item:last-child {
|
||
border-bottom: none;
|
||
}
|
||
|
||
.venue-popup-info {
|
||
flex: 1;
|
||
text-align: left;
|
||
padding-right: 16px;
|
||
}
|
||
|
||
.venue-info-row {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-bottom: 6px;
|
||
line-height: 1;
|
||
}
|
||
|
||
.venue-popup-name {
|
||
font-size: 16px;
|
||
font-weight: bold;
|
||
color: #111;
|
||
margin-bottom: 6px;
|
||
}
|
||
|
||
.venue-popup-address {
|
||
font-size: 13px;
|
||
color: #999;
|
||
line-height: 1.4;
|
||
}
|
||
|
||
.venue-popup-nav {
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.nav-icon-circle {
|
||
width: 36px;
|
||
height: 36px;
|
||
background-color: #d2cfcf;
|
||
border-radius: 50%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
|
||
/* =========== 顶部导航按钮 =========== */
|
||
.pf {
|
||
position: fixed;
|
||
}
|
||
|
||
.top-nav-left-icon {
|
||
position: fixed;
|
||
left: 12px;
|
||
top: 44px;
|
||
display: flex;
|
||
align-items: center;
|
||
z-index: 9999;
|
||
}
|
||
|
||
.back-icon {
|
||
width: 32px;
|
||
height: 32px;
|
||
background-color: rgba(255, 255, 255, 0.9);
|
||
border-radius: 50%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-size: 20px;
|
||
color: #333;
|
||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
||
}
|
||
|
||
.round {
|
||
border-radius: 50%;
|
||
}
|
||
|
||
.cp {
|
||
cursor: pointer;
|
||
} |