Merge remote-tracking branch 'origin/main'

This commit is contained in:
2025-09-12 20:19:08 +08:00
parent 26fa7d105f
commit 85fb53d57c
5 changed files with 881 additions and 117 deletions

View File

@@ -1521,3 +1521,655 @@ img.lazy.loaded {
display: flex;
}
}
/* 新增移动端专用工具类 */
@media (max-width: 767.98px) {
.mobile-only {
display: block !important;
}
.desktop-only {
display: none !important;
}
.mobile-text-center {
text-align: center !important;
}
.mobile-mb-2 {
margin-bottom: 0.5rem !important;
}
.mobile-mb-3 {
margin-bottom: 1rem !important;
}
.mobile-mt-3 {
margin-top: 1rem !important;
}
.mobile-p-3 {
padding: 1rem !important;
}
.mobile-w-100 {
width: 100% !important;
}
.mobile-flex-column {
flex-direction: column !important;
}
.mobile-gap-2 {
gap: 0.5rem !important;
}
.mobile-gap-3 {
gap: 1rem !important;
}
}
/* 新增大屏幕专用工具类 */
@media (min-width: 1200px) {
.mobile-only {
display: none !important;
}
.desktop-only {
display: block !important;
}
.desktop-text-left {
text-align: left !important;
}
.desktop-w-75 {
width: 75% !important;
}
.desktop-mx-auto {
margin-left: auto !important;
margin-right: auto !important;
}
}
/* 新增暗色模式支持 */
@media (prefers-color-scheme: dark) {
:root {
--dark-bg: #121212;
--dark-card-bg: #1e1e1e;
--dark-text: #ffffff;
--dark-text-secondary: #b0b0b0;
--dark-border: #333333;
}
body {
background-color: var(--dark-bg);
color: var(--dark-text);
}
.card {
background-color: var(--dark-card-bg);
border-color: var(--dark-border);
}
.navbar {
background-color: rgba(18, 18, 18, 0.95) !important;
}
.btn-primary {
background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));
}
.form-control {
background-color: var(--dark-card-bg);
border-color: var(--dark-border);
color: var(--dark-text);
}
.form-control:focus {
background-color: var(--dark-card-bg);
border-color: var(--primary-color);
color: var(--dark-text);
}
}
/* 新增打印样式优化 */
@media print {
.no-print {
display: none !important;
}
.print-only {
display: block !important;
}
.print-w-100 {
width: 100% !important;
}
.print-mb-3 {
margin-bottom: 1rem !important;
}
body {
background-color: white;
color: black;
}
.card {
border: 1px solid #000;
box-shadow: none;
}
}
/* 新增动画效果类 */
.animate-fade-in {
animation: fadeIn 0.5s ease-in-out;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.animate-slide-up {
animation: slideUp 0.5s ease-out;
}
@keyframes slideUp {
from {
transform: translateY(20px);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
.animate-slide-down {
animation: slideDown 0.5s ease-out;
}
@keyframes slideDown {
from {
transform: translateY(-20px);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
/* 新增交互动画类 */
.interactive-hover {
transition: all 0.3s ease;
}
.interactive-hover:hover {
transform: translateY(-3px);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
}
.interactive-press:active {
transform: scale(0.98);
}
/* 新增表单增强样式 */
.form-group {
margin-bottom: 1.5rem;
}
.form-label {
font-weight: 500;
margin-bottom: 0.5rem;
display: block;
}
.form-control-lg {
padding: 1rem 1.25rem;
font-size: 1.1rem;
}
.form-control-sm {
padding: 0.5rem 0.75rem;
font-size: 0.875rem;
}
.form-text {
font-size: 0.875rem;
color: var(--text-muted);
margin-top: 0.25rem;
}
/* 新增导航栏增强样式 */
.navbar-brand:hover {
transform: scale(1.05);
transition: transform 0.3s ease;
}
.navbar-nav .nav-link {
position: relative;
}
.navbar-nav .nav-link::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
width: 0;
height: 2px;
background-color: var(--primary-color);
transition: all 0.3s ease;
transform: translateX(-50%);
}
.navbar-nav .nav-link:hover::after,
.navbar-nav .nav-link.active::after {
width: 80%;
}
/* 新增卡片增强样式 */
.card-hover {
transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.card-hover:hover {
transform: translateY(-5px);
box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15);
}
.card-img-top {
transition: transform 0.3s ease;
}
.card-hover:hover .card-img-top {
transform: scale(1.05);
}
/* 新增按钮增强样式 */
.btn-pill {
border-radius: 50px;
}
.btn-square {
border-radius: 0;
}
.btn-icon {
display: inline-flex;
align-items: center;
justify-content: center;
}
.btn-icon i {
margin-right: 0.5rem;
}
.btn-icon.btn-icon-end i {
margin-right: 0;
margin-left: 0.5rem;
}
.btn-shadow {
box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08);
}
.btn-shadow:hover {
box-shadow: 0 7px 14px rgba(50, 50, 93, 0.1), 0 3px 6px rgba(0, 0, 0, 0.08);
}
/* 新增布局工具类 */
.container-fluid {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
.container-sm {
max-width: 540px;
}
.container-md {
max-width: 720px;
}
.container-lg {
max-width: 960px;
}
.container-xl {
max-width: 1140px;
}
.container-xxl {
max-width: 1320px;
}
/* 新增间距工具类 */
.gap-0 {
gap: 0 !important;
}
.gap-1 {
gap: 0.25rem !important;
}
.gap-2 {
gap: 0.5rem !important;
}
.gap-3 {
gap: 1rem !important;
}
.gap-4 {
gap: 1.5rem !important;
}
.gap-5 {
gap: 3rem !important;
}
/* 新增文字工具类 */
.text-gradient {
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.text-shadow-sm {
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}
.text-shadow-md {
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}
.text-shadow-lg {
text-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
/* 新增背景工具类 */
.bg-gradient-primary {
background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)) !important;
}
.bg-gradient-secondary {
background: linear-gradient(135deg, var(--secondary-color), #1565c0) !important;
}
.bg-gradient-success {
background: linear-gradient(135deg, var(--success-color), #3d8b40) !important;
}
.bg-gradient-warning {
background: linear-gradient(135deg, var(--warning-color), #e68a00) !important;
}
.bg-gradient-danger {
background: linear-gradient(135deg, var(--danger-color), #d32f2f) !important;
}
.bg-pattern {
background-image: radial-gradient(circle, rgba(76, 175, 80, 0.1) 1px, transparent 1px);
background-size: 20px 20px;
}
/* 新增边框工具类 */
.border-dashed {
border-style: dashed !important;
}
.border-dotted {
border-style: dotted !important;
}
.border-2 {
border-width: 2px !important;
}
.border-3 {
border-width: 3px !important;
}
.border-primary {
border-color: var(--primary-color) !important;
}
.border-secondary {
border-color: var(--secondary-color) !important;
}
.border-success {
border-color: var(--success-color) !important;
}
.border-warning {
border-color: var(--warning-color) !important;
}
.border-danger {
border-color: var(--danger-color) !important;
}
/* 新增阴影工具类 */
.shadow-none {
box-shadow: none !important;
}
.shadow-sm {
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
}
.shadow-lg {
box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
}
.shadow-xl {
box-shadow: 0 2rem 4rem rgba(0, 0, 0, 0.2) !important;
}
/* 新增圆角工具类 */
.rounded-sm {
border-radius: 0.25rem !important;
}
.rounded-lg {
border-radius: 1rem !important;
}
.rounded-xl {
border-radius: 2rem !important;
}
.rounded-top {
border-top-left-radius: var(--border-radius) !important;
border-top-right-radius: var(--border-radius) !important;
}
.rounded-bottom {
border-bottom-left-radius: var(--border-radius) !important;
border-bottom-right-radius: var(--border-radius) !important;
}
.rounded-left {
border-top-left-radius: var(--border-radius) !important;
border-bottom-left-radius: var(--border-radius) !important;
}
.rounded-right {
border-top-right-radius: var(--border-radius) !important;
border-bottom-right-radius: var(--border-radius) !important;
}
/* 新增定位工具类 */
.position-relative {
position: relative !important;
}
.position-absolute {
position: absolute !important;
}
.position-fixed {
position: fixed !important;
}
.top-0 {
top: 0 !important;
}
.bottom-0 {
bottom: 0 !important;
}
.start-0 {
left: 0 !important;
}
.end-0 {
right: 0 !important;
}
.translate-middle {
transform: translate(-50%, -50%) !important;
}
/* 新增Flexbox工具类 */
.flex-fill {
flex: 1 1 auto !important;
}
.flex-row-reverse {
flex-direction: row-reverse !important;
}
.flex-column-reverse {
flex-direction: column-reverse !important;
}
.justify-content-evenly {
justify-content: space-evenly !important;
}
.align-items-start {
align-items: flex-start !important;
}
.align-items-end {
align-items: flex-end !important;
}
.align-self-start {
align-self: flex-start !important;
}
.align-self-end {
align-self: flex-end !important;
}
.align-self-center {
align-self: center !important;
}
.align-self-baseline {
align-self: baseline !important;
}
.align-self-stretch {
align-self: stretch !important;
}
/* 新增显示工具类 */
.d-inline {
display: inline !important;
}
.d-inline-block {
display: inline-block !important;
}
.d-block {
display: block !important;
}
.d-grid {
display: grid !important;
}
.d-table {
display: table !important;
}
.d-table-row {
display: table-row !important;
}
.d-table-cell {
display: table-cell !important;
}
.d-none {
display: none !important;
}
/* 新增溢出工具类 */
.overflow-auto {
overflow: auto !important;
}
.overflow-hidden {
overflow: hidden !important;
}
.overflow-visible {
overflow: visible !important;
}
.overflow-scroll {
overflow: scroll !important;
}
/* 新增可见性工具类 */
.visible {
visibility: visible !important;
}
.invisible {
visibility: hidden !important;
}
/* 新增z-index工具类 */
.z-index-0 {
z-index: 0 !important;
}
.z-index-1 {
z-index: 1 !important;
}
.z-index-2 {
z-index: 2 !important;
}
.z-index-3 {
z-index: 3 !important;
}
.z-index-1000 {
z-index: 1000 !important;
}
.z-index-9999 {
z-index: 9999 !important;
}

View File

@@ -1,6 +1,100 @@
/* 移动端响应式优化样式 */
/* 移动设备优先设计 */
/* 超小屏幕设备 (小于576px) */
@media (max-width: 575.98px) {
.container {
padding-left: 1rem;
padding-right: 1rem;
}
.hero-section {
padding: 80px 0 30px;
}
.hero-title {
font-size: 1.75rem;
}
.hero-features .col-6 {
flex: 0 0 50%;
max-width: 50%;
}
.hero-stats .col-4 {
flex: 0 0 50%;
max-width: 50%;
}
.hero-stats .col-4:nth-child(3) {
flex: 0 0 100%;
max-width: 100%;
margin-top: 0.5rem;
}
.btn {
font-size: 0.9rem;
padding: 0.6rem 1.2rem;
}
.modal-dialog {
margin: 0.5rem;
}
.demo-header {
padding: 2rem 0;
padding-top: 120px;
}
.demo-header h1 {
font-size: 2rem;
}
.demo-nav-item {
font-size: 0.85rem;
padding: 0.75rem;
}
.metric-number {
font-size: 1.75rem;
}
.chart-container {
height: 200px;
}
/* 超小屏幕新增优化 */
.xs-container {
padding-left: 0.5rem;
padding-right: 0.5rem;
}
.xs-section {
padding: 1.5rem 0;
}
.xs-card {
margin-bottom: 0.75rem;
border-radius: 8px;
}
.xs-text-center {
text-align: center;
}
.xs-mb-2 {
margin-bottom: 0.5rem;
}
.xs-mt-2 {
margin-top: 0.5rem;
}
.xs-p-2 {
padding: 0.5rem;
}
}
/* 移动设备优先设计 (小于768px) */
@media (max-width: 767.98px) {
/* 导航栏优化 */
.navbar {
@@ -164,7 +258,7 @@
}
}
/* 平板设备优化 */
/* 平板设备优化 (768px 到 991.98px) */
@media (min-width: 768px) and (max-width: 991.98px) {
.hero-title {
font-size: 2.5rem;
@@ -198,9 +292,57 @@
.tablet-card {
margin-bottom: 1.5rem;
}
.tablet-text-left {
text-align: left;
}
.tablet-d-flex {
display: flex;
}
}
/* 大屏幕优化 */
/* 中等屏幕设备优化 (992px 到 1199.98px) */
@media (min-width: 992px) and (max-width: 1199.98px) {
.container {
max-width: 960px;
}
.hero-title {
font-size: 3rem;
}
.hero-subtitle {
font-size: 1.25rem;
}
.dashboard-card {
padding: 1.5rem;
}
.metric-number {
font-size: 2.5rem;
}
/* 中等屏幕新增优化 */
.md-container {
max-width: 960px;
}
.md-section {
padding: 4rem 0;
}
.md-card {
transition: all 0.3s ease;
}
.md-card:hover {
transform: translateY(-5px);
}
}
/* 大屏幕优化 (1200px 及以上) */
@media (min-width: 1200px) {
.container {
max-width: 1200px;
@@ -238,6 +380,38 @@
.desktop-card:hover {
transform: translateY(-10px);
}
.desktop-text-left {
text-align: left;
}
.desktop-d-flex {
display: flex;
}
}
/* 超大屏幕优化 (1400px 及以上) */
@media (min-width: 1400px) {
.container {
max-width: 1320px;
}
.hero-title {
font-size: 4.5rem;
}
.hero-subtitle {
font-size: 1.5rem;
}
/* 超大屏幕新增优化 */
.xxl-container {
max-width: 1500px;
}
.xxl-section {
padding: 6rem 0;
}
}
/* 触摸设备优化 */
@@ -356,69 +530,6 @@
}
}
/* 超小屏幕设备 */
@media (max-width: 575.98px) {
.container {
padding-left: 1rem;
padding-right: 1rem;
}
.hero-section {
padding: 80px 0 30px;
}
.hero-title {
font-size: 1.75rem;
}
.hero-features .col-6 {
flex: 0 0 50%;
max-width: 50%;
}
.hero-stats .col-4 {
flex: 0 0 50%;
max-width: 50%;
}
.hero-stats .col-4:nth-child(3) {
flex: 0 0 100%;
max-width: 100%;
margin-top: 0.5rem;
}
.btn {
font-size: 0.9rem;
padding: 0.6rem 1.2rem;
}
.modal-dialog {
margin: 0.5rem;
}
.demo-header {
padding: 2rem 0;
padding-top: 120px;
}
.demo-header h1 {
font-size: 2rem;
}
.demo-nav-item {
font-size: 0.85rem;
padding: 0.75rem;
}
.metric-number {
font-size: 1.75rem;
}
.chart-container {
height: 200px;
}
}
/* 打印样式优化 */
@media print {
.navbar,