This commit is contained in:
ChuXun
2025-10-19 20:55:27 +08:00
parent e879ccefb3
commit 53f9554f38
99 changed files with 22308 additions and 2 deletions

411
css/install.css Normal file
View File

@@ -0,0 +1,411 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
}
:root {
--primary: #4361ee;
--primary-light: #4895ef;
--secondary: #06d6a0;
--danger: #ef476f;
--light: #f8f9fa;
--dark: #212529;
--gray: #6c757d;
--border-radius: 16px;
--shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
--transition: all 0.3s ease;
/* 新增深色模式变量 */
--bg-gradient-start: #f0f4ff;
--bg-gradient-end: #e6f7ff;
--card-bg: white;
--card-header-bg: linear-gradient(to right, #f8f9fa, #e9ecef);
--text-color: #212529;
--subtitle-color: #6c757d;
--content-bg: #f8f9fa;
--agreement-bg: #f8f9fa;
--agreement-border: rgba(0, 0, 0, 0.1);
--agreement-color: #6c757d;
}
body {
background: linear-gradient(
135deg,
var(--bg-gradient-start) 0%,
var(--bg-gradient-end) 100%
);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
color: var(--text-color);
line-height: 1.6;
}
.container {
width: 100%;
max-width: 800px;
position: relative;
}
/* 语言切换按钮 */
.lang-switch {
position: absolute;
top: 20px;
right: 20px;
z-index: 10;
background: var(--card-bg);
border-radius: 50px;
padding: 10px 18px;
display: flex;
align-items: center;
gap: 10px;
box-shadow: var(--shadow);
cursor: pointer;
transition: var(--transition);
font-weight: 600;
font-size: 1rem;
}
.lang-switch:hover {
transform: translateY(-3px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
background: var(--primary);
color: white;
}
.lang-emoji {
font-size: 1.3rem;
}
/* 头部样式 */
.header {
text-align: center;
margin-bottom: 30px;
position: relative;
padding-top: 20px;
}
.logo-container {
display: flex;
justify-content: center;
margin-bottom: 20px;
}
.logo {
width: 120px;
height: 120px;
background: linear-gradient(135deg, var(--primary), var(--primary-light));
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: var(--shadow);
animation: float 3s ease-in-out infinite;
font-size: 3.5rem;
}
h1 {
font-size: 2.5rem;
font-weight: 800;
margin-bottom: 10px;
background: linear-gradient(to right, var(--primary), var(--primary-light));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.subtitle {
font-size: 1.2rem;
color: var(--subtitle-color);
font-weight: 500;
max-width: 600px;
margin: 0 auto;
}
/* 卡片样式 */
.card {
background: var(--card-bg);
border-radius: var(--border-radius);
box-shadow: var(--shadow);
overflow: hidden;
margin-bottom: 30px;
transform: translateY(0);
transition: var(--transition);
}
.card:hover {
transform: translateY(-5px);
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
}
.card-header {
padding: 20px;
background: var(--card-header-bg);
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}
.card-title {
font-size: 1.5rem;
font-weight: 600;
color: var(--primary);
display: flex;
align-items: center;
gap: 10px;
}
.card-title .emoji {
font-size: 1.5rem;
}
.card-body {
padding: 25px;
}
.policy-section {
margin-top: 30px;
}
.section-title {
font-size: 1.25rem;
font-weight: 600;
margin-bottom: 15px;
color: var(--primary);
display: flex;
align-items: center;
gap: 10px;
}
.section-title .emoji {
font-size: 1.3rem;
}
.content-box {
background-color: var(--content-bg);
border-radius: 12px;
padding: 20px;
margin-top: 10px;
border: 1px solid rgba(0, 0, 0, 0.05);
line-height: 1.7;
display: flex;
justify-content: center;
}
.content-box a {
color: var(--primary);
font-weight: 600;
text-decoration: none;
transition: var(--transition);
position: relative;
font-size: 1.1rem;
padding: 10px 20px;
border-radius: 30px;
background-color: rgba(67, 97, 238, 0.1);
display: flex;
align-items: center;
gap: 8px;
}
.content-box a:hover {
background-color: rgba(67, 97, 238, 0.2);
transform: translateY(-2px);
box-shadow: 0 4px 10px rgba(67, 97, 238, 0.2);
}
.content-box a .emoji {
font-size: 1.2rem;
}
.content-box p {
font-size: 1rem;
}
.agreement {
text-align: center;
padding: 20px;
background-color: var(--agreement-bg);
border-radius: var(--border-radius);
margin: 25px 0;
font-style: italic;
color: var(--agreement-color);
border: 1px dashed var(--agreement-border);
display: flex;
flex-direction: column;
gap: 10px;
}
.agreement .emoji {
font-size: 1.5rem;
}
.buttons {
display: flex;
gap: 20px;
margin-top: 30px;
}
.btn {
flex: 1;
padding: 16px 20px;
border: none;
border-radius: 50px;
font-size: 1.1rem;
font-weight: 600;
cursor: pointer;
transition: var(--transition);
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
}
.btn-primary {
background: linear-gradient(to right, var(--primary), var(--primary-light));
color: white;
box-shadow: 0 4px 15px rgba(67, 97, 238, 0.3);
}
.btn-primary:hover {
transform: translateY(-3px);
box-shadow: 0 8px 20px rgba(67, 97, 238, 0.4);
background: linear-gradient(to right, var(--primary-light), var(--primary));
}
.btn-outline {
background: transparent;
color: var(--danger);
border: 2px solid var(--danger);
}
.btn-outline:hover {
background-color: rgba(239, 71, 111, 0.05);
transform: translateY(-3px);
}
/* 多语言内容控制 */
.lang-zh,
.lang-en {
display: none;
}
.lang-zh.active,
.lang-en.active {
display: block;
}
/* 动画效果 */
@keyframes float {
0% {
transform: translateY(0px);
}
50% {
transform: translateY(-10px);
}
100% {
transform: translateY(0px);
}
}
.fade-in {
animation: fadeIn 0.5s ease-in-out;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* 响应式设计 */
@media (max-width: 768px) {
h1 {
font-size: 2rem;
}
.buttons {
flex-direction: column;
gap: 12px;
}
.card-body {
padding: 20px;
}
.subtitle {
font-size: 1.1rem;
}
}
@media (max-width: 480px) {
h1 {
font-size: 1.8rem;
}
.subtitle {
font-size: 1rem;
}
.logo {
width: 90px;
height: 90px;
font-size: 2.8rem;
}
.lang-switch {
top: 10px;
right: 10px;
padding: 8px 14px;
font-size: 0.9rem;
}
.content-box a {
font-size: 0.95rem;
padding: 8px 15px;
}
}
/* 深色模式支持 */
@media (prefers-color-scheme: dark) {
:root {
--bg-gradient-start: #0f172a;
--bg-gradient-end: #1e293b;
--card-bg: #1e293b;
--card-header-bg: linear-gradient(to right, #334155, #1e293b);
--text-color: #e2e8f0;
--subtitle-color: #94a3b8;
--content-bg: #334155;
--agreement-bg: #334155;
--agreement-border: rgba(255, 255, 255, 0.1);
--agreement-color: #cbd5e1;
--shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
}
.lang-switch {
background: #334155;
color: #e2e8f0;
}
.content-box a {
background-color: rgba(67, 97, 238, 0.15);
color: #93c5fd;
}
.content-box a:hover {
background-color: rgba(67, 97, 238, 0.25);
box-shadow: 0 4px 10px rgba(67, 97, 238, 0.2);
}
.btn-outline:hover {
background-color: rgba(239, 71, 111, 0.15);
}
}

16
css/mobile.css Normal file
View File

@@ -0,0 +1,16 @@
.popupBody {
width: 100%;
}
.wrapper.options {
margin-right: 10px;
}
.m3u8_wrapper #mergeTs {
font-size: 2rem;
}
.newDownload {
width: 100%;
padding: 0 2rem;
}

602
css/options.css Normal file
View File

@@ -0,0 +1,602 @@
body {
background: var(--background-color);
font-size: 13px;
font-family: "Microsoft YaHei", "Helvetica", "Arial", sans-serif;
margin: 0;
}
.wrapper {
margin: 0 auto;
width: 45rem;
}
.error {
color: var(--text-error-color);
}
h1 {
font-size: 1.125em;
font-weight: normal;
margin: 0;
}
h2 {
font-size: 1.125em;
font-weight: normal;
margin: 0;
}
p {
margin: auto;
}
.optionBox {
background: var(--optionBox-color);
border-radius: 4px;
box-shadow: 0 1px 2px 0 rgb(60 64 67 / 30%), 0 1px 3px 1px rgb(60 64 67 / 15%);
padding: 0.75em 1.25em;
margin-top: 5px;
}
table {
width: 100%;
text-align: center;
}
input,
textarea {
padding: 5px 5px;
}
input.ext {
width: 100px;
text-align: center;
}
input.type {
width: 200px;
text-align: center;
}
input.size {
width: 100px;
text-align: center;
}
input.regexType {
width: 20px;
text-align: center;
}
input.regexExt {
width: 35px;
text-align: center;
}
input.regex {
width: 320px;
text-align: center;
}
/* input#OtherAutoClear {
margin-left: 250px;
width: 45px;
} */
/* 滑动开关 组件 */
.switch {
height: 22px;
width: 50px;
margin: auto;
}
.switch .switchRound {
position: relative;
display: block;
width: 100%;
height: 100%;
background-color: var(--switch-off-color);
transition: all 0.2s ease-in-out;
}
.switch .switchRoundBtn {
display: block;
position: absolute;
top: 2px;
left: 3px;
bottom: 3px;
width: 18px;
height: 18px;
background-color: var(--switch-round-color);
transition: all 0.2s ease-in-out;
}
.switch .switchInput {
display: none;
}
.switch .switchInput:checked + .switchRound {
background-color: var(--switch-on-color);
}
.switch .switchInput:checked + .switchRound > .switchRoundBtn {
left: 29px;
}
.switch .switchRadius {
border-radius: 50px;
}
/* 滑动开关 组件 END */
.list {
padding-left: 10px;
padding-top: 5px;
}
.item {
align-items: center;
display: flex;
min-height: 30px;
border-bottom: solid 1px rgba(0, 0, 0, 0.06);
flex-wrap: wrap;
align-items: flex-end;
align-content: space-around;
}
.item .switch {
margin-right: 50px;
}
.item .switchSelect {
margin-right: 85px;
}
.optionsTitle {
margin-top: 20px;
}
.RemoveButton {
fill: var(--text-color);
height: 20px;
cursor: pointer;
}
button,
.button,
.button2 {
padding: calc(0.5em - 1px) 1em;
margin: 5px 5px 5px 5px;
/* font-size: 13px; */
}
.flex-end {
display: flex;
justify-content: flex-end;
}
.explain {
color: #6c6c6c;
}
#typeList,
#extList {
margin-top: 10px;
}
.loose .item {
margin-bottom: 5px;
min-height: 35px;
}
#m3u8_url,
#mpd_url,
.test_url {
overflow: hidden;
display: block;
text-overflow: ellipsis;
word-break: break-all;
color: var(--text2-color);
}
.block {
border-bottom: solid 1px rgba(0, 0, 0, 0.06);
padding-bottom: 5px;
margin-bottom: 5px;
}
.m3u8_wrapper .block {
border-bottom: 0px;
}
.wrapper1024 {
margin: 0 auto;
width: 1024px;
}
.wrapper1080 {
margin: 0 auto;
width: 1080px;
}
textarea {
font-size: 12px;
font-family: "Microsoft YaHei", "Helvetica", "Arial", sans-serif;
}
#textarea {
text-align: center;
}
.m3u8_wrapper video {
max-height: 80vh;
max-width: 100%;
}
#media_file {
word-break: break-all;
}
#media_file,
#jsonText,
#m3u8Text {
height: 55vh;
}
/* #media_file {
font-size: 12px;
font-family: "Microsoft YaHei", "Helvetica", "Arial", sans-serif;
height: 700px;
overflow-y: auto;
border: solid 1.5px rgb(0 0 0 / 50%);
word-break: break-all;
} */
#formatStr {
width: 145px;
}
#tips input {
color: var(--text2-color);
}
.keyUrl {
width: 1034px;
}
.fullInput {
/* width: 975px; */
width: 100%;
margin: 5px 0 5px 0;
}
.select {
appearance: none;
background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIxMiIgZmlsbD0iIzVGNjM2OCI+PHBhdGggZD0iTTAgMGgyNEwxMiAxMnoiLz48L3N2Zz4=)
calc(100% - 8px) center no-repeat;
/* background-color: rgb(241, 243, 244); */
background-color: var(--background-color-two);
background-size: 10px;
border: none;
border-radius: 4px;
cursor: pointer;
padding: 5px 10px;
}
.select {
width: 8rem;
}
.m3u8Key {
width: 300px;
}
#PlayerTemplate {
width: 200px;
}
#errorTsList p {
color: red;
word-break: break-all;
}
.progress-bar {
height: 15px;
background-color: rgb(189, 193, 198);
border-radius: 3px;
margin: 3px;
margin-bottom: 10px;
}
.progress {
width: 0px;
height: 100%;
background-color: var(--text2-color);
border-radius: 3px;
}
#fileSize,
#fileDuration {
margin-left: 20px;
}
.not-allowed {
cursor: not-allowed;
background-color: #ccc;
color: #fff;
}
.not-allowed:hover {
background: #ccc;
}
.not-allowed:active {
background: #ccc;
}
#showM3u8Help {
margin-left: 10px;
margin-top: 1px;
margin-right: 0px;
padding: 2px;
}
.m3u8checkbox {
display: flex;
cursor: pointer;
flex-direction: column;
user-select: none;
margin: 0 5px 0 5px;
}
.merge {
display: flex;
justify-content: flex-start;
margin-top: 5px;
align-items: center;
}
.customKey input {
margin-right: 5px;
}
/* .wrapper .button {
margin-top: 5px;
} */
.rangeDown {
display: flex;
flex-direction: column;
align-items: center;
margin-right: 10px;
}
.rangeDown .merge {
margin-top: 0;
}
#rangeStart,
#rangeEnd {
width: 55px;
/* text-align:center;
vertical-align:middle; */
margin-left: 2px;
margin-right: 2px;
padding-top: 3px;
padding-bottom: 3px;
}
#loading a {
word-break: break-all;
}
#next_m3u8 a {
word-break: break-all;
}
.key {
align-items: flex-end;
}
.key div {
display: flex;
flex-direction: column;
margin-right: 10px;
}
.key input {
width: 265px;
}
.method input {
width: 100px;
}
.offset {
width: 256px;
}
.videoInfo div {
margin-right: 5px;
}
.flex {
display: flex;
}
.m3u8dlArg {
margin-top: 10px;
height: 100px;
word-break: break-all;
width: 100%;
}
.m3u8DL {
margin-right: 70px !important;
}
/* .m3u8DL #m3u8dl{
width: 8rem;
} */
.break-all {
word-break: break-all;
}
/* MPD*/
.dash .select {
padding-right: 20px;
margin-bottom: 10px;
}
/* JSON格式化 */
.json-document {
margin-top: 0px;
}
ul.json-dict,
ol.json-array {
list-style-type: none;
margin: 0 0 0 1px;
border-left: 1px dotted #ccc;
padding-left: 2em;
}
.json-string {
color: #0b7500;
word-break: break-all;
white-space: break-spaces;
}
.json-literal {
color: #1a01cc;
font-weight: bold;
}
a.json-toggle {
position: relative;
color: inherit;
text-decoration: none;
}
a.json-toggle:focus {
outline: none;
}
a.json-toggle:before {
font-size: 1.1em;
color: #c0c0c0;
content: "\25BC";
position: absolute;
display: inline-block;
width: 1em;
text-align: center;
line-height: 1em;
left: -1.2em;
}
a.json-toggle:hover:before {
color: #aaa;
}
a.json-toggle.collapsed:before {
transform: rotate(-90deg);
}
a.json-placeholder {
color: #aaa;
padding: 0 1em;
text-decoration: none;
}
a.json-placeholder:hover {
text-decoration: underline;
}
#downList a {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: block;
color: var(--text2-color);
}
#downList {
overflow: scroll;
height: 60vh;
text-align: left;
display: none;
width: 100%;
border: solid 1px var(--text-color);
}
.width3rem {
width: 3rem;
}
.popupAttr {
margin-left: 0.5rem;
}
.progress-container {
display: flex;
align-items: center;
gap: 10px;
}
.progress-wrapper {
flex: 1;
}
.newDownload .downItem {
margin-bottom: 1rem;
}
.newDownload .downItem .progress-bar {
margin-bottom: 0;
height: 20px;
}
.newDownload .downItem button {
margin: 0;
}
.newDownload .downItem .progress {
color: var(--background-color-two);
text-align: center;
transition: width 0.2s;
}
/** 导航条 **/
.sidebar {
position: fixed;
top: 0;
left: 0;
width: 10rem;
height: 100%;
padding: 10px;
background-color: var(--background-color-two);
box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);
overflow-y: auto;
text-align: center;
margin-right: 0;
}
.sidebar ul {
list-style-type: none;
padding: 0;
}
.sidebar li {
margin: 10px 0;
}
.sidebar a {
text-decoration: none;
color: var(--text-color);
display: block;
padding: 5px;
border-radius: 4px;
}
.sidebar a:hover {
background-color: var(--button-hover-color);
}
.item .send2localType {
margin-right: 196px;
}
.item .send2localType select {
width: 15rem;
}

