refactor: 死代码清理 + CDN SRI 加固 + 面包屑组件 + 代码规范文档
- 删除 7 个死模板文件 (products/services/quality/process/projects/customization/rfq) - 删除 13 个旧图片素材 (jpg/png/webp) - 新增 CDN SRI 完整性校验 (Bootstrap CSS/JS) - 新增面包屑导航模板组件 - 新增代码清理方案与代码审查标准文档 - 更新 README.md
@@ -1151,11 +1151,14 @@ textarea:focus-visible {
|
||||
.breadcrumb-nav {
|
||||
color: var(--b2b-ink-muted);
|
||||
font-size: 0.9rem;
|
||||
line-height: 1.6;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.breadcrumb-nav a {
|
||||
color: var(--b2b-ink-soft);
|
||||
text-decoration: none;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.breadcrumb-nav a:hover {
|
||||
@@ -1304,14 +1307,87 @@ textarea:focus-visible {
|
||||
|
||||
/* XL down — 1199px */
|
||||
@media (max-width: 1199px) {
|
||||
.b2b-header .offcanvas-body {
|
||||
display: block;
|
||||
padding: 2rem;
|
||||
/* Offcanvas mobile menu */
|
||||
.b2b-header .offcanvas {
|
||||
max-width: 320px;
|
||||
width: 85vw !important;
|
||||
height: 100dvh;
|
||||
height: 100vh;
|
||||
overflow-y: auto;
|
||||
background: var(--b2b-surface);
|
||||
border-left: 1px solid var(--b2b-line-light);
|
||||
box-shadow: var(--b2b-shadow-lg, 0 0 30px rgba(28,28,26,0.08));
|
||||
}
|
||||
|
||||
.b2b-header .offcanvas-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex-shrink: 0;
|
||||
border-bottom: 1px solid var(--b2b-line-light);
|
||||
padding: 1.25rem 1.5rem;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.b2b-header .offcanvas-title {
|
||||
font-weight: 600;
|
||||
font-size: 1.1rem;
|
||||
color: var(--b2b-ink);
|
||||
}
|
||||
|
||||
.b2b-header .offcanvas-body {
|
||||
flex: 1 1 auto;
|
||||
display: flex !important;
|
||||
flex-direction: column;
|
||||
padding: 0.5rem 1.5rem 2rem;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.b2b-header .offcanvas .navbar-nav {
|
||||
display: flex !important;
|
||||
flex-direction: column;
|
||||
gap: 0;
|
||||
margin: 0 0 1.5rem 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.b2b-header .offcanvas .nav-item {
|
||||
border-bottom: 1px solid var(--b2b-line-light);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.b2b-header .offcanvas .nav-link {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 0.85rem 0;
|
||||
color: var(--b2b-ink);
|
||||
font-size: 1.05rem;
|
||||
font-weight: 500;
|
||||
text-align: left;
|
||||
text-decoration: none;
|
||||
transition: color 180ms ease;
|
||||
}
|
||||
|
||||
.b2b-header .offcanvas .nav-link:hover,
|
||||
.b2b-header .offcanvas .nav-link:focus {
|
||||
color: var(--b2b-ink-soft);
|
||||
}
|
||||
|
||||
.b2b-header .offcanvas .nav-link.active,
|
||||
.b2b-header .offcanvas .current-menu-item > .nav-link {
|
||||
color: var(--b2b-ink);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.b2b-header .b2b-header-cta {
|
||||
align-self: flex-start;
|
||||
}
|
||||
|
||||
/* Navbar layout overrides for collapsed state */
|
||||
.b2b-header .navbar-nav {
|
||||
gap: 1.25rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.capability-grid {
|
||||
|
||||
|
Before Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 189 KiB |
|
Before Width: | Height: | Size: 190 KiB |
|
Before Width: | Height: | Size: 236 KiB |
|
Before Width: | Height: | Size: 281 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 340 KiB |
|
Before Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 344 KiB |
@@ -4,8 +4,6 @@
|
||||
document.documentElement.classList.remove('no-js');
|
||||
document.documentElement.classList.add('js');
|
||||
|
||||
var reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
||||
|
||||
function initStickyHeader() {
|
||||
var header = document.querySelector('#header');
|
||||
if (!header) return;
|
||||
@@ -16,11 +14,6 @@
|
||||
window.addEventListener('scroll', updateHeader, { passive: true });
|
||||
}
|
||||
|
||||
function initAnimations() {
|
||||
if (!window.AOS || typeof window.AOS.init !== 'function') return;
|
||||
window.AOS.init({ duration: reducedMotion ? 0 : 700, once: true, disable: reducedMotion });
|
||||
}
|
||||
|
||||
function initVideoLightbox() {
|
||||
if (!$.fn || typeof $.fn.colorbox !== 'function') return;
|
||||
$('.youtube').colorbox({ iframe: true, innerWidth: 960, innerHeight: 585, maxWidth: '95%', maxHeight: '90%' });
|
||||
@@ -39,7 +32,6 @@
|
||||
|
||||
$(function () {
|
||||
initStickyHeader();
|
||||
initAnimations();
|
||||
initVideoLightbox();
|
||||
initNavigation();
|
||||
});
|
||||
|
||||