diff --git a/css/style.css b/css/style.css index 5d9acbd..d891700 100644 --- a/css/style.css +++ b/css/style.css @@ -78,7 +78,7 @@ body { position: fixed; top: 23px; left: 20px; - z-index: 1111; + z-index: 11; } .toggle2-input { @@ -432,4 +432,813 @@ body { .same-as-selected:hover { background-color: #0069d9 !important; +} +@media (-webkit-min-device-pixel-ratio: 1.5), + (min-resolution: 144dpi) { /* 1.5×96=144 */ + #root-container { + transform: scale(0.9); + transform-origin: 0 0; /* 左上角为缩放基点 */ + width: calc(100% / 0.9); /* 补偿缩放后的宽度 */ + height: calc(100vh / 0.9); /* 补偿缩放后的高度 */ + overflow: hidden; /* 隐藏溢出内容 */ + /* position: fixed; */ + /* top: 0px; */ + } +} +.topimg{ + width: 100%; + height: 250px; + box-sizing: border-box; + border: 2px solid #142c64; + border-image: url(../img/border.png) 51 38 21 132; + border-width: 2.125rem 1.583rem 0.875rem 5.5rem; + position: relative; + margin-bottom: 0.833rem; +} +.inner{ + position: absolute; + top: -2.125rem; + right: -1.583rem; + bottom: -0.875rem; + left: -5.5rem; + padding: 1rem 1.5rem; + display: flex; + align-items: center; +} +.topimg img{ + height: 100%; + margin: auto; + width: 100%; + object-fit: cover; + object-position: center; +} +.carmsg p{ + line-height: 35px; + background: linear-gradient(to bottom, #fff, rgb(6 244 255)); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} +.cartitle{ + padding-top: 20px; + height:85px; + text-align: center; + font-size: 17px; + font-weight: bold; + background: linear-gradient(to bottom, #fff, rgb(6 244 255)); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + + + +.toggle-btn { + display: inline-block; + margin-top: 10px; + padding: 8px 15px; + color: white; + cursor: pointer; + font-size: 14px; + transition: all 0.3s; + display: flex; + justify-content: center; +} + +.toggle-btn:hover { + color: #3367d6; +} + +.toggle-btn .more-text { + display: inline; +} + +.toggle-btn .less-text { + display: none; +} + +.toggle-btn.expanded .more-text { + display: none; +} + +.toggle-btn.expanded .less-text { + display: inline; +} +.carmsg { + overflow: hidden; + transition: all 0.4s ease; +} + +.carmsg.collapsed { + max-height: 100px; /* 收起时显示的高度 */ + -webkit-mask-image: linear-gradient(to bottom, black 50%, transparent 100%); + mask-image: linear-gradient(to bottom, black 50%, transparent 100%); +} + +.carmsg.expanded { + max-height: 2000px; /* 足够大的值容纳所有内容 */ +} + +/* Status 按钮样式 */ +.statusbtn { + display: flex; + justify-content: space-between; + gap: 5px; + padding: 10px 5px; +} + +.statusbtn > div { + flex: 1; + display: flex; + justify-content: center; + align-items: center; + font-size: 12px; + padding: 5px 5px; + background: linear-gradient(to bottom, #1487ea, #0a43bc); + color: #fff; + border: none; + border-radius: 4px; + cursor: pointer; + text-align: center; + transition: all 0.3s ease; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +.statusbtn > div:hover { + background: linear-gradient(to bottom, #1a3a7d, #142c64); + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0,0,0,0.3); +} + +.statusbtn > div.active { + background: linear-gradient(to bottom, #06f4ff, #00c6ff); + color: #142c64; +} + +/* 弹出层样式 */ +.modal-overlay { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.5); + z-index: 1000; + backdrop-filter: blur(5px); +} + +.modal-container { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 80%; + max-width: 900px; + /* background: linear-gradient(135deg, #142c64, #1a3a7d); */ + background-image: url(../img/alert2.png); + background-size: 100% 100%; + /* background-size: cover; */ + /* background-position: center; */ + /* background-repeat: no-repeat; */ + border-radius: 8px; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); + z-index: 1001; + padding: 20px 50px; + color: #fff; + height: 82%; +} + +.modal-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; + padding-bottom: 3px; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +.modal-title { + flex: 1; + text-align: center; + font-size: 20px; + font-weight: bold; + /* background: linear-gradient(to bottom, #fff, rgb(6 244 255)); */ + /* -webkit-background-clip: text; */ + /* background-clip: text; */ + /* color: transparent; */ +} + +.modal-close { + cursor: pointer; + font-size: 24px; + color: #fff; + transition: all 0.3s; + position: absolute; + right: 39px; + top: 33px; +} +.modal-close img{ + width: 30px; + height: 30px; +} +.modal-close:hover { + color: #06f4ff; +} + +.modal-tabs { + display: flex; + gap: 10px; + margin-bottom: 20px; + margin-top: 65px; +} + +.modal-tab { + padding: 8px 20px; + background: rgba(255, 255, 255, 0.1); + border-radius: 4px; + cursor: pointer; + transition: all 0.3s; +} + +.modal-tab.active { + background: linear-gradient(to bottom, #06f4ff, #00c6ff); + color: #142c64; +} + +.modal-content { + background: rgba(255, 255, 255, 0.05); + border-radius: 4px; + padding: 15px; + height: 80%; +} + +.table-container { + position: relative; + height: 100%; + display: flex; + flex-direction: column; +} + +.table-body-container { + flex: 1; + overflow-y: auto; + scrollbar-width: thin; + scrollbar-color: #06f4ff #142c64; +} + +.table-body-container::-webkit-scrollbar { + width: 6px; +} + +.table-body-container::-webkit-scrollbar-track { + background: #142c64; + border-radius: 3px; +} + +.table-body-container::-webkit-scrollbar-thumb { + background: #06f4ff; + border-radius: 3px; +} + +.table-body-container::-webkit-scrollbar-thumb:hover { + background: #00c6ff; +} + +.modal-table { + width: 100%; + border-collapse: collapse; + font-size: 14px; +} + +.modal-table thead { + position: sticky; + top: 0; + z-index: 1; + background: rgba(20, 44, 100, 0.95); +} + +.modal-table th, +.modal-table td { + padding: 12px; + text-align: left; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +.modal-table th { + background: rgba(255, 255, 255, 0.1); + font-weight: bold; +} + +.modal-table tr:hover { + background: rgba(255, 255, 255, 0.05); +} + +.vehicleTableBody { + display: table-row-group; +} + +.tab-content { + display: none; + height: 100%; +} + +.tab-content.active { + display: block; +} + +.ship-info { + display: grid; + /* grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); */ + gap: 20px; + padding: 10px; +} + +.ship-card { + background: rgba(255, 255, 255, 0.05); + border-radius: 8px; + padding: 15px; + transition: all 0.3s ease; +} + +.ship-card:hover { + background: rgba(255, 255, 255, 0.1); + transform: translateY(-2px); +} + +.ship-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 15px; + padding-bottom: 10px; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +.ship-header h3 { + margin: 0; + font-size: 18px; + background: linear-gradient(to bottom, #fff, rgb(6 244 255)); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.ship-status { + padding: 4px 8px; + border-radius: 4px; + font-size: 12px; + background: linear-gradient(to bottom, #06f4ff, #00c6ff); + color: #142c64; +} + +.ship-details { + display: grid; + gap: 10px; +} + +.detail-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 5px 0; +} + +.detail-item .label { + color: rgba(255, 255, 255, 0.7); + font-size: 14px; +} + +.detail-item .value { + color: #fff; + font-size: 14px; + font-weight: 500; +} + +/* 路径轨迹样式 */ +.route-timeline { + padding: 20px; + position: relative; + /* max-height: 500px; */ + height: 100%; + overflow-y: auto; + scrollbar-width: thin; + scrollbar-color: #06f4ff #142c64; +} + +.route-timeline::-webkit-scrollbar { + width: 6px; +} + +.route-timeline::-webkit-scrollbar-track { + background: #142c64; + border-radius: 3px; +} + +.route-timeline::-webkit-scrollbar-thumb { + background: #06f4ff; + border-radius: 3px; +} + +.route-timeline::before { + content: ''; + position: absolute; + left: 120px; + top: 0; + bottom: 0; + width: 2px; + background: linear-gradient(to bottom, + rgba(6, 244, 255, 0.8), + rgba(6, 244, 255, 0.4), + rgba(6, 244, 255, 0.2), + transparent + ); + animation: timelineGlow 2s ease-in-out infinite; +} + +@keyframes timelineGlow { + 0%, 100% { opacity: 0.5; } + 50% { opacity: 1; } +} + +.route-item { + display: flex; + margin-bottom: 30px; + position: relative; + opacity: 0.7; + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + transform-origin: left center; +} + +.route-item:hover { + transform: translateX(5px) scale(1.02); + opacity: 1; +} + +.route-item.active { + opacity: 1; +} + +.route-time { + width: 120px; + padding-right: 20px; + text-align: right; + color: #06f4ff; + font-size: 14px; + font-weight: 500; + text-shadow: 0 0 10px rgba(6, 244, 255, 0.3); + transition: all 0.3s ease; +} + +.route-item:hover .route-time { + color: #fff; + text-shadow: 0 0 15px rgba(6, 244, 255, 0.5); +} + +.route-content { + flex: 1; + background: rgba(255, 255, 255, 0.05); + border-radius: 12px; + padding: 20px; + position: relative; + margin-left: 20px; + backdrop-filter: blur(5px); + border: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); + transition: all 0.3s ease; +} + +.route-content::before { + content: ''; + position: absolute; + left: -8px; + top: 20px; + width: 16px; + height: 16px; + background: #06f4ff; + border-radius: 50%; + box-shadow: 0 0 15px rgba(6, 244, 255, 0.5); + animation: pulse 2s infinite; +} + +@keyframes pulse { + 0% { + box-shadow: 0 0 0 0 rgba(6, 244, 255, 0.4); + } + 70% { + box-shadow: 0 0 0 10px rgba(6, 244, 255, 0); + } + 100% { + box-shadow: 0 0 0 0 rgba(6, 244, 255, 0); + } +} + +.route-title { + font-size: 18px; + font-weight: bold; + margin-bottom: 10px; + background: linear-gradient(to bottom, #fff, rgb(6 244 255)); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + transition: all 0.3s ease; +} + +.route-desc { + font-size: 14px; + color: rgba(255, 255, 255, 0.7); + margin-bottom: 12px; + line-height: 1.5; +} + +.route-status { + display: inline-block; + padding: 6px 12px; + background: linear-gradient(45deg, #06f4ff, #00c6ff); + color: #142c64; + border-radius: 20px; + font-size: 12px; + font-weight: 500; + box-shadow: 0 2px 8px rgba(6, 244, 255, 0.3); + transition: all 0.3s ease; +} + +.route-item:hover .route-status { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(6, 244, 255, 0.4); +} + +.route-item.active .route-content { + background: rgba(255, 255, 255, 0.1); + border-color: rgba(6, 244, 255, 0.3); +} + +.route-item.active .route-title { + font-size: 20px; +} + +.route-item.active .route-status { + background: linear-gradient(45deg, #00c6ff, #06f4ff); + transform: scale(1.05); +} + +/* 表格分页样式 */ +.pagination { + display: flex; + justify-content: center; + align-items: center; + margin-top: 20px; + gap: 5px; +} + +.page-btn { + padding: 6px 12px; + background: rgba(255, 255, 255, 0.1); + color: #fff; + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 2px; + cursor: pointer; + font-size: 14px; + transition: all 0.3s ease; +} + +.page-btn:hover:not(:disabled) { + background: rgba(255, 255, 255, 0.2); + border-color: rgba(255, 255, 255, 0.3); +} + +.page-btn:disabled { + background: rgba(255, 255, 255, 0.05); + color: rgba(255, 255, 255, 0.3); + cursor: not-allowed; + border-color: rgba(255, 255, 255, 0.1); +} + +.page-numbers { + display: flex; + gap: 5px; + align-items: center; +} + +.page-number { + min-width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 2px; + cursor: pointer; + transition: all 0.3s ease; + font-size: 14px; + color: #fff; + padding: 0 8px; +} + +.page-number:hover { + background: rgba(255, 255, 255, 0.2); + border-color: rgba(255, 255, 255, 0.3); +} + +.page-number.active { + background: #06f4ff; + color: #142c64; + border-color: #06f4ff; +} + +.page-ellipsis { + color: rgba(255, 255, 255, 0.5); + padding: 0 5px; + user-select: none; +} + +.pagination-container { + margin-top: 15px; +} + +.modal-containercar { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 75%; + max-width: 850px; + background-image: url(../img/alertm.png); + background-size: 100% 100%; + border-radius: 8px; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); + z-index: 1001; + padding: 20px 50px; + color: #fff; + height: 58%; + min-height: 510px; +} +.modal-containercar .modal-close{ + position: relative; + display: flex; + align-items: center; + justify-content: center; + top: 0px; + right: 0px; +} +.modal-containercar .modal-close div{ + background-color: #00a6c9; + font-size: 14px; + padding: 8px 30px; + border-radius: 4px; +} +.modal-containercar .modal-content{ + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 50px; +} +.carimg{ + background-image: url(../img/alertm1.png); + background-size: 100% 100%; + width: 40%; + height: 80%; + display: flex; +} +.carimg img{ + height: 80%; + margin: auto; + width: 80%; + object-fit: cover; + object-position: center; +} +.carinfos p{ + line-height: 30px; + font-size: 14px; +} +.carinfos .cartitlet{ + font-size: 16px; + font-weight: bold; + background: linear-gradient(to bottom, #fff, rgb(6 244 255)); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} +.errors,.errors1{ + display: none; + text-align: center; + margin-top: 20px; +} +/* 表格对齐样式 */ +.table-container { + width: 100%; + overflow-x: auto; +} + +.modal-table { + width: 100%; + border-collapse: collapse; + table-layout: fixed; +} + +.modal-table th, +.modal-table td { + padding:10px 8px; + text-align: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +/* 设置每列的宽度 */ +.modal-table th:nth-child(1), +.modal-table td:nth-child(1) { + width: 25%; +} + +.modal-table th:nth-child(2), +.modal-table td:nth-child(2) { + width: 25%; +} + +.modal-table th:nth-child(3), +.modal-table td:nth-child(3) { + width: 25%; +} + +.modal-table th:nth-child(4), +.modal-table td:nth-child(4) { + width: 25%; +} + +/* 确保表头和表体使用相同的宽度 */ +.table-body-container { + width: 100%; + overflow-x: auto; +} + +.table-body-container .modal-table { + width: 100%; +} + +/* Status 按钮样式 */ +.statusbtn { + display: flex; + justify-content: space-between; + gap: 5px; + padding: 10px 5px; +} + +.statusbtn > div { + flex: 1; + display: flex; + justify-content: center; + align-items: center; + font-size: 12px; + padding: 5px 5px; + color: #fff; + border: none; + border-radius: 4px; + cursor: pointer; + text-align: center; + transition: all 0.3s ease; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +/* 全部按钮样式 */ +.statusbtn .statusall { + background: linear-gradient(to bottom, #1487ea, #0a43bc); +} + +.statusbtn > div:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0,0,0,0.3); + opacity: 0.9; +} + +.statusbtn > div.active { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0,0,0,0.4); +} + +/* 激活状态下的颜色 */ +.statusbtn .statusall.active { + background: linear-gradient(to bottom, #06f4ff, #00c6ff); + color: #fff; +} + +.statusbtn .status1.active { + background: linear-gradient(to bottom, #6bff7f, #049624); + color: #fff; +} + +.statusbtn .status2.active { + background: linear-gradient(to bottom, #00c5ff, #7cede5); + color: #fff; +} + +.statusbtn .status3.active { + background: linear-gradient(to bottom, #a3ae0f, #edf006); + color: #fff; +} + +.statusbtn .status4.active { + background: linear-gradient(to bottom, #ff9f43, #e6ac0e); + color: #fff; } \ No newline at end of file diff --git a/img/alert2.png b/img/alert2.png new file mode 100644 index 0000000..afc73b7 Binary files /dev/null and b/img/alert2.png differ diff --git a/img/alertm.png b/img/alertm.png new file mode 100644 index 0000000..db246c1 Binary files /dev/null and b/img/alertm.png differ diff --git a/img/alertm1.png b/img/alertm1.png new file mode 100644 index 0000000..dbcd914 Binary files /dev/null and b/img/alertm1.png differ diff --git a/img/clone.png b/img/clone.png new file mode 100644 index 0000000..7bba294 Binary files /dev/null and b/img/clone.png differ diff --git a/img/lunc.png b/img/lunc.png new file mode 100644 index 0000000..9d8b927 Binary files /dev/null and b/img/lunc.png differ diff --git a/img/luncx.png b/img/luncx.png new file mode 100644 index 0000000..ab2713b Binary files /dev/null and b/img/luncx.png differ diff --git a/index.html b/index.html index 750f6a2..626ffae 100644 --- a/index.html +++ b/index.html @@ -16,120 +16,14 @@ body[dir="rtl"] .cont { direction: rtl; } - @media (-webkit-min-device-pixel-ratio: 1.5), - (min-resolution: 144dpi) { /* 1.5×96=144 */ - #root-container { - transform: scale(0.9); - transform-origin: 0 0; /* 左上角为缩放基点 */ - width: calc(100% / 0.9); /* 补偿缩放后的宽度 */ - height: calc(100vh / 0.9); /* 补偿缩放后的高度 */ - overflow: hidden; /* 隐藏溢出内容 */ - /* position: fixed; */ - /* top: 0px; */ - } - } - .topimg{ - width: 100%; - height: 250px; - box-sizing: border-box; - border: 2px solid #142c64; - border-image: url(./img/border.png) 51 38 21 132; - border-width: 2.125rem 1.583rem 0.875rem 5.5rem; - position: relative; - margin-bottom: 0.833rem; - } - .inner{ - position: absolute; - top: -2.125rem; - right: -1.583rem; - bottom: -0.875rem; - left: -5.5rem; - padding: 1rem 1.5rem; - display: flex; - align-items: center; - } - .topimg img{ - height: 100%; - margin: auto; - width: 100%; - object-fit: cover; - object-position: center; - } - .carmsg p{ - line-height: 35px; - background: linear-gradient(to bottom, #fff, rgb(6 244 255)); - -webkit-background-clip: text; - background-clip: text; - color: transparent; - } - .cartitle{ - padding-top: 20px; - height:85px; - text-align: center; - font-size: 17px; - font-weight: bold; - background: linear-gradient(to bottom, #fff, rgb(6 244 255)); - -webkit-background-clip: text; - background-clip: text; - color: transparent; - } - - .toggle-btn { - display: inline-block; - margin-top: 10px; - padding: 8px 15px; - color: white; - cursor: pointer; - font-size: 14px; - transition: all 0.3s; - display: flex; - justify-content: center; - } - - .toggle-btn:hover { - color: #3367d6; - } - - .toggle-btn .more-text { - display: inline; - } - - .toggle-btn .less-text { - display: none; - } - - .toggle-btn.expanded .more-text { - display: none; - } - - .toggle-btn.expanded .less-text { - display: inline; - } - .carmsg { - overflow: hidden; - transition: all 0.4s ease; - } - - .carmsg.collapsed { - max-height: 100px; /* 收起时显示的高度 */ - -webkit-mask-image: linear-gradient(to bottom, black 50%, transparent 100%); - mask-image: linear-gradient(to bottom, black 50%, transparent 100%); - } - - .carmsg.expanded { - max-height: 2000px; /* 足够大的值容纳所有内容 */ - }