Merge branch 'main' of https://git.mfcg.me/all_user/web_huangguo_web
This commit is contained in:
@@ -19,7 +19,7 @@ func TestNavigationPageUsesDedicatedVerificationAndAnalytics(t *testing.T) {
|
||||
t.Fatalf("navigation SEO output does not contain %q", want)
|
||||
}
|
||||
}
|
||||
for _, unwanted := range []string{"112387687", "G-TZQS2NZ3TN", "6bb06ed5659790d0"} {
|
||||
for _, unwanted := range []string{"112967594", "G-B5KGM8S5J1", "6bb06ed5659790d0"} {
|
||||
if strings.Contains(navHTML, unwanted) {
|
||||
t.Fatalf("navigation SEO output unexpectedly contains main-site id %q", unwanted)
|
||||
}
|
||||
@@ -31,8 +31,8 @@ func TestMainSiteKeepsMainVerificationAndAnalytics(t *testing.T) {
|
||||
for _, want := range []string{
|
||||
"r7geXn5kBugzOSLZzyw4v3NBDMQwAmzFCVkqp92odh0",
|
||||
"6bb06ed5659790d0",
|
||||
"112387687",
|
||||
"G-TZQS2NZ3TN",
|
||||
"112967594",
|
||||
"G-B5KGM8S5J1",
|
||||
} {
|
||||
if !strings.Contains(mainHTML, want) {
|
||||
t.Fatalf("main-site SEO output does not contain %q", want)
|
||||
|
||||
+5
-577
@@ -8,11 +8,6 @@
|
||||
.detail-h5-bg,
|
||||
.detail-h5-top,
|
||||
.detail-h5-bar,
|
||||
.detail-meta-h5,
|
||||
.detail-intro-title,
|
||||
.detail-episodes-status,
|
||||
.detail-episode-ranges,
|
||||
.detail-episode--preview,
|
||||
.detail-related-title-h5,
|
||||
.detail-related-refresh {
|
||||
display: none;
|
||||
@@ -50,169 +45,6 @@
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.detail-hero {
|
||||
align-self: stretch;
|
||||
width: 100%;
|
||||
padding: 24px 48px 24px 24px;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
overflow: hidden;
|
||||
border-radius: 16px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.10);
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
gap: 24px;
|
||||
display: flex;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.detail-cover {
|
||||
width: 300px;
|
||||
height: 400px;
|
||||
border-radius: 18px;
|
||||
object-fit: cover;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.detail-hero-main {
|
||||
flex: 1 1 0;
|
||||
min-width: 0;
|
||||
min-height: 400px;
|
||||
overflow: hidden;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: flex-start;
|
||||
gap: 30px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.detail-hero-info {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
gap: 30px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.detail-tags {
|
||||
align-self: stretch;
|
||||
height: auto;
|
||||
min-height: 26px;
|
||||
overflow: visible;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
gap: 9px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.detail-tag {
|
||||
height: 26px;
|
||||
max-width: 100%;
|
||||
padding: 0 11px;
|
||||
background: rgba(255, 255, 255, 0.10);
|
||||
overflow: hidden;
|
||||
border-radius: 13px;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
display: inline-flex;
|
||||
color: #8A8A8A;
|
||||
font-size: 12px;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400;
|
||||
line-height: 18px;
|
||||
box-sizing: border-box;
|
||||
flex-shrink: 0;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.detail-tag--primary {
|
||||
background: #ec237f;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.detail-title {
|
||||
margin: 0;
|
||||
color: white;
|
||||
font-size: 34px;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400;
|
||||
line-height: 40px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.detail-meta {
|
||||
color: #8A8A8A;
|
||||
font-size: 12px;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400;
|
||||
line-height: 18px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.detail-meta-pc {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 18px;
|
||||
}
|
||||
|
||||
.detail-intro-block {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.detail-intro {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
color: #8A8A8A;
|
||||
font-size: 12px;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400;
|
||||
line-height: 18px;
|
||||
word-wrap: break-word;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 6;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.detail-intro-prefix-pc {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.detail-actions {
|
||||
width: 100%;
|
||||
height: 45px;
|
||||
overflow: hidden;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.detail-play-btn {
|
||||
height: 45px;
|
||||
padding: 0 12px;
|
||||
background: #ec237f;
|
||||
overflow: hidden;
|
||||
border-radius: 23px;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
color: #181818;
|
||||
font-size: 16px;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400;
|
||||
line-height: 22px;
|
||||
text-decoration: none;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.detail-action-group {
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
@@ -274,78 +106,6 @@
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
.detail-episodes {
|
||||
align-self: stretch;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
gap: 16px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.detail-episodes-head {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.detail-section-label {
|
||||
color: #F5F5F5;
|
||||
font-size: 18px;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 600;
|
||||
line-height: 27px;
|
||||
}
|
||||
|
||||
.detail-episode-list {
|
||||
width: 100%;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
gap: 14px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.detail-episode-lock {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: 0 4px;
|
||||
border-radius: 0 7px 0 7px;
|
||||
background: #ec237f;
|
||||
color: #fff;
|
||||
font-size: 9px;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 500;
|
||||
line-height: 14px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.detail-episode {
|
||||
flex: 0 0 calc((100% - 98px) / 8);
|
||||
width: calc((100% - 98px) / 8);
|
||||
height: 54px;
|
||||
position: relative;
|
||||
background: rgba(255, 255, 255, 0.10);
|
||||
overflow: hidden;
|
||||
border-radius: 7px;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
color: #808080;
|
||||
font-size: 12px;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400;
|
||||
line-height: 18px;
|
||||
text-decoration: none;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.detail-comments {
|
||||
align-self: stretch;
|
||||
width: 100%;
|
||||
@@ -750,220 +510,19 @@
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.detail-meta-pc,
|
||||
.detail-actions,
|
||||
.detail-comments,
|
||||
.detail-related-desc,
|
||||
.detail-related-title-pc,
|
||||
.detail-episode-pc,
|
||||
.detail-episodes-status-icon,
|
||||
.detail-breadcrumb {
|
||||
.detail-related-desc,
|
||||
.detail-related-title-pc,
|
||||
.detail-breadcrumb {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.detail-meta-h5,
|
||||
.detail-intro-title,
|
||||
.detail-episodes-status,
|
||||
.detail-episode-ranges,
|
||||
.detail-episode--preview,
|
||||
.detail-related-title-h5,
|
||||
.detail-related-refresh,
|
||||
.detail-h5-bar {
|
||||
.detail-related-refresh,
|
||||
.detail-h5-bar {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.detail-hero {
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
background: transparent;
|
||||
border-radius: 0;
|
||||
border: none;
|
||||
display: grid;
|
||||
grid-template-columns: 76px 1fr;
|
||||
gap: 18px 12px;
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
.detail-hero-main {
|
||||
display: contents;
|
||||
}
|
||||
|
||||
.detail-cover {
|
||||
width: 76px;
|
||||
height: 106px;
|
||||
border-radius: 6px;
|
||||
grid-column: 1;
|
||||
grid-row: 1;
|
||||
background: #D4D4D4;
|
||||
}
|
||||
|
||||
.detail-hero-info {
|
||||
grid-column: 2;
|
||||
grid-row: 1;
|
||||
width: auto;
|
||||
gap: 12px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.detail-title {
|
||||
order: 1;
|
||||
width: 100%;
|
||||
max-width: 220px;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
line-height: 22px;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.detail-meta {
|
||||
order: 2;
|
||||
}
|
||||
|
||||
.detail-meta-h5 {
|
||||
align-items: flex-start;
|
||||
gap: 6px;
|
||||
color: white;
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.detail-meta-dot {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.detail-tags {
|
||||
order: 3;
|
||||
height: auto;
|
||||
gap: 6px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.detail-tag {
|
||||
height: auto;
|
||||
padding: 2px 6px;
|
||||
background: rgba(255, 255, 255, 0.10);
|
||||
border-radius: 3px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.detail-tag--primary {
|
||||
background: rgba(255, 255, 255, 0.10);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.detail-intro-block {
|
||||
grid-column: 1 / -1;
|
||||
max-width: none;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.detail-intro-title {
|
||||
color: white;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.detail-intro {
|
||||
color: white;
|
||||
-webkit-line-clamp: 3;
|
||||
}
|
||||
|
||||
.detail-intro-prefix-pc {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.detail-episodes {
|
||||
width: 100%;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.detail-episodes-head {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.detail-section-label {
|
||||
color: white;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.detail-episodes-status {
|
||||
align-items: center;
|
||||
gap: 2px;
|
||||
color: rgba(255, 255, 255, 0.35);
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.detail-episode-ranges {
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
gap: 24px;
|
||||
}
|
||||
|
||||
.detail-episode-range {
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
font-size: 14px;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.detail-episode-range--active {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.detail-episode-list {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
.detail-episode-list::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.detail-episode.is-range-hidden {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.detail-episode {
|
||||
flex: 0 0 58px;
|
||||
width: 58px;
|
||||
min-width: 58px;
|
||||
height: 58px;
|
||||
border-radius: 10px;
|
||||
background: rgba(255, 255, 255, 0.10);
|
||||
color: white;
|
||||
font-size: 18px;
|
||||
font-weight: 400;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.detail-episode::before {
|
||||
content: attr(data-ep);
|
||||
width: 24px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.detail-related {
|
||||
width: 100%;
|
||||
gap: 12px;
|
||||
@@ -1265,90 +824,6 @@
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.detail-hero {
|
||||
min-height: 0;
|
||||
padding: calc(24px * var(--detail-s)) calc(48px * var(--detail-s)) calc(24px * var(--detail-s)) calc(24px * var(--detail-s));
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
border: 0;
|
||||
outline: 1px solid rgba(255, 255, 255, 0.10);
|
||||
outline-offset: -1px;
|
||||
border-radius: calc(16px * var(--detail-s));
|
||||
gap: calc(24px * var(--detail-s));
|
||||
}
|
||||
|
||||
.detail-cover {
|
||||
width: calc(300px * var(--detail-s));
|
||||
height: calc(400px * var(--detail-s));
|
||||
border-radius: calc(18px * var(--detail-s));
|
||||
}
|
||||
|
||||
.detail-hero-main {
|
||||
min-height: calc(400px * var(--detail-s));
|
||||
gap: calc(30px * var(--detail-s));
|
||||
}
|
||||
|
||||
.detail-hero-info { gap: calc(30px * var(--detail-s)); }
|
||||
|
||||
.detail-tags {
|
||||
gap: calc(9px * var(--detail-s));
|
||||
height: calc(26px * var(--detail-s));
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.detail-tag {
|
||||
height: calc(26px * var(--detail-s));
|
||||
padding: 0 calc(11px * var(--detail-s));
|
||||
border-radius: calc(6px * var(--detail-s));
|
||||
background: rgba(255, 255, 255, 0.10);
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
font-size: calc(12px * var(--detail-s));
|
||||
line-height: calc(18px * var(--detail-s));
|
||||
}
|
||||
|
||||
.detail-tag--primary { background: #ec237f; color: #fff; }
|
||||
|
||||
.detail-title {
|
||||
font-size: calc(24px * var(--detail-s));
|
||||
font-weight: 600;
|
||||
line-height: calc(32px * var(--detail-s));
|
||||
}
|
||||
|
||||
.detail-meta {
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
font-size: calc(16px * var(--detail-s));
|
||||
line-height: calc(22px * var(--detail-s));
|
||||
}
|
||||
|
||||
.detail-meta-pc { gap: calc(18px * var(--detail-s)); }
|
||||
|
||||
.detail-intro {
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
font-size: calc(14px * var(--detail-s));
|
||||
line-height: calc(20px * var(--detail-s));
|
||||
}
|
||||
|
||||
.detail-actions {
|
||||
height: calc(45px * var(--detail-s));
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.detail-play-btn {
|
||||
height: calc(45px * var(--detail-s));
|
||||
padding: 0 calc(12px * var(--detail-s));
|
||||
gap: calc(4px * var(--detail-s));
|
||||
border-radius: calc(23px * var(--detail-s));
|
||||
background: #ec237f;
|
||||
color: #fff;
|
||||
font-size: calc(16px * var(--detail-s));
|
||||
line-height: calc(22px * var(--detail-s));
|
||||
}
|
||||
|
||||
.detail-play-btn img {
|
||||
width: calc(16px * var(--detail-s));
|
||||
height: calc(17px * var(--detail-s));
|
||||
filter: brightness(0) invert(1);
|
||||
}
|
||||
|
||||
.detail-action-group { gap: calc(16px * var(--detail-s)); }
|
||||
|
||||
.detail-action {
|
||||
@@ -1379,52 +854,6 @@
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
.detail-episodes { gap: calc(14px * var(--detail-s)); }
|
||||
|
||||
.detail-section-label {
|
||||
font-size: calc(24px * var(--detail-s));
|
||||
font-weight: 500;
|
||||
line-height: calc(32px * var(--detail-s));
|
||||
}
|
||||
|
||||
.detail-episode-pc {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.detail-episode-list {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, calc(58px * var(--detail-s)));
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
gap: calc(12px * var(--detail-s)) calc(7px * var(--detail-s));
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.detail-episode {
|
||||
flex: none;
|
||||
width: calc(58px * var(--detail-s));
|
||||
min-width: calc(58px * var(--detail-s));
|
||||
height: calc(58px * var(--detail-s));
|
||||
border-radius: calc(10px * var(--detail-s));
|
||||
background: rgba(255, 255, 255, 0.10);
|
||||
color: #fff;
|
||||
font-size: calc(18px * var(--detail-s));
|
||||
font-weight: 400;
|
||||
line-height: calc(24px * var(--detail-s));
|
||||
}
|
||||
|
||||
.detail-episode.is-active,
|
||||
.detail-episode.detail-episode--active {
|
||||
background: rgba(255, 74, 74, 0.08);
|
||||
color: #ec237f;
|
||||
}
|
||||
|
||||
.detail-episode::before {
|
||||
content: attr(data-ep);
|
||||
width: calc(24px * var(--detail-s));
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.content-official-info {
|
||||
padding: calc(24px * var(--detail-s)) calc(30px * var(--detail-s));
|
||||
border-radius: calc(18px * var(--detail-s));
|
||||
@@ -1579,7 +1008,6 @@
|
||||
.detail-main,
|
||||
.detail-sidebar { display: contents; }
|
||||
|
||||
.detail-episodes,
|
||||
.detail-related {
|
||||
padding-top: 18px;
|
||||
border-top: 1px solid rgba(255, 255, 255, .1);
|
||||
|
||||
@@ -0,0 +1,557 @@
|
||||
/* 详情页:信息卡(海报 + 剧集信息)与选集卡,结构参考 huangguoai.com 详情页,配色沿用品牌粉。 */
|
||||
|
||||
.dh-card {
|
||||
width: 100%;
|
||||
padding: 32px;
|
||||
background: #1A1A1A;
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
border-radius: 20px;
|
||||
box-sizing: border-box;
|
||||
font-family: PingFang SC, sans-serif;
|
||||
}
|
||||
|
||||
/* ---------- 信息卡 ---------- */
|
||||
.dh-hero {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 28px;
|
||||
}
|
||||
|
||||
.dh-poster {
|
||||
position: relative;
|
||||
flex: 0 0 210px;
|
||||
aspect-ratio: 3 / 4;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
border-radius: 12px;
|
||||
background: #111;
|
||||
}
|
||||
|
||||
.dh-poster-img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: block;
|
||||
object-fit: cover;
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
.dh-poster:hover .dh-poster-img {
|
||||
transform: scale(1.04);
|
||||
}
|
||||
|
||||
.dh-poster-badge {
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
left: 8px;
|
||||
padding: 2px 8px;
|
||||
background: #EC237F;
|
||||
border-radius: 6px;
|
||||
color: #FFFFFF;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.dh-poster-eps {
|
||||
position: absolute;
|
||||
right: 8px;
|
||||
bottom: 8px;
|
||||
padding: 2px 8px;
|
||||
background: rgba(0, 0, 0, 0.65);
|
||||
border-radius: 6px;
|
||||
color: #FFFFFF;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.dh-poster-play {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 56px;
|
||||
height: 56px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: rgba(236, 35, 127, 0.88);
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.4);
|
||||
transform: translate(-50%, -50%);
|
||||
transition: transform 0.2s ease, background 0.2s ease;
|
||||
}
|
||||
|
||||
.dh-poster-play img {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
/* player.svg 本身是黑色填充,粉底上统一显示为白色 */
|
||||
.dh-poster-play img,
|
||||
.dh-btn--primary img {
|
||||
filter: brightness(0) invert(1);
|
||||
}
|
||||
|
||||
.dh-poster:hover .dh-poster-play {
|
||||
background: #EC237F;
|
||||
transform: translate(-50%, -50%) scale(1.08);
|
||||
}
|
||||
|
||||
.dh-info {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.dh-brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
color: #FFFFFF;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.dh-brand-avatar {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.dh-title {
|
||||
margin: 0;
|
||||
color: #FFFFFF;
|
||||
font-size: 32px;
|
||||
font-weight: 600;
|
||||
line-height: 42px;
|
||||
}
|
||||
|
||||
.dh-meta {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.dh-meta span + span::before {
|
||||
content: "·";
|
||||
margin: 0 8px;
|
||||
color: rgba(255, 255, 255, 0.35);
|
||||
}
|
||||
|
||||
.dh-intro-title {
|
||||
margin: 6px 0 0;
|
||||
color: #FFFFFF;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.dh-intro {
|
||||
margin: 0;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
overflow: hidden;
|
||||
color: rgba(255, 255, 255, 0.72);
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.dh-intro.is-expanded {
|
||||
display: block;
|
||||
-webkit-line-clamp: unset;
|
||||
}
|
||||
|
||||
.dh-intro-toggle {
|
||||
margin-top: -6px;
|
||||
padding: 0;
|
||||
background: none;
|
||||
border: 0;
|
||||
color: #EC237F;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dh-tags,
|
||||
.dh-themes {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.dh-tag {
|
||||
padding: 4px 12px;
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
border-radius: 999px;
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
text-decoration: none;
|
||||
transition: background 0.18s ease, color 0.18s ease;
|
||||
}
|
||||
|
||||
a.dh-tag:hover {
|
||||
background: rgba(236, 35, 127, 0.16);
|
||||
color: #EC237F;
|
||||
}
|
||||
|
||||
.dh-themes-label {
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.dh-theme {
|
||||
padding: 3px 12px;
|
||||
border: 1px solid rgba(236, 35, 127, 0.6);
|
||||
border-radius: 999px;
|
||||
color: #EC237F;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.dh-theme:hover {
|
||||
background: rgba(236, 35, 127, 0.12);
|
||||
}
|
||||
|
||||
.dh-actions {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 12px;
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
.dh-btn {
|
||||
height: 48px;
|
||||
padding: 0 24px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
background: transparent;
|
||||
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||
border-radius: 999px;
|
||||
box-sizing: border-box;
|
||||
color: #FFFFFF;
|
||||
font-family: inherit;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
line-height: 22px;
|
||||
text-decoration: none;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
transition: border-color 0.18s ease, background 0.18s ease, filter 0.18s ease;
|
||||
}
|
||||
|
||||
.dh-btn img {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.dh-btn:hover {
|
||||
border-color: rgba(255, 255, 255, 0.45);
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
}
|
||||
|
||||
.dh-btn--primary {
|
||||
padding: 0 32px;
|
||||
background: #EC237F;
|
||||
border-color: #EC237F;
|
||||
}
|
||||
|
||||
.dh-btn--primary:hover {
|
||||
background: #EC237F;
|
||||
border-color: #EC237F;
|
||||
filter: brightness(1.08);
|
||||
}
|
||||
|
||||
/* ---------- 选集卡 ---------- */
|
||||
.dh-episodes-head {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.dh-episodes-title {
|
||||
margin: 0;
|
||||
color: #FFFFFF;
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
.dh-episodes-sub {
|
||||
margin-top: 4px;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.dh-episodes-hint {
|
||||
flex-shrink: 0;
|
||||
color: #EC237F;
|
||||
font-size: 13px;
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
.dh-ranges {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
margin-top: 16px;
|
||||
overflow-x: auto;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
.dh-ranges::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dh-range {
|
||||
flex: 0 0 auto;
|
||||
height: 32px;
|
||||
padding: 0 14px;
|
||||
background: rgba(255, 255, 255, 0.06);
|
||||
border: 0;
|
||||
border-radius: 8px;
|
||||
color: rgba(255, 255, 255, 0.7);
|
||||
font-family: inherit;
|
||||
font-size: 13px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dh-range.is-active {
|
||||
background: rgba(236, 35, 127, 0.16);
|
||||
color: #EC237F;
|
||||
}
|
||||
|
||||
.dh-ep-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(88px, 1fr));
|
||||
gap: 12px 10px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.dh-ep {
|
||||
position: relative;
|
||||
height: 44px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: rgba(255, 255, 255, 0.06);
|
||||
border-radius: 10px;
|
||||
color: #FFFFFF;
|
||||
font-size: 15px;
|
||||
font-weight: 500;
|
||||
text-decoration: none;
|
||||
transition: background 0.18s ease, color 0.18s ease;
|
||||
}
|
||||
|
||||
.dh-ep:hover {
|
||||
background: rgba(236, 35, 127, 0.18);
|
||||
color: #EC237F;
|
||||
}
|
||||
|
||||
.dh-ep.is-range-hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dh-ep-lock {
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
right: -4px;
|
||||
padding: 0 5px;
|
||||
background: #EC237F;
|
||||
border-radius: 6px 6px 6px 0;
|
||||
color: #FFFFFF;
|
||||
font-size: 10px;
|
||||
font-weight: 600;
|
||||
line-height: 15px;
|
||||
}
|
||||
|
||||
/* ---------- 官方地址卡(详情页内,含手机端) ---------- */
|
||||
body.is-detail-page .content-official-info {
|
||||
display: grid !important;
|
||||
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
||||
gap: 14px 24px;
|
||||
padding: 24px 32px;
|
||||
background: #1A1A1A;
|
||||
outline: 1px solid rgba(255, 255, 255, 0.08);
|
||||
border-radius: 20px;
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
body.is-detail-page .content-official-info::before {
|
||||
content: "官方地址 · 请收藏,防止迷路";
|
||||
grid-column: 1 / -1;
|
||||
color: #FFFFFF;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
body.is-detail-page .content-official-info a {
|
||||
color: #EC237F;
|
||||
font-size: 14px;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
/* ---------- 平板:信息卡缩小海报 ---------- */
|
||||
@media (min-width: 768px) and (max-width: 1023px) {
|
||||
.dh-card {
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
.dh-poster {
|
||||
flex-basis: 170px;
|
||||
}
|
||||
|
||||
.dh-title {
|
||||
font-size: 26px;
|
||||
line-height: 36px;
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------- 手机 ---------- */
|
||||
@media (max-width: 767px) {
|
||||
.dh-card {
|
||||
padding: 16px;
|
||||
background: rgba(26, 26, 26, 0.82);
|
||||
border-radius: 16px;
|
||||
-webkit-backdrop-filter: blur(10px);
|
||||
backdrop-filter: blur(10px);
|
||||
}
|
||||
|
||||
.dh-hero {
|
||||
flex-direction: column;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.dh-poster {
|
||||
flex: none;
|
||||
width: 48%;
|
||||
max-width: 190px;
|
||||
}
|
||||
|
||||
.dh-poster-play {
|
||||
width: 46px;
|
||||
height: 46px;
|
||||
}
|
||||
|
||||
.dh-poster-play img {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.dh-info {
|
||||
width: 100%;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.dh-brand {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.dh-brand-avatar {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.dh-title {
|
||||
font-size: 22px;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
.dh-meta {
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.dh-meta span + span::before {
|
||||
margin: 0 6px;
|
||||
}
|
||||
|
||||
.dh-intro-title {
|
||||
font-size: 15px;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.dh-intro {
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.dh-actions {
|
||||
width: 100%;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.dh-actions {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
|
||||
.dh-btn {
|
||||
height: 42px;
|
||||
padding: 0 14px;
|
||||
gap: 6px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.dh-btn img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.dh-btn--primary {
|
||||
flex: 1;
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
.dh-episodes-title {
|
||||
font-size: 17px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.dh-episodes-sub,
|
||||
.dh-episodes-hint {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.dh-episodes-hint {
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.dh-ep-grid {
|
||||
grid-template-columns: repeat(5, minmax(0, 1fr));
|
||||
gap: 10px 8px;
|
||||
}
|
||||
|
||||
.dh-ep {
|
||||
height: 42px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
body.is-detail-page .content-official-info {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 12px;
|
||||
padding: 16px;
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
body.is-detail-page .content-official-info::before {
|
||||
font-size: 15px;
|
||||
line-height: 22px;
|
||||
}
|
||||
}
|
||||
@@ -100,7 +100,6 @@
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
body[class].is-detail-page .download-fab,
|
||||
body[class].is-play-page .download-fab {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
+212
-25
@@ -29,18 +29,10 @@ a.footer-social-home-item {
|
||||
gap: min(12px, 0.625vw);
|
||||
}
|
||||
|
||||
body.home-page .footer-main {
|
||||
gap: min(32px, 1.666667vw);
|
||||
}
|
||||
|
||||
body.home-page .footer-product {
|
||||
gap: min(18px, 0.9375vw);
|
||||
}
|
||||
|
||||
body.home-page .footer-brand {
|
||||
gap: min(18px, 0.9375vw);
|
||||
}
|
||||
|
||||
body.home-page .footer-logo {
|
||||
width: min(178px, 9.270833vw);
|
||||
height: min(49px, 2.552083vw);
|
||||
@@ -52,28 +44,12 @@ a.footer-social-home-item {
|
||||
line-height: clamp(20px, 1.25vw, 24px);
|
||||
}
|
||||
|
||||
body.home-page .footer-contact {
|
||||
gap: min(4px, 0.208333vw);
|
||||
}
|
||||
|
||||
body.home-page .footer-contact-line,
|
||||
body.home-page .footer-links {
|
||||
font-size: clamp(12px, 0.833333vw, 16px);
|
||||
font-size: clamp(13px, 0.833333vw, 16px);
|
||||
line-height: clamp(18px, 1.145833vw, 22px);
|
||||
}
|
||||
|
||||
body.home-page .footer-links {
|
||||
gap: min(15px, 0.78125vw);
|
||||
}
|
||||
|
||||
body.home-page .footer-links a + a {
|
||||
padding-left: min(16px, 0.833333vw);
|
||||
}
|
||||
|
||||
body.home-page .footer-links a + a::before {
|
||||
height: min(18px, 0.9375vw);
|
||||
}
|
||||
|
||||
body.home-page .footer-bottom {
|
||||
min-height: min(38px, 1.979167vw);
|
||||
gap: min(24px, 1.25vw);
|
||||
@@ -968,3 +944,214 @@ body.site-shell.list-page-body {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* ===== 页脚改版:品牌 / 访问地址 / 帮助与支持 三栏 ===== */
|
||||
.footer-col-title {
|
||||
color: #FFFFFF;
|
||||
font-size: 15px;
|
||||
font-weight: 500;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.footer-contact-label {
|
||||
flex: 0 0 auto;
|
||||
min-width: 6.5em;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
|
||||
.footer-contact-url {
|
||||
min-width: 0;
|
||||
color: #EC237F;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
a.footer-contact-line:hover .footer-contact-url,
|
||||
a.footer-contact-line:focus-visible .footer-contact-url {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.footer-main {
|
||||
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
||||
align-items: start;
|
||||
column-gap: 48px;
|
||||
row-gap: 28px;
|
||||
}
|
||||
|
||||
.footer-brand {
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 1;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 14px;
|
||||
max-width: 640px;
|
||||
}
|
||||
|
||||
.footer-logo {
|
||||
height: 44px;
|
||||
}
|
||||
|
||||
.footer-brand .footer-muted-text {
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.footer-contact {
|
||||
grid-column: 1;
|
||||
grid-row: 2;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
min-width: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.footer-contact-line {
|
||||
flex-direction: row;
|
||||
align-items: baseline;
|
||||
gap: 12px;
|
||||
max-width: 100%;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.footer-nav-col {
|
||||
grid-column: 2;
|
||||
grid-row: 2;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, max-content);
|
||||
column-gap: 40px;
|
||||
row-gap: 10px;
|
||||
justify-self: start;
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.footer-links a + a {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.footer-links a + a::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.footer-divider {
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.footer-main {
|
||||
grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) auto;
|
||||
column-gap: 64px;
|
||||
}
|
||||
|
||||
.footer-brand {
|
||||
grid-column: 1;
|
||||
grid-row: 1;
|
||||
max-width: 560px;
|
||||
}
|
||||
|
||||
.footer-contact {
|
||||
grid-column: 2;
|
||||
grid-row: 1;
|
||||
}
|
||||
|
||||
.footer-nav-col {
|
||||
grid-column: 3;
|
||||
grid-row: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.footer-col-title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.footer-nav-col {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 链接换行时行首不再挂分隔线:改成 3 列网格 */
|
||||
.footer-links {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
row-gap: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.footer-links a + a {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.footer-links a + a::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.site-shell .home-mobile-footer-links {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
row-gap: 10px;
|
||||
column-gap: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.site-shell .home-mobile-footer-links a {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.site-shell .home-mobile-footer-links a::before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* 页脚进入视口时,悬浮按钮随之上移,不压住页脚(--footer-lift 由 footer.js 维护) */
|
||||
.download-fab,
|
||||
.floating-action {
|
||||
translate: 0 calc(var(--footer-lift, 0px) * -1);
|
||||
}
|
||||
|
||||
/* 手机页脚卡片底部:访问地址 */
|
||||
@media (max-width: 767px) {
|
||||
.site-shell .home-mobile-footer-addrs {
|
||||
width: 100%;
|
||||
padding-top: 14px;
|
||||
border-top: 1px solid rgba(255, 255, 255, 0.1);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.site-shell .home-mobile-footer-addr {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
font: 400 12px/18px "PingFang SC", sans-serif;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.site-shell .home-mobile-footer-addr span:first-child {
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
.site-shell .home-mobile-footer-addr-url {
|
||||
min-width: 0;
|
||||
color: #EC237F;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1569,3 +1569,33 @@ nav[aria-label="面包屑"] a:hover,
|
||||
nav[aria-label="面包屑"] a:focus-visible {
|
||||
color: #EC237F !important;
|
||||
}
|
||||
|
||||
/* 手机页头:下载 App / 商务 TG 图标,样式同搜索按钮 */
|
||||
.header-mobile-icon-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.header-mobile-icon-link {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex: 0 0 24px;
|
||||
border-radius: 50%;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
.header-mobile-icon-link img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
display: block;
|
||||
filter: brightness(0) invert(1);
|
||||
}
|
||||
|
||||
.header-mobile-icon-link .header-mobile-icon-img--lg {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -422,6 +422,15 @@
|
||||
line-height: 23px;
|
||||
}
|
||||
|
||||
body.home-page .card-grid .poster-card-tags {
|
||||
height: 29px;
|
||||
}
|
||||
|
||||
body.home-page .poster-card-episode {
|
||||
font-size: 16px;
|
||||
line-height: 23px;
|
||||
}
|
||||
|
||||
body.home-page .poster-card-tag,
|
||||
body.home-page .ranking-card-tag {
|
||||
padding: 2px 9px;
|
||||
@@ -911,6 +920,21 @@
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
/* 集数占了标签行右侧:放不下的标签整颗换行并被隐藏,而不是每颗都截成省略号 */
|
||||
.home-page .card-grid .poster-card-tags {
|
||||
flex-wrap: wrap;
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
.home-page .poster-card-episode {
|
||||
flex-shrink: 0;
|
||||
margin-left: 8px;
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.home-page .poster-card-tag,
|
||||
.home-page .ranking-card-tag {
|
||||
width: max-content;
|
||||
@@ -1287,6 +1311,15 @@
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.home-page .card-grid .poster-card-tags {
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.home-page .poster-card-episode {
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.home-page .episode-badge,
|
||||
.home-page .ranking-episode-badge {
|
||||
right: 8px;
|
||||
@@ -3451,3 +3484,13 @@ body.site-shell .theme-index-card:focus-visible > img {
|
||||
animation: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* 跑马灯里的官方地址链接 */
|
||||
.home-page .home-announcement-link {
|
||||
color: #EC237F;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.home-page .home-announcement-link:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 3H16C18.7614 3 21 5.23858 21 8V16C21 18.7614 18.7614 21 16 21H8C5.23858 21 3 18.7614 3 16V8C3 5.23858 5.23858 3 8 3ZM11 6.5H13V11.5H15.75L12 15.25L8.25 11.5H11V6.5ZM8 16.75C8 16.3358 8.33579 16 8.75 16H15.25C15.6642 16 16 16.3358 16 16.75C16 17.1642 15.6642 17.5 15.25 17.5H8.75C8.33579 17.5 8 17.1642 8 16.75Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 482 B |
@@ -1,9 +1,9 @@
|
||||
(function () {
|
||||
var section = document.querySelector(".detail-episodes");
|
||||
var section = document.querySelector("[data-dh-episodes]");
|
||||
if (!section) return;
|
||||
|
||||
var ranges = section.querySelectorAll(".detail-episode-range");
|
||||
var episodes = section.querySelectorAll(".detail-episode-list .detail-episode");
|
||||
var ranges = section.querySelectorAll(".dh-range");
|
||||
var episodes = section.querySelectorAll(".dh-ep");
|
||||
if (!episodes.length) return;
|
||||
if (!ranges.length) return;
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
function activate(btn) {
|
||||
ranges.forEach(function (item) {
|
||||
item.classList.toggle("detail-episode-range--active", item === btn);
|
||||
item.classList.toggle("is-active", item === btn);
|
||||
});
|
||||
applyRange(Number(btn.dataset.rangeStart), Number(btn.dataset.rangeEnd));
|
||||
}
|
||||
@@ -28,10 +28,29 @@
|
||||
});
|
||||
});
|
||||
|
||||
var active = section.querySelector(".detail-episode-range--active") || ranges[0];
|
||||
var active = section.querySelector(".dh-range.is-active") || ranges[0];
|
||||
activate(active);
|
||||
})();
|
||||
|
||||
// 简介超出行数时显示「展开 / 收起」
|
||||
(function () {
|
||||
var intro = document.querySelector("[data-dh-intro]");
|
||||
var toggle = document.querySelector("[data-dh-intro-toggle]");
|
||||
if (!intro || !toggle) return;
|
||||
|
||||
function sync() {
|
||||
if (intro.classList.contains("is-expanded")) return;
|
||||
toggle.hidden = intro.scrollHeight <= intro.clientHeight + 1;
|
||||
}
|
||||
|
||||
toggle.addEventListener("click", function () {
|
||||
var expanded = intro.classList.toggle("is-expanded");
|
||||
toggle.textContent = expanded ? "收起" : "展开";
|
||||
});
|
||||
window.addEventListener("resize", sync);
|
||||
sync();
|
||||
})();
|
||||
|
||||
(function () {
|
||||
var shareBtns = document.querySelectorAll("[data-detail-share]");
|
||||
if (!shareBtns.length) return;
|
||||
|
||||
@@ -5,4 +5,41 @@
|
||||
window.scrollTo({ top: 0, behavior: "smooth" });
|
||||
});
|
||||
});
|
||||
|
||||
// 页脚进入视口后,把悬浮按钮(下载 App / 回到顶部)顶到页脚上方,避免遮住页脚内容。
|
||||
var footers = document.querySelectorAll(".footer-box, .home-mobile-footer");
|
||||
if (!footers.length) return;
|
||||
var root = document.documentElement;
|
||||
var ticking = false;
|
||||
var lastLift = -1;
|
||||
|
||||
function visibleFooter() {
|
||||
for (var i = 0; i < footers.length; i++) {
|
||||
if (footers[i].offsetHeight > 0) return footers[i];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function update() {
|
||||
ticking = false;
|
||||
var footer = visibleFooter();
|
||||
var lift = 0;
|
||||
if (footer) {
|
||||
var top = footer.getBoundingClientRect().top;
|
||||
lift = Math.max(0, Math.round((window.innerHeight || 0) - top));
|
||||
}
|
||||
if (lift === lastLift) return;
|
||||
lastLift = lift;
|
||||
root.style.setProperty("--footer-lift", lift + "px");
|
||||
}
|
||||
|
||||
function schedule() {
|
||||
if (ticking) return;
|
||||
ticking = true;
|
||||
window.requestAnimationFrame(update);
|
||||
}
|
||||
|
||||
window.addEventListener("scroll", schedule, { passive: true });
|
||||
window.addEventListener("resize", schedule);
|
||||
schedule();
|
||||
})();
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
el = el.parentElement;
|
||||
}
|
||||
if (!el || !el.closest) return;
|
||||
var tag = el.closest(".poster-card-tag[data-tag-href], .ranking-card-tag[data-tag-href], .detail-tag[data-tag-href]");
|
||||
var tag = el.closest(".poster-card-tag[data-tag-href], .ranking-card-tag[data-tag-href]");
|
||||
if (!tag) return;
|
||||
var href = tag.getAttribute("data-tag-href");
|
||||
if (!href) return;
|
||||
|
||||
@@ -6,18 +6,18 @@
|
||||
m[i].l=1*new Date();
|
||||
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
|
||||
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)
|
||||
})(window, document,'script','https://mc.yandex.ru/metrika/tag.js?id={{if .isNavPage}}112390883{{else}}112387687{{end}}', 'ym');
|
||||
})(window, document,'script','https://mc.yandex.ru/metrika/tag.js?id={{if .isNavPage}}112390883{{else}}112967594{{end}}', 'ym');
|
||||
|
||||
ym({{if .isNavPage}}112390883{{else}}112387687{{end}}, 'init', {ssr:true, webvisor:true, clickmap:true, ecommerce:"dataLayer", referrer: document.referrer, url: location.href, accurateTrackBounce:true, trackLinks:true});
|
||||
ym({{if .isNavPage}}112390883{{else}}112967594{{end}}, 'init', {ssr:true, webvisor:true, clickmap:true, ecommerce:"dataLayer", referrer: document.referrer, url: location.href, accurateTrackBounce:true, trackLinks:true});
|
||||
</script>
|
||||
<!-- /Yandex.Metrika counter -->
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id={{if .isNavPage}}G-SY26Y2MSHS{{else}}G-TZQS2NZ3TN{{end}}"></script>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id={{if .isNavPage}}G-SY26Y2MSHS{{else}}G-B5KGM8S5J1{{end}}"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', '{{if .isNavPage}}G-SY26Y2MSHS{{else}}G-TZQS2NZ3TN{{end}}');
|
||||
gtag('config', '{{if .isNavPage}}G-SY26Y2MSHS{{else}}G-B5KGM8S5J1{{end}}');
|
||||
</script>
|
||||
{{end}}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{{define "downloadAppFloat"}} {{if .appConfig.AppAddr}}
|
||||
<link rel="stylesheet" href="/static/css/downloadAppFloat.css?v=5" />
|
||||
<link rel="stylesheet" href="/static/css/downloadAppFloat.css?v=6" />
|
||||
<a
|
||||
class="download-fab"
|
||||
href="{{.appConfig.AppAddr}}"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{{define "footer"}}
|
||||
<link rel="stylesheet" href="/static/css/footer.css?v=12" />
|
||||
<link rel="stylesheet" href="/static/css/footer.css?v=15" />
|
||||
<footer class="home-mobile-footer">
|
||||
<img class="home-mobile-footer-logo" src="/static/images/logo.png?v=3" width="127" height="40" alt="黄果短剧" title="黄果短剧" />
|
||||
<div class="home-mobile-footer-legal">
|
||||
@@ -35,6 +35,19 @@
|
||||
<img src="/static/images/figma-home/mobile/footer-top.svg" width="36" height="36" alt="" />
|
||||
</button>
|
||||
</div>
|
||||
{{if or .appConfig.NewURLAddr .appConfig.NewURLAddr1 .appConfig.ForeverURLAddr}}
|
||||
<div class="home-mobile-footer-addrs" aria-label="访问地址">
|
||||
{{if .appConfig.NewURLAddr}}
|
||||
<a class="home-mobile-footer-addr" href="{{.appConfig.NewURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span>最新地址</span><span class="home-mobile-footer-addr-url">{{.appConfig.NewURLAddr}}</span></a>
|
||||
{{end}}
|
||||
{{if .appConfig.NewURLAddr1}}
|
||||
<a class="home-mobile-footer-addr" href="{{.appConfig.NewURLAddr1}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span>备用地址</span><span class="home-mobile-footer-addr-url">{{.appConfig.NewURLAddr1}}</span></a>
|
||||
{{end}}
|
||||
{{if .appConfig.ForeverURLAddr}}
|
||||
<a class="home-mobile-footer-addr" href="{{.appConfig.ForeverURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span>海外永久地址</span><span class="home-mobile-footer-addr-url">{{.appConfig.ForeverURLAddr}}</span></a>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
</footer>
|
||||
<footer class="footer-box">
|
||||
<div class="footer-outer">
|
||||
@@ -54,14 +67,15 @@
|
||||
{{end}}
|
||||
{{if or .appConfig.NewURLAddr .appConfig.NewURLAddr1 .appConfig.ForeverURLAddr}}
|
||||
<div class="footer-contact" aria-label="访问地址">
|
||||
<div class="footer-col-title">访问地址</div>
|
||||
{{if .appConfig.NewURLAddr}}
|
||||
<a class="footer-contact-line" href="{{.appConfig.NewURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">最新地址:{{.appConfig.NewURLAddr}}</a>
|
||||
<a class="footer-contact-line" href="{{.appConfig.NewURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span class="footer-contact-label">最新地址</span><span class="footer-contact-url">{{.appConfig.NewURLAddr}}</span></a>
|
||||
{{end}}
|
||||
{{if .appConfig.NewURLAddr1}}
|
||||
<a class="footer-contact-line" href="{{.appConfig.NewURLAddr1}}" target="_blank" rel="sponsored nofollow noopener noreferrer">备用地址:{{.appConfig.NewURLAddr1}}</a>
|
||||
<a class="footer-contact-line" href="{{.appConfig.NewURLAddr1}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span class="footer-contact-label">备用地址</span><span class="footer-contact-url">{{.appConfig.NewURLAddr1}}</span></a>
|
||||
{{end}}
|
||||
{{if .appConfig.ForeverURLAddr}}
|
||||
<a class="footer-contact-line" href="{{.appConfig.ForeverURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">海外永久地址:{{.appConfig.ForeverURLAddr}}</a>
|
||||
<a class="footer-contact-line" href="{{.appConfig.ForeverURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span class="footer-contact-label">海外永久地址</span><span class="footer-contact-url">{{.appConfig.ForeverURLAddr}}</span></a>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
@@ -69,8 +83,11 @@
|
||||
{{if .footer.NavList}}
|
||||
{{with index .footer.NavList 0}}
|
||||
{{if .TranslationList}}
|
||||
<div class="footer-links footer-muted-text">
|
||||
{{template "footerNavItems" .TranslationList}}
|
||||
<div class="footer-nav-col">
|
||||
<div class="footer-col-title">帮助与支持</div>
|
||||
<nav class="footer-links footer-muted-text" aria-label="页脚导航">
|
||||
{{template "footerNavItems" .TranslationList}}
|
||||
</nav>
|
||||
</div>
|
||||
{{end}}
|
||||
{{end}}
|
||||
@@ -144,11 +161,11 @@
|
||||
</a>
|
||||
</nav>
|
||||
<noscript>
|
||||
<div><img src="https://mc.yandex.ru/watch/112387687" style="position:absolute; left:-9999px;" alt="" /></div>
|
||||
<div><img src="https://mc.yandex.ru/watch/112967594" style="position:absolute; left:-9999px;" alt="" /></div>
|
||||
</noscript>
|
||||
{{template "scrollToTop" .}}
|
||||
{{template "downloadAppFloat" .}}
|
||||
<script defer src="/static/js/pages/footer.js?v=1"></script>
|
||||
<script defer src="/static/js/pages/footer.js?v=2"></script>
|
||||
{{template "pageConsole" .}}
|
||||
{{end}}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{{define "header"}}
|
||||
<link rel="stylesheet" href="/static/css/header.css?v=14" />
|
||||
<link rel="stylesheet" href="/static/css/header.css?v=17" />
|
||||
<header class="site-header">
|
||||
<div class="header-inner">
|
||||
<button
|
||||
@@ -67,6 +67,17 @@
|
||||
/>
|
||||
</form>
|
||||
|
||||
{{if .appConfig.AppAddr}}
|
||||
<a class="header-mobile-icon-link" href="{{.appConfig.AppAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer" data-download-app-open aria-label="下载 App">
|
||||
<img class="header-mobile-icon-img--lg" src="/static/images/header-download.svg?v=2" width="18" height="18" alt="" />
|
||||
</a>
|
||||
{{end}}
|
||||
{{$headerBizHref := footerContactURL "商务合作" "" .appConfig.GmailAddr .appConfig.TGGroup .appConfig.CustomerServiceHost}}
|
||||
{{if $headerBizHref}}
|
||||
<a class="header-mobile-icon-link" href="{{$headerBizHref}}"{{if hasPrefix $headerBizHref "http"}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}} aria-label="商务合作 Telegram">
|
||||
<img src="/static/images/figma-home/mobile/drawer-telegram.svg" width="16" height="16" alt="" />
|
||||
</a>
|
||||
{{end}}
|
||||
<a class="header-mobile-search-link" href="/search/" aria-label="前往搜索页">
|
||||
<img src="/static/images/figma-home/mobile/search.svg" width="16" height="16" alt="" />
|
||||
</a>
|
||||
@@ -157,6 +168,6 @@
|
||||
|
||||
<script defer src="/static/js/common/request.js?v=3"></script>
|
||||
<script defer src="/static/common/imgDecypt.js?v=2"></script>
|
||||
<script defer src="/static/js/pages/header.js?v=9"></script>
|
||||
<script defer src="/static/js/pages/header.js?v=10"></script>
|
||||
<script defer src="/static/js/pages/dialogLoader.js?v=7"></script>
|
||||
{{template "toast" .}} {{template "eightPop" .}} {{template "dialogAd" .}} {{end}}
|
||||
|
||||
@@ -20,7 +20,8 @@
|
||||
<script type="application/ld+json">{{.jsonLD}}</script>
|
||||
{{end}}
|
||||
<link rel="stylesheet" href="/static/css/index.css?v=27">
|
||||
<link rel="stylesheet" href="/static/css/detail.css?v=30">
|
||||
<link rel="stylesheet" href="/static/css/detail.css?v=31">
|
||||
<link rel="stylesheet" href="/static/css/detailHero.css?v=3">
|
||||
|
||||
|
||||
</head>
|
||||
@@ -55,90 +56,78 @@
|
||||
</nav>
|
||||
<div class="detail-layout">
|
||||
<div class="detail-main">
|
||||
<section class="detail-hero">
|
||||
<img class="detail-cover lazy" src="/static/images/placeholder.png?v=2" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}" title="{{.Title}}" />
|
||||
<div class="detail-hero-main">
|
||||
<div class="detail-hero-info">
|
||||
{{$detailTags := namedTags .TagIDs .TagNames .TagSlugs}}
|
||||
{{if $detailTags}}
|
||||
<div class="detail-tags">
|
||||
{{range $detailTags}}
|
||||
{{if .URL}}
|
||||
<a class="detail-tag" href="{{.URL}}" data-tag-href="{{.URL}}">{{.Name}}</a>
|
||||
{{else}}
|
||||
<span class="detail-tag">{{.Name}}</span>
|
||||
{{end}}
|
||||
{{end}}
|
||||
</div>
|
||||
<section class="dh-card dh-hero">
|
||||
<a class="dh-poster" href="{{playURL .Slug .ID}}" aria-label="播放《{{.Title}}》">
|
||||
<img class="dh-poster-img lazy" src="/static/images/placeholder.png?v=2" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}" title="{{.Title}}" />
|
||||
{{if .IsFeatured}}<span class="dh-poster-badge">爆剧</span>{{else if .IsRecommend}}<span class="dh-poster-badge">黄果原创</span>{{else if .IsNew}}<span class="dh-poster-badge">上新</span>{{end}}
|
||||
{{if .TotalEpisode}}<span class="dh-poster-eps">{{if eq .UpdateStatus 2}}全{{.TotalEpisode}}集{{else}}更新至{{.TotalEpisode}}集{{end}}</span>{{end}}
|
||||
<span class="dh-poster-play" aria-hidden="true"><img src="/static/images/player.svg" alt="" /></span>
|
||||
</a>
|
||||
<div class="dh-info">
|
||||
<div class="dh-brand">
|
||||
<img class="dh-brand-avatar" src="/favicon.png?v=3" width="36" height="36" alt="" />
|
||||
<span>黄果短剧官方</span>
|
||||
</div>
|
||||
<h1 class="dh-title">{{.Title}}</h1>
|
||||
<div class="dh-meta">
|
||||
<span>{{updateStatusText .UpdateStatus}}</span>
|
||||
{{if .TotalEpisode}}<span>共 {{.TotalEpisode}} 集</span>{{end}}
|
||||
<span>{{browseText .CountBrowse}}</span>
|
||||
{{with playletDateText .OnlineAt .MediaCreatedAt .CreatedAt}}<span>{{.}} 上线</span>{{end}}
|
||||
</div>
|
||||
<h2 class="dh-intro-title">{{.Title}}剧情简介</h2>
|
||||
<p class="dh-intro" data-dh-intro>{{if .Desc}}{{.Desc}}{{else}}暂无简介{{end}}</p>
|
||||
<button class="dh-intro-toggle" type="button" data-dh-intro-toggle hidden>展开</button>
|
||||
{{$detailTags := namedTags .TagIDs .TagNames .TagSlugs}}
|
||||
{{if $detailTags}}
|
||||
<div class="dh-tags">
|
||||
{{range $detailTags}}
|
||||
{{if .URL}}<a class="dh-tag" href="{{.URL}}">{{.Name}}</a>{{else}}<span class="dh-tag">{{.Name}}</span>{{end}}
|
||||
{{end}}
|
||||
<h1 class="detail-title">{{.Title}}</h1>
|
||||
<div class="detail-meta">
|
||||
<span class="detail-meta-pc">
|
||||
<span>集数:{{if .TotalEpisode}}{{.TotalEpisode}}集{{else}}更新中{{end}}</span>
|
||||
<span>上线时间 : {{playletDateText .OnlineAt .MediaCreatedAt .CreatedAt}}</span>
|
||||
</span>
|
||||
<span class="detail-meta-h5">
|
||||
<span>{{if .TotalEpisode}}全{{.TotalEpisode}}集{{else}}短剧{{end}}</span>
|
||||
<span class="detail-meta-dot">·</span>
|
||||
<span>{{browseText .CountBrowse}}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-intro-block">
|
||||
<h2 class="detail-intro-title">简介</h2>
|
||||
<p class="detail-intro"><span class="detail-intro-prefix-pc">简介:</span>{{if .Desc}}{{.Desc}}{{else}}暂无简介{{end}}</p>
|
||||
{{end}}
|
||||
{{$themes := namedThemeTags .ThemeIDs .ThemeNames .ThemeSlugs}}
|
||||
{{if $themes}}
|
||||
<div class="dh-themes">
|
||||
<span class="dh-themes-label">所属专题</span>
|
||||
{{range $themes}}
|
||||
{{if .URL}}<a class="dh-theme" href="{{.URL}}">{{.Name}}</a>{{else}}<span class="dh-theme">{{.Name}}</span>{{end}}
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="detail-actions">
|
||||
<a class="detail-play-btn" href="{{playURL .Slug .ID}}"><img src="/static/images/player.svg" alt="" />立即播放</a>
|
||||
<div class="detail-action-group">
|
||||
<button class="detail-action" type="button" data-detail-share data-playlet-id="{{.ID}}">
|
||||
<span class="detail-action-icon">
|
||||
<img src="/static/images/share.svg" alt="分享" />
|
||||
</span>
|
||||
<span>分享</span>
|
||||
</button>
|
||||
<span class="detail-action-sep"></span>
|
||||
<a class="detail-action" href="/feedback/">
|
||||
<span class="detail-action-icon">
|
||||
<img src="/static/images/feedback.svg" alt="反馈" />
|
||||
</span>
|
||||
<span>反馈</span>
|
||||
</a>
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="dh-actions">
|
||||
<a class="dh-btn dh-btn--primary" href="{{playURL .Slug .ID}}"><img src="/static/images/player.svg" alt="" />立即播放</a>
|
||||
<button class="dh-btn" type="button" data-detail-share data-playlet-id="{{.ID}}"><img src="/static/images/share.svg" alt="" />分享</button>
|
||||
<a class="dh-btn" href="/feedback/"><img src="/static/images/feedback.svg" alt="" />反馈</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{{template "contentPromo" $}}
|
||||
|
||||
<section class="detail-episodes">
|
||||
<div class="detail-episodes-head">
|
||||
<h2 class="detail-section-label">剧集</h2>
|
||||
<div class="detail-episodes-status">
|
||||
<span>{{updateStatusText .UpdateStatus}}{{if .TotalEpisode}} 共{{.TotalEpisode}}集{{end}}</span>
|
||||
<img class="detail-episodes-status-icon" src="/static/images/arrow_right.svg" alt="查看选集" />
|
||||
<section class="dh-card dh-episodes" data-dh-episodes>
|
||||
<div class="dh-episodes-head">
|
||||
<div>
|
||||
<h2 class="dh-episodes-title">{{.Title}}选集</h2>
|
||||
<div class="dh-episodes-sub">{{if .TotalEpisode}}共 {{.TotalEpisode}} 集 · {{end}}{{updateStatusText .UpdateStatus}}</div>
|
||||
</div>
|
||||
<span class="dh-episodes-hint">点击集数直接播放</span>
|
||||
</div>
|
||||
{{with $.episodeRanges}}
|
||||
<div class="detail-episode-ranges">
|
||||
{{range $i, $r := .}}
|
||||
<button class="detail-episode-range{{if eq $i 0}} detail-episode-range--active{{end}}" type="button" data-range-start="{{$r.Start}}" data-range-end="{{$r.End}}">{{$r.Label}}</button>
|
||||
{{if gt (len $.episodeRanges) 1}}
|
||||
<div class="dh-ranges">
|
||||
{{range $i, $r := $.episodeRanges}}
|
||||
<button class="dh-range{{if eq $i 0}} is-active{{end}}" type="button" data-range-start="{{$r.Start}}" data-range-end="{{$r.End}}">{{$r.Label}}</button>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="detail-episode-list">
|
||||
<div class="dh-ep-grid">
|
||||
{{$playletID := .ID}}
|
||||
{{$playletSlug := .Slug}}
|
||||
{{range .PlayletChapterInfo}}
|
||||
{{if .AllowWatch}}
|
||||
<a class="detail-episode" href="{{chapterPlayURL $playletSlug $playletID .ID}}" data-ep="{{.CurrentEpisode}}">
|
||||
<span class="detail-episode-pc">第{{.CurrentEpisode}}集</span>
|
||||
</a>
|
||||
<a class="dh-ep" href="{{chapterPlayURL $playletSlug $playletID .ID}}" data-ep="{{.CurrentEpisode}}" aria-label="第{{.CurrentEpisode}}集">{{printf "%02d" .CurrentEpisode}}</a>
|
||||
{{else}}
|
||||
<a class="detail-episode detail-episode--locked" href="javascript:;" data-episode-locked data-ep="{{.CurrentEpisode}}" aria-label="第{{.CurrentEpisode}}集,下载APP观看">
|
||||
<span class="detail-episode-pc">第{{.CurrentEpisode}}集</span>
|
||||
<span class="detail-episode-lock" aria-hidden="true">APP</span>
|
||||
</a>
|
||||
<a class="dh-ep dh-ep--locked" href="javascript:;" data-episode-locked data-ep="{{.CurrentEpisode}}" aria-label="第{{.CurrentEpisode}}集,下载APP观看">{{printf "%02d" .CurrentEpisode}}<span class="dh-ep-lock" aria-hidden="true">APP</span></a>
|
||||
{{end}}
|
||||
{{else}}
|
||||
<div class="section-empty">暂无剧集</div>
|
||||
@@ -183,6 +172,6 @@
|
||||
</main>
|
||||
{{end}}
|
||||
{{template "footer" .}}
|
||||
<script src="/static/js/pages/detail.js?v=15"></script>
|
||||
<script src="/static/js/pages/detail.js?v=16"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
{{if .jsonLD}}
|
||||
<script type="application/ld+json">{{.jsonLD}}</script>
|
||||
{{end}}
|
||||
<link rel="stylesheet" href="/static/css/index.css?v=36">
|
||||
<link rel="stylesheet" href="/static/css/index.css?v=39">
|
||||
{{/* PC 需要 Swiper 样式;H5 延后按需注入,避免首屏下载与强制重排 */}}
|
||||
<link rel="stylesheet" href="/static/common/swiper-bundle.min.css" media="(min-width: 768px)">
|
||||
<link rel="preload" href="/static/common/swiper-bundle.min.js" as="script" media="(min-width: 768px)">
|
||||
@@ -73,7 +73,8 @@
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
{{if .announcements}}
|
||||
{{$cfg := .appConfig}}
|
||||
{{if or .announcements $cfg.ForeverURLAddr $cfg.NewURLAddr $cfg.NewURLAddr1}}
|
||||
<div class="home-announcement" role="note" aria-label="站内公告">
|
||||
<div class="home-announcement-label">
|
||||
<picture>
|
||||
@@ -83,8 +84,8 @@
|
||||
</div>
|
||||
<div class="home-announcement-content">
|
||||
<div class="home-announcement-marquee">
|
||||
<span class="home-announcement-copy">{{range $i, $announcement := .announcements}}{{if $i}}<span class="home-announcement-separator" aria-hidden="true"> · </span>{{end}}{{if $announcement.Title}}<span class="home-announcement-title">{{$announcement.Title}}</span>{{if $announcement.Content}}:{{end}}{{end}}{{$announcement.Content}}{{end}}</span>
|
||||
<span class="home-announcement-copy" aria-hidden="true">{{range $i, $announcement := .announcements}}{{if $i}}<span class="home-announcement-separator"> · </span>{{end}}{{if $announcement.Title}}<span class="home-announcement-title">{{$announcement.Title}}</span>{{if $announcement.Content}}:{{end}}{{end}}{{$announcement.Content}}{{end}}</span>
|
||||
<span class="home-announcement-copy">{{template "homeAnnouncementItems" .}}</span>
|
||||
<span class="home-announcement-copy" aria-hidden="true">{{template "homeAnnouncementItems" .}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -156,9 +157,6 @@
|
||||
<img src="/static/images/placeholder.png?v=2" class="poster-cover-img lazy" data-src="{{coverURL .Cover .Banner}}" width="160" height="214" decoding="async" alt="{{.Title}}" title="{{.Title}}" />
|
||||
{{template "posterCornerBadges" .}}
|
||||
{{template "posterLikeBadge" .}}
|
||||
{{with episodeLabel .TotalEpisode}}
|
||||
<div class="episode-badge"><div class="text-white-xs">{{.}}</div></div>
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="poster-card-body">
|
||||
<div class="poster-card-title">{{.Title}}</div>
|
||||
@@ -166,6 +164,7 @@
|
||||
<div class="poster-card-meta">
|
||||
{{template "posterCardTag" .}}
|
||||
<div class="flex-spacer"></div>
|
||||
{{with episodeLabel .TotalEpisode}}<div class="poster-card-episode">{{.}}</div>{{end}}
|
||||
<div class="poster-card-heat">{{formatHeat .HeatValue}}</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -212,3 +211,6 @@
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
{{/* 跑马灯内容:后台公告在前,随后是官方访问地址 */}}
|
||||
{{define "homeAnnouncementItems"}}{{$cfg := .appConfig}}{{$n := 0}}{{range .announcements}}{{if $n}}<span class="home-announcement-separator" aria-hidden="true"> · </span>{{end}}{{$n = 1}}{{if .Title}}<span class="home-announcement-title">{{.Title}}</span>{{if .Content}}:{{end}}{{end}}{{.Content}}{{end}}{{if $cfg.ForeverURLAddr}}{{if $n}}<span class="home-announcement-separator" aria-hidden="true"> · </span>{{end}}{{$n = 1}}<span class="home-announcement-title">海外永久地址</span>:<a class="home-announcement-link" href="{{$cfg.ForeverURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{$cfg.ForeverURLAddr}}</a>{{end}}{{if $cfg.NewURLAddr}}{{if $n}}<span class="home-announcement-separator" aria-hidden="true"> · </span>{{end}}{{$n = 1}}<span class="home-announcement-title">最新地址</span>:<a class="home-announcement-link" href="{{$cfg.NewURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{$cfg.NewURLAddr}}</a>{{end}}{{if $cfg.NewURLAddr1}}{{if $n}}<span class="home-announcement-separator" aria-hidden="true"> · </span>{{end}}{{$n = 1}}<span class="home-announcement-title">备用地址</span>:<a class="home-announcement-link" href="{{$cfg.NewURLAddr1}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{$cfg.NewURLAddr1}}</a>{{end}}<span class="home-announcement-separator" aria-hidden="true"> · </span>请收藏以上地址,防止迷路{{end}}
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<script type="application/ld+json">{{.jsonLD}}</script>
|
||||
{{end}}
|
||||
<link rel="stylesheet" href="/static/css/index.css?v=27">
|
||||
<link rel="stylesheet" href="/static/css/detail.css?v=30">
|
||||
<link rel="stylesheet" href="/static/css/detail.css?v=31">
|
||||
<link rel="stylesheet" href="/static/css/play.css?v=27">
|
||||
<link rel="stylesheet" href="/static/common/DPlayer.min.css">
|
||||
<script defer src="/static/common/hls.min.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user