-
+
-
@@ -555,12 +813,14 @@ function uniqueOptions(values: string[]) {
.pc-home-redesign {
display: grid;
gap: 20px;
+ width: 100%;
max-width: 1280px;
+ min-width: 0;
margin: 0 auto;
+ overflow-x: clip;
}
/* 基础通用样式 */
-.home-head,
.home-announcement,
.horizontal-filter-card,
.listing-card-v2 {
@@ -570,96 +830,6 @@ function uniqueOptions(values: string[]) {
box-shadow: 0 4px 12px rgba(23, 35, 61, 0.03);
}
-/* 头部栏 */
-.home-head {
- display: flex;
- align-items: center;
- gap: 16px;
- padding: 14px 20px;
-}
-
-.brand-block {
- display: flex;
- align-items: center;
- gap: 12px;
- flex-shrink: 0;
-}
-
-.brand-mark-large {
- display: grid;
- width: 44px;
- height: 44px;
- place-items: center;
- border-radius: 12px;
- background: linear-gradient(135deg, #fff3e8 0%, #ffe4cc 100%);
- color: #ff6a00;
- font-size: 20px;
- font-weight: 900;
-}
-
-.brand-block strong {
- display: block;
- color: #17233d;
- font-size: 18px;
-}
-
-.brand-block small {
- display: block;
- margin-top: 2px;
- color: #7b8798;
- font-size: 12px;
-}
-
-.home-searchbar {
- display: flex;
- align-items: center;
- gap: 10px;
- flex: 1;
- max-width: 480px;
- height: 42px;
- margin-left: 20px;
- border: 1px solid #edf1f6;
- border-radius: 999px;
- background: #f7f9fc;
- padding: 0 16px;
-}
-
-.home-searchbar input {
- width: 100%;
- border: 0;
- outline: 0;
- background: transparent;
- color: #17233d;
- font-size: 14px;
-}
-
-.home-service,
-.home-publish,
-.all-link {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- gap: 6px;
- min-height: 40px;
- border-radius: 999px;
- padding: 0 18px;
- font-size: 14px;
- font-weight: 700;
- text-decoration: none;
-}
-
-.home-service, .all-link {
- border: 1px solid #e8edf3;
- color: #1477ff;
- background: #ffffff;
-}
-
-.home-publish {
- background: #ff6a00;
- color: #ffffff;
- box-shadow: 0 8px 16px rgba(255, 106, 0, 0.2);
-}
-
/* 公告 */
.home-announcement {
display: flex;
@@ -679,15 +849,18 @@ function uniqueOptions(values: string[]) {
.home-content {
display: grid;
gap: 20px;
+ min-width: 0;
}
.hero-section {
display: grid;
grid-template-columns: minmax(0, 1fr) 280px;
gap: 20px;
+ min-width: 0;
}
.hero-board {
+ min-width: 0;
border-radius: 16px;
overflow: hidden;
}
@@ -747,6 +920,7 @@ function uniqueOptions(values: string[]) {
display: grid;
grid-template-rows: repeat(3, 1fr);
gap: 12px;
+ min-width: 0;
}
.stat-item {
@@ -767,7 +941,7 @@ function uniqueOptions(values: string[]) {
.stat-item strong {
font-size: 24px;
- color: #1477ff;
+ color: #ff6a00;
}
.stat-item span {
@@ -781,16 +955,20 @@ function uniqueOptions(values: string[]) {
font-size: 12px;
}
-/* 横向筛选栏 v2 */
+/* 横向筛选栏 v2 - 审美优化版 */
.horizontal-filter-card {
- padding: 24px;
+ padding: 24px 26px 22px;
+ background: #ffffff;
+ border-radius: 20px;
+ min-width: 0;
+ overflow: visible;
}
.filter-header {
display: flex;
justify-content: space-between;
align-items: center;
- margin-bottom: 24px;
+ margin-bottom: 20px;
}
.filter-title {
@@ -799,98 +977,566 @@ function uniqueOptions(values: string[]) {
gap: 10px;
}
+.filter-title .el-icon {
+ font-size: 18px;
+ color: #ff6a00;
+}
+
.filter-title strong {
font-size: 20px;
- color: #17233d;
+ font-weight: 800;
+ color: #1e293b;
}
.filter-title span {
+ font-size: 13px;
+ color: #94a3b8;
+ font-weight: 600;
+}
+
+.filter-chip-row {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ min-width: 0;
+ padding: 4px 0 0;
+ overflow: visible;
+}
+
+.filter-chip {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 5px;
+ flex: 1 1 96px;
+ min-width: 0;
+ max-width: 140px;
+ height: 40px;
+ padding: 0 12px;
+ border: 1px solid #edf1f6;
+ border-radius: 12px;
+ background: #ffffff;
+ color: #1f2937;
font-size: 14px;
- color: #7b8798;
+ font-weight: 800;
+ white-space: nowrap;
+ cursor: pointer;
+ box-shadow: 0 1px 0 rgba(15, 23, 42, 0.03);
+ transition: color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
+}
+
+.filter-chip.wide {
+ flex-basis: 112px;
+ max-width: 160px;
+}
+
+.filter-chip span {
+ min-width: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.filter-chip:hover,
+.filter-chip.active {
+ border-color: #ffb27a;
+ color: #ff6a00;
+ box-shadow: 0 8px 18px rgba(255, 106, 0, 0.1);
+}
+
+.filter-chip:active {
+ transform: translateY(1px);
+}
+
+.filter-chip .el-icon {
+ font-size: 12px;
+}
+
+:global(.home-filter-popover.el-popover) {
+ padding: 0;
+ border: 1px solid #e5eaf2;
+ border-radius: 8px;
+ box-shadow: 0 16px 38px rgba(15, 23, 42, 0.14);
+}
+
+:global(.home-filter-popover .el-popper__arrow::before) {
+ border-color: #e5eaf2;
+}
+
+.filter-menu,
+.range-menu,
+.skin-filter-menu {
+ padding: 12px;
+}
+
+.filter-menu {
+ display: grid;
+ gap: 4px;
+ max-height: 300px;
+ overflow: auto;
+ scrollbar-width: none;
+}
+
+.filter-menu::-webkit-scrollbar {
+ display: none;
+}
+
+.filter-menu button,
+.range-menu button {
+ width: 100%;
+ min-height: 34px;
+ border: 0;
+ border-radius: 8px;
+ background: transparent;
+ color: #5f6670;
+ font-size: 14px;
+ font-weight: 700;
+ text-align: left;
+ cursor: pointer;
+ transition: background 0.16s ease, color 0.16s ease;
+}
+
+.filter-menu button {
+ padding: 0 10px;
+}
+
+.filter-menu button:hover,
+.filter-menu button.active,
+.range-menu button:hover,
+.range-menu button.active {
+ background: #fff3e8;
+ color: #ff6a00;
+}
+
+.range-menu {
+ display: grid;
+ gap: 6px;
+}
+
+.range-menu button {
+ padding: 0 36px;
+ font-size: 15px;
+}
+
+.range-manual {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) 20px minmax(0, 1fr);
+ align-items: center;
+ gap: 8px;
+ margin-top: 8px;
+ padding-top: 10px;
+ border-top: 1px solid #e7ecf3;
+}
+
+.range-manual > span {
+ color: #5f6670;
+ font-size: 18px;
+ font-weight: 700;
+ text-align: center;
+}
+
+.range-manual :deep(.el-input-number) {
+ width: 100%;
+}
+
+.range-manual :deep(.el-input__wrapper),
+.skin-filter-menu :deep(.el-input__wrapper) {
+ min-height: 38px;
+ border: 1px solid #dbe2ec;
+ border-radius: 6px;
+ box-shadow: none;
+}
+
+.range-manual :deep(.el-input__wrapper:hover),
+.skin-filter-menu :deep(.el-input__wrapper:hover) {
+ border-color: #ffb27a;
+}
+
+.range-manual :deep(.el-input__wrapper.is-focus),
+.skin-filter-menu :deep(.el-input__wrapper.is-focus) {
+ border-color: #ff6a00;
+ box-shadow: 0 0 0 3px rgba(255, 106, 0, 0.12);
+}
+
+.range-manual :deep(.el-input__inner),
+.skin-filter-menu :deep(.el-input__inner) {
+ font-weight: 700;
+}
+
+.skin-filter-menu {
+ display: grid;
+ gap: 14px;
+ width: 100%;
+}
+
+.skin-reset {
+ width: 100%;
+ height: 36px;
+ border: 0;
+ border-radius: 10px;
+ background: #fff7f0;
+ color: #ff6a00;
+ font-size: 14px;
+ font-weight: 800;
+ text-align: left;
+ padding: 0 14px;
+ cursor: pointer;
+}
+
+.skin-reset.active {
+ background: #ff6a00;
+ color: #ffffff;
+}
+
+.skin-filter-group {
+ display: grid;
+ gap: 10px;
+}
+
+.skin-filter-group + .skin-filter-group {
+ padding-top: 12px;
+ border-top: 1px solid #f1f5f9;
+}
+
+.skin-filter-title {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 10px;
+}
+
+.skin-filter-title strong {
+ color: #1f2937;
+ font-size: 14px;
+ font-weight: 900;
+}
+
+.skin-filter-title button {
+ height: 28px;
+ border: 1px solid #ffd7bd;
+ border-radius: 999px;
+ background: #fffaf5;
+ color: #ff6a00;
+ font-size: 12px;
+ font-weight: 800;
+ padding: 0 10px;
+ cursor: pointer;
+}
+
+.skin-filter-title button.active,
+.skin-filter-title button:hover {
+ background: #ff6a00;
+ border-color: #ff6a00;
+ color: #ffffff;
+}
+
+.skin-filter-options {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ max-height: 156px;
+ overflow: auto;
+ scrollbar-width: none;
+}
+
+.skin-filter-options::-webkit-scrollbar {
+ display: none;
+}
+
+.skin-filter-options button {
+ max-width: 100%;
+ min-height: 30px;
+ border: 1px solid #eef1f5;
+ border-radius: 8px;
+ background: #ffffff;
+ color: #5f6670;
+ font-size: 13px;
+ font-weight: 700;
+ padding: 0 10px;
+ cursor: pointer;
+ transition: border-color 0.16s ease, color 0.16s ease, background 0.16s ease;
+}
+
+.skin-filter-options button:hover,
+.skin-filter-options button.active {
+ border-color: #ffb27a;
+ background: #fff3e8;
+ color: #ff6a00;
}
.filter-body-v2 {
display: flex;
flex-direction: column;
- gap: 24px;
- padding-bottom: 24px;
+ gap: 18px;
+ padding-bottom: 18px;
border-bottom: 1px solid #f1f5f9;
}
.filter-row {
display: grid;
grid-template-columns: repeat(6, 1fr);
- gap: 20px;
-}
-
-.filter-row.range-row {
- grid-template-columns: repeat(3, 1fr);
-}
-
-.filter-row.last-row {
- grid-template-columns: 1fr 2fr;
+ gap: 16px;
}
.filter-item {
display: flex;
flex-direction: column;
- gap: 10px;
+ gap: 7px;
+ min-width: 0;
}
.filter-item label {
- font-size: 14px;
- font-weight: 700;
+ font-size: 13px;
+ font-weight: 800;
color: #475569;
+ padding-left: 2px;
+}
+
+/* 筛选控件 */
+.filter-select {
+ width: 100%;
+}
+
+.horizontal-filter-card :deep(.filter-select .el-select__wrapper) {
+ min-height: 36px;
+ padding: 0 12px;
+ border: 1px solid #e7edf5;
+ border-radius: 12px;
+ background: #fbfcfe;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
+ transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
+}
+
+.horizontal-filter-card :deep(.filter-select .el-select__wrapper:hover) {
+ border-color: #ffd0ad;
+ background: #ffffff;
+}
+
+.horizontal-filter-card :deep(.filter-select .el-select__wrapper.is-focused) {
+ border-color: #ff6a00;
+ background: #ffffff;
+ box-shadow: 0 0 0 4px rgba(255, 106, 0, 0.1);
+}
+
+.horizontal-filter-card :deep(.filter-select .el-select__placeholder) {
+ color: #a4adba;
+ font-weight: 700;
+ font-size: 13px;
+}
+
+.horizontal-filter-card :deep(.filter-select .el-select__caret) {
+ color: #98a2b3;
+ font-size: 14px;
+}
+
+.skin-search :deep(.el-input__wrapper) {
+ min-height: 36px;
+ padding: 0 12px;
+ border: 1px solid #e7edf5;
+ border-radius: 12px;
+ background: #fbfcfe;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
+ transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
+}
+
+.skin-search :deep(.el-input__wrapper:hover) {
+ border-color: #ffd0ad;
+ background: #ffffff;
+}
+
+.skin-search :deep(.el-input__wrapper.is-focus) {
+ border-color: #ff6a00;
+ background: #ffffff;
+ box-shadow: 0 0 0 4px rgba(255, 106, 0, 0.1);
+}
+
+.skin-search :deep(.el-input__inner) {
+ color: #334155;
+ font-size: 13px;
+ font-weight: 700;
+}
+
+.skin-search :deep(.el-input__inner::placeholder) {
+ color: #a4adba;
}
.range-inputs {
display: flex;
align-items: center;
- gap: 12px;
+ gap: 8px;
+ min-width: 0;
}
.range-inputs :deep(.el-input-number) {
+ --el-color-primary: #ff6a00;
+ --el-input-border-color: transparent;
+ --el-input-hover-border-color: transparent;
+ --el-input-focus-border-color: transparent;
flex: 1;
+ min-width: 0;
+ width: 100%;
+ height: 36px;
+ overflow: hidden;
+ border: 1px solid #e7edf5;
+ border-radius: 12px;
+ background: #fbfcfe;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
+ transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
+}
+
+.range-inputs :deep(.el-input-number:hover) {
+ border-color: #ffd0ad;
+ background: #ffffff;
+}
+
+.range-inputs :deep(.el-input-number.is-focus),
+.range-inputs :deep(.el-input-number:focus-within) {
+ border-color: #ff6a00;
+ background: #ffffff;
+ box-shadow: 0 0 0 4px rgba(255, 106, 0, 0.1);
+}
+
+.range-inputs :deep(.el-input-number .el-input) {
+ height: 100%;
+ min-width: 0;
+}
+
+.range-inputs :deep(.el-input-number .el-input__wrapper) {
+ height: 100%;
+ padding: 0 34px 0 10px;
+ border: 0;
+ border-radius: 0;
+ background: transparent;
+ box-shadow: none !important;
+}
+
+.range-inputs :deep(.el-input-number .el-input__wrapper:hover),
+.range-inputs :deep(.el-input-number .el-input__wrapper.is-focus),
+.range-inputs :deep(.el-input-number.is-focus .el-input__wrapper),
+.range-inputs :deep(.el-input-number:focus-within .el-input__wrapper) {
+ border-color: transparent !important;
+ box-shadow: none !important;
+}
+
+.range-inputs :deep(.el-input-number .el-input__inner) {
+ color: #334155;
+ font-size: 13px;
+ font-weight: 700;
+}
+
+.range-inputs :deep(.el-input-number .el-input__inner::placeholder) {
+ color: #a4adba;
+}
+
+.range-inputs :deep(.el-input-number__increase),
+.range-inputs :deep(.el-input-number__decrease) {
+ right: 0;
+ width: 34px;
+ height: 50%;
+ border: 0;
+ border-left: 1px solid #e7edf5;
+ background: #f8fafc;
+ color: #98a2b3;
+ line-height: 17px;
+ transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
+}
+
+.range-inputs :deep(.el-input-number__increase) {
+ top: 0;
+ border-bottom: 1px solid #eef2f7;
+ border-top-right-radius: 11px;
+}
+
+.range-inputs :deep(.el-input-number__decrease) {
+ bottom: 0;
+ border-bottom-right-radius: 11px;
+}
+
+.range-inputs :deep(.el-input-number__increase:hover),
+.range-inputs :deep(.el-input-number__decrease:hover) {
+ border-left-color: #ffd0ad;
+ background: #fff7f0;
+ color: #ff6a00;
+}
+
+.range-inputs :deep(.el-input-number__increase.is-disabled),
+.range-inputs :deep(.el-input-number__decrease.is-disabled) {
+ background: #f8fafc;
+ color: #cbd5e1;
+ cursor: not-allowed;
}
.range-sep {
color: #cbd5e1;
- font-weight: 600;
+ font-weight: 800;
+ font-size: 14px;
+}
+
+:global(.filter-select-dropdown) {
+ overflow: hidden;
+ border: 1px solid #e7edf5 !important;
+ border-radius: 14px !important;
+ box-shadow: 0 14px 34px rgba(15, 23, 42, 0.12) !important;
+}
+
+:global(.filter-select-dropdown .el-select-dropdown__list) {
+ padding: 6px;
+}
+
+:global(.filter-select-dropdown .el-select-dropdown__item) {
+ margin: 2px 0;
+ border-radius: 10px;
+ color: #475569;
+ font-weight: 700;
+}
+
+:global(.filter-select-dropdown .el-select-dropdown__item.hover),
+:global(.filter-select-dropdown .el-select-dropdown__item:hover) {
+ background: #fff3e8;
+ color: #ff6a00;
+}
+
+:global(.filter-select-dropdown .el-select-dropdown__item.selected) {
+ background: #ff6a00;
+ color: #ffffff;
}
.filter-footer {
- padding-top: 20px;
+ padding-top: 16px;
}
.quick-tags {
display: flex;
align-items: center;
- gap: 12px;
- font-size: 14px;
+ gap: 10px;
+ font-size: 13px;
color: #64748b;
+ font-weight: 700;
}
.quick-tags button {
- padding: 6px 16px;
- border: 1px solid #e2e8f0;
- border-radius: 999px;
- background: #ffffff;
- color: #475569;
- font-size: 13px;
+ padding: 6px 14px;
+ border: 1px solid #f1f5f9;
+ border-radius: 10px;
+ background: #f8fafc;
+ color: #64748b;
+ font-size: 12px;
+ font-weight: 800;
cursor: pointer;
- transition: all 0.2s;
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.quick-tags button:hover {
- border-color: #1477ff;
- color: #1477ff;
- background: #f0f7ff;
+ background: #ffffff;
+ border-color: #ff6a00;
+ color: #ff6a00;
+ box-shadow: 0 4px 12px rgba(255, 106, 0, 0.1);
}
.quick-tags button.active {
- background: #1477ff;
- border-color: #1477ff;
+ background: #ff6a00;
+ border-color: #ff6a00;
color: #ffffff;
+ box-shadow: 0 8px 20px rgba(255, 106, 0, 0.2);
}
/* 列表头部 */
@@ -898,6 +1544,9 @@ function uniqueOptions(values: string[]) {
display: flex;
justify-content: space-between;
align-items: flex-end;
+ gap: 16px;
+ min-width: 0;
+ flex-wrap: wrap;
margin-top: 10px;
}
@@ -912,7 +1561,7 @@ function uniqueOptions(values: string[]) {
margin: 0;
font-size: 12px;
font-weight: 900;
- color: #1477ff;
+ color: #ff6a00;
text-transform: uppercase;
letter-spacing: 1px;
}
@@ -921,6 +1570,21 @@ function uniqueOptions(values: string[]) {
display: flex;
align-items: center;
gap: 16px;
+ min-width: 0;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+}
+
+.list-actions :deep(.el-radio-button__inner) {
+ border-radius: 8px;
+ border: 1px solid #eef1f5;
+ margin-left: 8px;
+}
+
+.list-actions :deep(.el-radio-button__orig-radio:checked + .el-radio-button__inner) {
+ background-color: #ff6a00;
+ border-color: #ff6a00;
+ box-shadow: -1px 0 0 0 #ff6a00;
}
/* 增强版卡片 v2 */
@@ -1070,7 +1734,7 @@ function uniqueOptions(values: string[]) {
}
.highlight {
- color: #1477ff !important;
+ color: #ff6a00 !important;
}
.time-text, .skins-text {
@@ -1123,7 +1787,7 @@ function uniqueOptions(values: string[]) {
height: 40px;
border: none;
border-radius: 10px;
- background: #1477ff;
+ background: #ff6a00;
color: #ffffff;
font-size: 14px;
font-weight: 800;
@@ -1132,7 +1796,7 @@ function uniqueOptions(values: string[]) {
}
.rent-btn:hover {
- background: #0d5fd4;
+ background: #e55d00;
}
@media (max-width: 1200px) {