diff --git a/app/static/css/detail.css b/app/static/css/detail.css index aa3c9a5..dd95c3e 100644 --- a/app/static/css/detail.css +++ b/app/static/css/detail.css @@ -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); diff --git a/app/static/css/detailHero.css b/app/static/css/detailHero.css new file mode 100644 index 0000000..34907b7 --- /dev/null +++ b/app/static/css/detailHero.css @@ -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; + } +} diff --git a/app/static/css/downloadAppFloat.css b/app/static/css/downloadAppFloat.css index aa7f484..dc61041 100644 --- a/app/static/css/downloadAppFloat.css +++ b/app/static/css/downloadAppFloat.css @@ -100,7 +100,6 @@ line-height: 20px; } - body[class].is-detail-page .download-fab, body[class].is-play-page .download-fab { display: none !important; } diff --git a/app/static/css/footer.css b/app/static/css/footer.css index 2f5f2f4..05e821e 100644 --- a/app/static/css/footer.css +++ b/app/static/css/footer.css @@ -1120,3 +1120,38 @@ a.footer-contact-line:focus-visible .footer-contact-url { .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; + } +} diff --git a/app/static/css/header.css b/app/static/css/header.css index 2baafa3..993b11d 100644 --- a/app/static/css/header.css +++ b/app/static/css/header.css @@ -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; + } +} diff --git a/app/static/css/index.css b/app/static/css/index.css index fd5eeb2..5300aa2 100644 --- a/app/static/css/index.css +++ b/app/static/css/index.css @@ -3484,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; +} diff --git a/app/static/images/header-download.svg b/app/static/images/header-download.svg new file mode 100644 index 0000000..0fc8ac2 --- /dev/null +++ b/app/static/images/header-download.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/static/js/pages/detail.js b/app/static/js/pages/detail.js index 9965ab2..8663d7f 100644 --- a/app/static/js/pages/detail.js +++ b/app/static/js/pages/detail.js @@ -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; diff --git a/app/static/js/pages/header.js b/app/static/js/pages/header.js index 33e0037..4ec2c8f 100644 --- a/app/static/js/pages/header.js +++ b/app/static/js/pages/header.js @@ -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; diff --git a/app/templates/base/downloadAppFloat.html b/app/templates/base/downloadAppFloat.html index 6793abf..737def0 100644 --- a/app/templates/base/downloadAppFloat.html +++ b/app/templates/base/downloadAppFloat.html @@ -1,5 +1,5 @@ {{define "downloadAppFloat"}} {{if .appConfig.AppAddr}} - + +