267
css/popup.css Normal file
View File

@@ -0,0 +1,267 @@
a {
text-decoration: none;
word-break: break-all;
}
a:hover {
text-decoration: underline;
}
body {
font-family: arial, sans-serif;
font-size: 0.8rem;
width: 40rem;
overflow-x: hidden;
background: var(--background-color);
margin: 0;
}
.fixFirefoxRight {
margin-right: 5px;
}
.panel {
border: 1px solid #ddd0;
margin-bottom: 1px;
}
.panel-heading {
padding: 5px 5px 5px 5px;
background-color: var(--background-color-two);
cursor: pointer;
display: flex;
flex-direction: row;
align-items: center;
}
.panel-heading .name {
flex: auto;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
margin-right: 0.2rem;
}
.panel .url,
.panel .confirm {
padding: 5px;
}
.icon,
.favicon {
transition: all 0.1s;
width: 1.5rem;
height: 1.5rem;
cursor: pointer;
}
.faviconFlag {
display: none;
}
.icon:hover {
transform: scale(1.1);
}
.icon:active {
transform: scale(0.9);
}
.icon.mqtt-sending {
opacity: 0.5;
cursor: not-allowed;
}
.icon.mqtt-sending:hover {
transform: none;
}
.panel-heading .icon {
padding-left: 2px;
}
.favicon {
padding-right: 2px;
}
.panel-heading .size {
float: right;
font-weight: bold;
}
#Tips,
#TipsFixed {
left: 0;
right: 0;
text-align: center;
z-index: 9999;
pointer-events: none;
color: var(--text2-color);
font-weight: bold;
border: 1px solid #cdcdcd12;
border-radius: 2px;
background: var(--background-color-two);
padding: 0 10px;
margin-bottom: 1px;
}
#TipsFixed {
position: fixed;
display: none;
}
#preview {
max-height: 300px;
max-width: 100%;
text-align: center;
}
button,
.button2 {
padding: 3px 3px 3px 3px;
/* font-size: 0.9rem; */
}
.Tabs {
display: flex;
}
.TabButton {
text-align: center;
border: solid 1px #c7c7c700;
color: var(--text2-color);
border-radius: 5px 5px 0 0;
cursor: pointer;
width: 50%;
/* display: flex; */
padding: 3px;
margin: 1px 2px 0 2px;
flex-direction: row;
align-items: baseline;
justify-content: center;
user-select: none;
}
.flex {
display: flex;
}
.TabButton.Active {
background-color: var(--background-color-two);
border-bottom-color: transparent;
font-weight: bold;
}
.TabButton.Active div {
font-weight: bold;
}
.DownCheck {
margin: 0 2px 0 0;
width: 1.2rem;
height: 1.2rem;
flex: 0 0 auto;
}
.TabShow {
display: block !important;
}
#down,
.more {
display: flex;
flex-wrap: wrap;
position: fixed;
width: 100%;
z-index: 999;
background-color: var(--background-color-opacity);
}
#down {
bottom: 0;
justify-content: space-evenly;
}
.more {
display: none;
bottom: 26px;
justify-content: flex-start;
padding-bottom: 2px;
padding-top: 2px;
z-index: 9999;
}
.more button {
margin-left: 0.1rem;
font-size: 12px;
}
#filter {
flex-wrap: wrap;
}
#filter #regular button {
margin-left: 0px;
}
#filter #regular input {
width: 98%;
}
#filter .regular {
margin-left: 5px;
}
#filter #ext {
display: flex;
color: var(--text-color);
}
#filter div {
margin-left: 5px;
}
.flexFilter {
display: flex;
flex-wrap: wrap;
align-items: center;
}
.container {
margin-bottom: 30px;
}
#screenshots {
max-width: 100%;
max-height: 260px;
cursor: pointer;
margin: auto;
}
.flex-end {
justify-content: flex-end;
}
#otherOptions {
margin: 5px;
}
#PlayControl {
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: space-evenly;
}
#PlayControl .button2,
#PlayControl .button {
margin-left: 2px;
}
#PlayControl #playbackRate {
width: 3em;
height: 20px;
}
#otherOptions select {
margin-top: 2px;
margin-bottom: 2px;
width: 100%;
}
#PlayControl .loop {
margin: 0 5px 0 5px;
}
label {
cursor: pointer;
user-select: none;
}
#PlayControl .volume {
width: 100px;
}
.flexColumn {
display: flex;
flex-direction: column;
align-items: center;
}
.flexRow {
display: flex;
flex-direction: row;
align-items: center;
}
.nowrap {
word-break: keep-all;
}
.otherScript .button2,
.otherFeat .button2 {
width: 100%;
margin-right: 10px;
text-align: center;
}
.otherTips {
text-align: center;
color: var(--text2-color);
font-weight: bold;
}
.moreButton {
display: flex;
}
.moreButton div {
margin-right: 3px;
}
.panel .confirm {
text-align: center;
}

