Files
mini-programs/src/pages/detail/index.scss
2025-08-26 00:02:42 +08:00

946 lines
24 KiB
SCSS

@use '~@/scss/images.scss' as img;
.detail-page {
width: 100%;
height: 100%;
// padding-bottom: env(safe-area-inset-bottom);
.custom-navbar {
height: 56px; /* 通常与原生导航栏高度一致 */
display: flex;
align-items: center;
justify-content: center;
// background-color: #fff;
color: #000;
padding-top: 44px; /* 适配状态栏 */
position: sticky;
top: 0;
z-index: 100;
}
.detail-navigator {
height: 30px;
width: 80px;
border-radius: 15px;
position: absolute;
left: 12px;
border: 1px solid #888;
box-sizing: border-box;
color: #fff;
display: flex;
align-items: center;
.detail-navigator-back {
border-right: 1px solid #444;
}
.detail-navigator-back, .detail-navigator-icon {
height: 20px;
width: 50%;
display: flex;
justify-content: center;
& > .detail-navigator-back-icon {
width: 20px;
height: 20px;
color: #fff;
}
& > .detail-navigator-logo-icon {
width: 20px;
height: 20px;
color: #fff;
}
}
}
.detail-page-bg {
width: 100%;
height: 100%;
position: fixed;
left: 0;
top: 0;
background-size: cover;
filter: blur(40px);
transform: scale(1.5);
z-index: -2;
width: calc(100% + 20px);
height: calc(100% + 20px);
margin: -10px;
}
.detail-page-bg-text {
width: 100%;
height: 100%;
position: fixed;
left: 0;
top: 0;
z-index: -1;
background-color: rgba(0, 0, 0, 0.3);
}
.detail-swiper {
height: 240px;
margin-top: 15px;
margin-left: 15px;
}
.detail-swiper-item {
overflow: visible;
height: 100%;
.detail-swiper-item-image {
width: 100%;
height: 100%;
border-radius: 12px;
transition: transform 0.5s;
}
}
.detail-page-content {
&-avatar-tags {
padding: 20px 20px 0;
box-sizing: border-box;
display: flex;
align-items: center;
gap: 6px;
&-avatar {
width: 28px;
height: 28px;
border-radius: 50%;
overflow: hidden;
&-image {
width: 28px;
height: 28px;
border-radius: 50%;
}
}
&-tags {
display: flex;
align-items: center;
gap: 6px;
&-tag {
display: flex;
height: 28px;
padding: 6px 12px;
box-sizing: border-box;
align-items: center;
gap: 4px;
border-radius: 999px;
border: 0.5px solid rgba(255, 255, 255, 0.08);
background: rgba(255, 255, 255, 0.25);
color: #fff;
font-size: 13px;
font-weight: 500;
line-height: 20px;
letter-spacing: -0.23px;
text-align: center;
}
}
}
&-title {
padding: 20px 20px 0;
box-sizing: border-box;
&-text {
overflow: hidden;
color: #FFF;
font-feature-settings: 'liga' off, 'clig' off;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-size: 22px;
font-style: normal;
font-weight: 600;
line-height: 32px; /* 145.455% */
}
}
&-game-info {
&-date-weather {
padding: 20px 20px 0;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: space-between;
// gap: 12px;
&-calendar-date {
width: 60%;
display: flex;
align-items: center;
gap: 16px;
&-calendar {
display: flex;
width: 48px;
height: 48px;
padding-bottom: 6px;
box-sizing: border-box;
flex-direction: column;
align-items: center;
gap: 4px;
border-radius: 12px;
// border: 0.5px solid rgba(255, 255, 255, 0.08);
background: rgba(255, 255, 255, 0.25);
overflow: hidden;
color: #FFF;
.month {
width: 100%;
height: 18px;
font-size: 10px;
display: flex;
padding: 1px auto;
box-sizing: border-box;
justify-content: center;
align-items: center;
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
background: #7B828B;
}
.day {
display: flex;
width: 48px;
padding-bottom: 6px;
box-sizing: border-box;
flex-direction: column;
align-items: center;
gap: 4px;
// border: 0.5px solid rgba(255, 255, 255, 0.08);
// background: rgba(255, 255, 255, 0.25);
}
}
&-date {
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: space-evenly;
gap: 4px;
align-self: stretch;
color: #FFF;
.date {
color: #FFF;
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 16px;
font-style: normal;
font-weight: 600;
line-height: 24px; /* 150% */
}
.venue-time {
color: rgba(255, 255, 255, 0.80);
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 20px; /* 166.667% */
}
}
}
&-weather {
display: flex;
align-items: flex-end;
flex-direction: column;
gap: 4px;
&-icon {
width: 20px;
height: 20px;
.weather-icon {
width: 20px;
height: 20px;
}
}
&-text-temperature {
display: flex;
align-items: center;
gap: 12px;
color: rgba(255, 255, 255, 0.80);
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 20px; /* 166.667% */
}
}
}
&-place {
.location-message {
padding: 20px 20px 0;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: flex-start;
gap: 12px;
&-icon {
width: 48px;
height: 48px;
border-radius: 12px;
padding: 14px;
box-sizing: border-box;
background: #4D5865;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
// border: 0.5px solid rgba(255, 255, 255, 0.08);
background: rgba(255, 255, 255, 0.25);
&-image {
width: 20px;
height: 20px;
}
}
&-text {
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: space-evenly;
gap: 4px;
align-self: stretch;
&-name-distance {
display: flex;
align-items: center;
gap: 4px;
color: #FFF;
text-align: center;
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 16px;
font-style: normal;
font-weight: 600;
line-height: 24px; /* 150% */
&-arrow {
width: 16px;
height: 16px;
}
}
&-address {
color: rgba(255, 255, 255, 0.80);
text-align: center;
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 20px; /* 166.667% */
}
}
}
.location-map {
width: 100%;
padding: 20px 20px 0;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
&-map {
width: 100%;
height: 95px;
}
}
}
}
&-detail {
padding: 24px 15px 0;
box-sizing: border-box;
.venue-detail-title {
display: flex;
height: 31px;
align-items: center;
justify-content: flex-start;
gap: 4px;
padding-bottom: 6px;
color: #FFF;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-size: 16px;
font-style: normal;
font-weight: 600;
line-height: 24px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
&-notice-icon {
width: 14px;
height: 14px;
}
}
.venue-detail-content {
padding: 16px 0 0;
box-sizing: border-box;
&-tags {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
&-tag {
overflow: hidden;
color: #FFF;
font-feature-settings: 'liga' off, 'clig' off;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-size: 15px;
font-style: normal;
font-weight: 500;
line-height: 24px; /* 160% */
}
}
&-remarks {
overflow: hidden;
color: rgba(255, 255, 255, 0.65);
// font-feature-settings: 'liga' off, 'clig' off;
// text-overflow: ellipsis;
// white-space: nowrap;
font-family: "PingFang SC";
font-size: 15px;
font-style: normal;
font-weight: 400;
line-height: 24px; /* 160% */
}
}
}
&-gameplay-requirements {
padding: 24px 15px 0;
box-sizing: border-box;
.gameplay-requirements-title {
overflow: hidden;
color: #FFF;
height: 24px;
padding-bottom: 6px;
font-feature-settings: 'liga' off, 'clig' off;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-size: 16px;
font-style: normal;
font-weight: 600;
line-height: 24px; /* 150% */
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.gameplay-requirements {
padding: 12px 0 0;
display: flex;
flex-direction: column;
gap: 12px;
&-item {
display: flex;
justify-content: space-between;
align-items: center;
gap: 2px;
align-self: stretch;
&-title {
color: rgba(255, 255, 255, 0.80);
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 14px;
font-style: normal;
font-weight: 400;
line-height: 24px; /* 171.429% */
}
&-desc {
color: #FFF;
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 15px;
font-style: normal;
font-weight: 600;
line-height: 24px; /* 160% */
}
}
}
}
&-participants {
padding: 24px 15px 0;
box-sizing: border-box;
.participants-title {
display: flex;
padding-bottom: 6px;
align-items: center;
overflow: hidden;
color: #FFF;
font-feature-settings: 'liga' off, 'clig' off;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-size: 16px;
font-style: normal;
font-weight: 600;
line-height: 24px; /* 150% */
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.participants-list {
padding: 10px 0 0;
height: 162px;
display: flex;
flex-direction: row;
gap: 8px;
&-application {
display: flex;
width: 108px;
height: 162px;
padding: 16px 12px 10px 12px;
box-sizing: border-box;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 8px;
align-self: stretch;
border-radius: 20px;
border: 1px dashed rgba(255, 255, 255, 0.20);
background: rgba(255, 255, 255, 0.16);
flex: 0 0 auto;
&-icon {
width: 28px;
height: 28px;
}
&-text {
color: rgba(255, 255, 255, 0.60);
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 12px;
font-style: normal;
font-weight: 500;
line-height: 20px; /* 166.667% */
}
}
&-scroll {
flex: 0 0 auto;
&-content {
display: flex;
flex-direction: row;
gap: 8px;
height: 162px;
flex-wrap: nowrap;
.participants-list-item {
display: flex;
width: 108px;
padding: 16px 12px 10px 12px;
box-sizing: border-box;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 4px;
border-radius: 20px;
border: 0.5px solid rgba(255, 255, 255, 0.20);
background: rgba(255, 255, 255, 0.16);
flex: 0 0 auto;
&-avatar {
width: 60px;
height: 60px;
}
&-name {
color: rgba(255, 255, 255, 0.85);
text-align: center;
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 13px;
font-style: normal;
font-weight: 500;
line-height: 24px; /* 184.615% */
}
&-level {
color: rgba(255, 255, 255, 0.45);
text-align: center;
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 20px; /* 166.667% */
}
&-role {
color: #FFF;
text-align: center;
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 12px;
font-style: normal;
font-weight: 500;
line-height: 20px; /* 166.667% */
}
}
}
}
}
}
&-supplemental-notes {
padding: 24px 15px 0;
.supplemental-notes-title {
overflow: hidden;
padding-bottom: 7px;
height: 24px;
color: #FFF;
font-feature-settings: 'liga' off, 'clig' off;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-size: 16px;
font-style: normal;
font-weight: 600;
line-height: 24px; /* 150% */
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.supplemental-notes-content {
padding: 12px 0 0;
display: flex;
flex-direction: column;
gap: 6px;
&-tags {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
&-tag {
overflow: hidden;
color: #FFF;
font-feature-settings: 'liga' off, 'clig' off;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-size: 15px;
font-style: normal;
font-weight: 500;
line-height: 24px; /* 160% */
}
}
&-text {
overflow: hidden;
color: rgba(255, 255, 255, 0.65);
font-feature-settings: 'liga' off, 'clig' off;
font-family: "PingFang SC";
font-size: 15px;
font-style: normal;
font-weight: 400;
line-height: 24px; /* 160% */
}
}
}
&-organizer-recommend-games {
padding: 24px 15px 0;
.organizer-title {
overflow: hidden;
padding-bottom: 6px;
height: 24px;
color: #FFF;
font-feature-settings: 'liga' off, 'clig' off;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-size: 16px;
font-style: normal;
font-weight: 600;
line-height: 24px; /* 150% */
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.organizer-avatar-name {
display: flex;
align-items: center;
padding: 16px 0 0;
align-items: center;
gap: 8px;
justify-content: flex-start;
&-avatar {
width: 40px;
height: 40px;
}
&-message {
display: flex;
flex-direction: column;
gap: 4px;
&-name {
color: rgba(255, 255, 255, 0.85);
font-size: 13px;
font-style: normal;
font-weight: 500;
line-height: 24px; /* 184.615% */
}
&-stats {
display: flex;
align-items: center;
gap: 5px;
color: rgba(255, 255, 255, 0.60);
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 16px; /* 133.333% */
letter-spacing: 0.06px;
&-separator {
width: 1px;
height: 10px;
color: rgba(255, 255, 255, 0.20);
}
}
}
.organizer-actions {
display: flex;
align-items: center;
gap: 8px;
margin-left: auto;
.organizer-actions-follow, .organizer-actions-comment {
display: flex;
height: 32px;
box-sizing: border-box;
align-items: center;
gap: 4px;
border-radius: 999px;
// border: 0.5px solid rgba(255, 255, 255, 0.10);
background: rgba(255, 255, 255, 0.16);
box-shadow: 0 4px 48px 0 rgba(0, 0, 0, 0.08);
& > image {
width: 16px;
height: 16px;
}
}
.organizer-actions-follow {
padding: 8px 12px 8px;
&-text {
color: #FFF;
font-size: 13px;
font-style: normal;
font-weight: 500;
line-height: 20px; /* 153.846% */
letter-spacing: -0.23px;
}
}
.organizer-actions-comment {
padding: 8px 10px;
}
}
}
.organizer-recommend-games {
padding-top: 20px;
.organizer-recommend-games-title {
overflow: hidden;
color: rgba(255, 255, 255, 0.65);
font-family: "PingFang SC";
font-size: 15px;
font-style: normal;
font-weight: 500;
line-height: 24px; /* 160% */
display: flex;
align-items: center;
gap: 2px;
align-self: stretch;
&-arrow {
width: 12px;
height: 12px;
}
}
.recommend-games-list {
padding: 10px 0;
display: flex;
gap: 8px;
flex-wrap: nowrap;
&-content {
display: flex;
gap: 8px;
flex-wrap: nowrap;
.recommend-games-list-item {
width: 246px;
height: 122px;
display: flex;
flex-direction: column;
gap: 6px;
flex: 0 0 auto;
border-radius: 20px;
border: 1px solid rgba(33, 178, 0, 0.20);
background: rgba(255, 255, 255, 0.16);
padding: 12px 15px;
box-sizing: border-box;
&-title {
display: flex;
align-items: center;
height: 24px;
gap: 2px;
overflow: hidden;
color: rgba(255, 255, 255, 0.85);
text-overflow: ellipsis;
font-size: 16px;
font-style: normal;
font-weight: 600;
line-height: 24px; /* 150% */
&-arrow {
width: 12px;
height: 12px;
}
}
&-time-range {
overflow: hidden;
color: rgba(255, 255, 255, 0.45);
text-overflow: ellipsis;
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 18px; /* 150% */
}
&-location-venue-distance {
display: flex;
align-items: center;
gap: 2px;
overflow: hidden;
color: rgba(255, 255, 255, 0.45);
font-feature-settings: 'liga' off, 'clig' off;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 18px; /* 150% */
}
&-addon {
display: flex;
align-items: center;
gap: 4px;
&-avatar {
width: 20px;
height: 20px;
}
&-message {
display: flex;
gap: 4px;
&-applications, &-level-requirements, &-play-type {
color: rgba(255, 255, 255, 0.85);
font-size: 11px;
font-style: normal;
font-weight: 500;
line-height: 20px; /* 181.818% */
letter-spacing: -0.23px;
display: flex;
height: 20px;
padding: 6px 8px;
box-sizing: border-box;
align-items: center;
gap: 4px;
border-radius: 999px;
// border: 0.5px solid rgba(0, 0, 0, 0.16);
background: rgba(255, 255, 255, 0.12);
}
}
}
}
}
}
}
}
.sticky-bottom-bar {
position: sticky;
bottom: 0;
padding: 10px 10px env(safe-area-inset-bottom);
box-sizing: border-box;
width: 100%;
height: calc(52px + env(safe-area-inset-bottom));
display: flex;
align-items: center;
justify-content: space-between;
gap: 6px;
&-share-and-comment {
display: flex;
align-items: center;
height: 52px;
width: 113px;
box-sizing: border-box;
padding: 2px 20px;
justify-content: center;
gap: 16px;
border-radius: 16px;
border: 1px solid rgba(255, 255, 255, 0.06);
background: #FFF;
}
&-join-game {
display: flex;
align-items: center;
height: 52px;
width: auto;
padding: 2px 6px;
box-sizing: border-box;
justify-content: center;
gap: 12px;
flex: 1 0 0;
border-radius: 16px;
border: 1px solid rgba(0, 0, 0, 0.06);
background: #FFF;
}
}
}
}