241
css/preview.css Normal file
View File

@@ -0,0 +1,241 @@
/* 基础样式 */
body {
margin: 0;
padding: 0;
height: 100vh;
user-select: none;
}
/* .container {
padding: 10px;
margin: 0 auto;
} */
/* 筛选区域 */
.filters {
display: grid;
gap: 5px;
/* margin-bottom: 10px; */
background: var(--background-color-two);
padding: 10px;
border-radius: 8px;
/* position: sticky; */
/* top: 0; */
/* z-index: 2; */
}
.filter-row {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.sort-options {
display: flex;
gap: 15px;
align-items: center;
}
.sort-group,
.sort-order {
display: flex;
gap: 8px;
}
#regular {
width: 512px;
}
input[type="radio"] {
vertical-align: bottom;
}
input[type="checkbox"] {
vertical-align: middle;
}
/* 文件列表 */
.file-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 10px;
padding: 10px;
}
.file-item {
display: flex;
flex-direction: column;
min-height: 150px;
padding: 8px;
border: 3px solid transparent;
border-radius: 8px;
cursor: pointer;
box-shadow: 0 0 3px var(--button2-color);
max-height: 233px;
transition: all 0.2s;
}
.file-item:hover {
box-shadow: 0 0 10px var(--button2-color);
}
.file-item.selected {
border-color: var(--button2-color);
background-color: var(--button-hover-color);
/* box-shadow: 0 0 8px var(--button2-color); */
}
.file-name {
font-weight: bold;
color: var(--text2-color);
word-break: break-all;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
/* 预览容器 */
.preview-container {
margin: auto 0;
text-align: center;
}
.preview-container .icon {
/* height: 150px; */
max-height: 150px;
max-width: 233px;
}
/* .preview-image {
max-width: 100%;
max-height: 200px;
object-fit: contain;
} */
.video-preview {
width: 100%;
max-height: 150px;
}
.video-preview video {
max-width: 100%;
max-height: 100%;
}
/* 底部信息栏 */
.bottom-row {
/* margin-top: auto; */
display: flex;
justify-content: space-between;
align-items: center;
gap: 2px;
}
.file-info {
margin: 0 auto;
flex-shrink: 0;
}
/* 操作图标 */
.actions {
display: flex;
gap: 2px;
justify-content: center;
margin-bottom: -5px;
}
.actions .icon {
width: 23px;
transition: all 0.1s;
opacity: 0.5;
}
.actions .icon:hover {
/* transform: scale(1.1); */
opacity: 1;
}
.actions .icon:active {
transform: scale(0.9);
}
/* 全屏预览 */
.play-container,
.image-container {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background: rgba(0, 0, 0, 0.8);
display: flex;
justify-content: center;
align-items: center;
z-index: 4;
}
.play-container.hide,
.image-container.hide,
.video-preview.hide {
display: none;
}
#video-player,
#image-player {
max-width: 90vw;
max-height: 90vh;
width: auto;
height: auto;
object-fit: contain;
}
/* 框选 */
#selection-box {
position: absolute;
border: 1px solid var(--button2-color);
background-color: var(--button-active-color);
pointer-events: none;
z-index: 3;
display: none;
}
/* 提示框 */
.alert-box {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: rgba(0, 0, 0, 0.8);
color: white;
padding: 20px 40px;
border-radius: 8px;
opacity: 0;
visibility: hidden;
transition: all 0.3s ease;
z-index: 1000;
}
.alert-box.active {
opacity: 1;
visibility: visible;
}
/* 分页组件样式 */
.pagination {
display: flex;
justify-content: center;
align-items: center;
gap: 8px;
/* margin-top: 20px; */
padding: 15px;
background: var(--background-color-two);
border-radius: 8px;
}
.pagination.hide {
display: none;
}
.page-numbers {
display: flex;
gap: 5px;
flex-wrap: wrap;
}

211
css/public.css Normal file
View File

@@ -0,0 +1,211 @@
:root {
/* 两个背景色 两个文字以及链接文字配色 */
--background-color: #fff;
--background-color-opacity: #ffffffea;
--background-color-two: #f5f5f5;
--text-color: #000;
--text-error-color: #ff0000;
--text2-color: rgb(26, 115, 232);
--link-color: #3079ed;
/* 设置页面 设置box 背景色 */
--optionBox-color: var(--background-color);
/* 两个按钮 配色 边框 */
--button-color: #fff;
--button-text-color: rgb(26, 115, 232);
--button-border: solid 1px #c7c7c780;
--button-hover-color: rgb(66 133 244 / 4%);
--button-active-color: rgb(66 133 244 / 10%);
--button2-color: rgb(26, 115, 232);
--button2-text-color: #fff;
--button2-border: solid 1px #c7c7c780;
--button2-hover-color: rgb(26 115 232 / 90%);
--button2-active-color: rgb(26 115 232 / 50%);
/* 滚动条配色 */
--scrollbar-track-color: #f5f5f500;
--scrollbar-thumb-color: #1a73e8;
/* 设置页面 滑动开关配色 */
--switch-off-color: rgb(189, 193, 198);
--switch-on-color: rgb(26, 115, 232);
--switch-round-color: #fff;
/* input textarea select 边框配色 */
--input-border: solid 1px #000;
}
html {
color: var(--text-color);
background: var(--background-color);
scrollbar-width: thin;
}
input,
textarea,
select {
color: var(--text-color);
background: var(--background-color);
scrollbar-width: thin;
border: var(--input-border);
}
a,
a:link,
a:visited {
color: var(--link-color);
}
button,
.button,
.button2 {
border-radius: 4px;
cursor: pointer;
margin: 0 0 3px 0;
user-select: none;
}
button,
.button {
background: var(--button-color);
border: var(--button-border);
color: var(--button-text-color);
}
button:hover,
.button:hover {
background: var(--button-hover-color);
}
button:active,
.button:active {
background: var(--button-active-color);
}
.button2 {
background: var(--button2-color);
border: var(--button2-border);
color: var(--button2-text-color);
}
.button2:hover {
background: var(--button2-hover-color);
}
.button2:active {
background: var(--button2-active-color);
}
button:disabled,
.button:disabled,
.button2:disabled,
.disabled {
background-color: #ccc;
color: #666;
cursor: not-allowed;
opacity: 0.6;
}
.bold {
font-weight: bold;
}
.hide {
display: none;
}
.textColor {
color: var(--text2-color);
}
.width100 {
width: 100%;
}
.height100 {
height: 100%;
}
.line {
border-top: solid 1px rgb(0 0 0 / 50%);
margin: 10px 0 10px 0;
}
.no-drop {
background-color: #ccc !important;
cursor: no-drop;
color: var(--button2-text-color);
}
.icon {
-webkit-user-drag: none;
}
/*定义整个滚动条高宽及背景:高宽分别对应横竖滚动条的尺寸*/
::-webkit-scrollbar {
width: 5px;
}
/*定义滚动条轨道:内阴影+圆角*/
::-webkit-scrollbar-track {
background-color: var(--scrollbar-track-color);
}
/*定义滑块:内阴影+圆角*/
::-webkit-scrollbar-thumb {
border-radius: 10px;
background-color: var(--scrollbar-thumb-color);
}
@media (prefers-color-scheme: dark) {
:root {
--background-color: #0f172a;
--background-color-opacity: #0f172aea;
--background-color-two: #1e293b;
--text-color: #fff;
--text-error-color: #ff0000;
--text2-color: #fff;
--link-color: #94a3b8;
--optionBox-color: var(--background-color-two);
--button-color: #161b22;
--button-border: solid 1px #c7c7c780;
--button-text-color: #fff;
--button-hover-color: rgb(66 133 244 / 4%);
--button-active-color: rgb(66 133 244 / 10%);
--button2-color: rgb(26 115 232 / 50%);
--button2-border: solid 1px #c7c7c780;
--button2-text-color: #fff;
--button2-hover-color: rgb(26 115 232 / 90%);
--button2-active-color: rgb(26 115 232 / 50%);
--scrollbar-track-color: #f5f5f500;
--scrollbar-thumb-color: #1a73e8;
--switch-off-color: rgb(189, 193, 198);
--switch-on-color: rgb(26 115 232 / 50%);
--switch-round-color: #fff;
--input-border: solid 1px #ffffffb6;
}
img.regex {
content: url(../img/regex-dark.png);
}
img.copy {
content: url(../img/copy-dark.png);
}
img.parsing {
content: url(../img/parsing-dark.png);
}
img.play {
content: url(../img/play-dark.png);
}
img.download {
content: url(../img/download-dark.svg);
}
img.qrcode {
content: url(../img/qrcode-dark.png);
}
img.cat-down {
content: url(../img/cat-down-dark.png);
}
img.aria2 {
content: url(../img/aria2-dark.png);
}
img.invoke {
content: url(../img/invoke-dark.svg);
}
img.send {
content: url(../img/send-dark.svg);
}
img.delete {
content: url(../img/delete-dark.svg);
}
img.mqtt {
content: url(../img/mqtt-dark.svg);
}
img.send2ffmpeg {
content: url(../img/send2ffmpeg-dark.svg);
}
}