CSS Các phương pháp thực hành tốt nhất cho chủ đề XOOPS
Tổng quan
Phần tiêu đề “Tổng quan”Hướng dẫn này đề cập đến cách tổ chức CSS, kỹ thuật bố cục hiện đại và tối ưu hóa hiệu suất để phát triển chủ đề XOOPS.
Kiến trúc CSS
Phần tiêu đề “Kiến trúc CSS”Tổ chức tập tin
Phần tiêu đề “Tổ chức tập tin”themes/mytheme/css/├── style.css # Main stylesheet (imports others)├── base/│ ├── _reset.css # CSS reset/normalize│ ├── _typography.css # Font styles│ └── _variables.css # CSS custom properties├── components/│ ├── _blocks.css # Block styling│ ├── _buttons.css # Button styles│ ├── _forms.css # Form elements│ └── _navigation.css # Nav menus├── layout/│ ├── _header.css # Site header│ ├── _footer.css # Site footer│ ├── _sidebar.css # Sidebars│ └── _grid.css # Grid system└── modules/ # Module-specific overrides ├── _news.css └── _publisher.cssBiểu định kiểu chính
Phần tiêu đề “Biểu định kiểu chính”@import 'base/_variables.css';@import 'base/_reset.css';@import 'base/_typography.css';
@import 'layout/_grid.css';@import 'layout/_header.css';@import 'layout/_footer.css';@import 'layout/_sidebar.css';
@import 'components/_blocks.css';@import 'components/_buttons.css';@import 'components/_forms.css';@import 'components/_navigation.css';
@import 'modules/_news.css';@import 'modules/_publisher.css';Thuộc tính tùy chỉnh CSS
Phần tiêu đề “Thuộc tính tùy chỉnh CSS”:root { /* Colors */ --color-primary: #3498db; --color-primary-dark: #2980b9; --color-secondary: #2c3e50; --color-accent: #e74c3c;
--color-text: #333; --color-text-light: #666; --color-text-muted: #999;
--color-bg: #fff; --color-bg-alt: #f5f5f5; --color-border: #ddd;
/* Typography */ --font-family: system-ui, -apple-system, sans-serif; --font-family-heading: var(--font-family); --font-size-base: 16px; --line-height: 1.6;
/* Spacing */ --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem; --spacing-lg: 1.5rem; --spacing-xl: 2rem;
/* Layout */ --max-width: 1200px; --sidebar-width: 250px; --header-height: 60px;
/* Borders */ --border-radius: 4px; --border-width: 1px;
/* Shadows */ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.1); --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
/* Transitions */ --transition-fast: 150ms ease; --transition-normal: 300ms ease;}Chế độ tối
Phần tiêu đề “Chế độ tối”@media (prefers-color-scheme: dark) { :root { --color-text: #e0e0e0; --color-text-light: #b0b0b0; --color-bg: #1a1a1a; --color-bg-alt: #2d2d2d; --color-border: #444; }}
/* Manual toggle */[data-theme="dark"] { --color-text: #e0e0e0; --color-bg: #1a1a1a;}Bố cục hiện đại
Phần tiêu đề “Bố cục hiện đại”Lưới CSS cho bố cục trang
Phần tiêu đề “Lưới CSS cho bố cục trang”.page-container { display: grid; grid-template-columns: var(--sidebar-width) 1fr var(--sidebar-width); grid-template-areas: "header header header" "left main right" "footer footer footer"; gap: var(--spacing-lg); max-width: var(--max-width); margin: 0 auto; padding: var(--spacing-md);}
.site-header { grid-area: header; }.sidebar-left { grid-area: left; }.content-main { grid-area: main; }.sidebar-right { grid-area: right; }.site-footer { grid-area: footer; }
/* No left sidebar */.no-left-sidebar .page-container { grid-template-columns: 1fr var(--sidebar-width); grid-template-areas: "header header" "main right" "footer footer";}
/* No sidebars */.no-sidebars .page-container { grid-template-columns: 1fr; grid-template-areas: "header" "main" "footer";}Flexbox cho linh kiện
Phần tiêu đề “Flexbox cho linh kiện”.block-header { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-sm);}
.nav-menu { display: flex; flex-wrap: wrap; gap: var(--spacing-md); list-style: none; padding: 0;}Thiết kế đáp ứng
Phần tiêu đề “Thiết kế đáp ứng”Điểm dừng đầu tiên trên thiết bị di động
Phần tiêu đề “Điểm dừng đầu tiên trên thiết bị di động”/* Mobile first - base styles */.page-container { display: block; padding: var(--spacing-sm);}
/* Tablet */@media (min-width: 768px) { .page-container { display: grid; grid-template-columns: var(--sidebar-width) 1fr; gap: var(--spacing-md); }}
/* Desktop */@media (min-width: 1024px) { .page-container { grid-template-columns: var(--sidebar-width) 1fr var(--sidebar-width); gap: var(--spacing-lg); }}Truy vấn vùng chứa
Phần tiêu đề “Truy vấn vùng chứa”/* Modern container queries */.block { container-type: inline-size;}
@container (min-width: 300px) { .block-content { display: grid; grid-template-columns: repeat(2, 1fr); }}Tạo kiểu khối
Phần tiêu đề “Tạo kiểu khối”.block { background: var(--color-bg); border: var(--border-width) solid var(--color-border); border-radius: var(--border-radius); margin-bottom: var(--spacing-md); overflow: hidden;}
.block-title { background: var(--color-bg-alt); padding: var(--spacing-sm) var(--spacing-md); margin: 0; font-size: 1rem; font-weight: 600; border-bottom: var(--border-width) solid var(--color-border);}
.block-content { padding: var(--spacing-md);}
.block-content ul { list-style: none; padding: 0; margin: 0;}
.block-content li { padding: var(--spacing-sm) 0; border-bottom: var(--border-width) solid var(--color-border);}
.block-content li:last-child { border-bottom: none;}Hiệu suất
Phần tiêu đề “Hiệu suất”Quan trọng CSS
Phần tiêu đề “Quan trọng CSS”<head> <!-- Inline critical CSS --> <style> /* Above-the-fold styles */ body { font-family: system-ui; margin: 0; } .header { background: #fff; height: 60px; } </style>
<!-- Load full CSS async --> <link rel="preload" href="style.css" as="style" onload="this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="style.css"></noscript></head>Mẹo tối ưu hóa
Phần tiêu đề “Mẹo tối ưu hóa”- Giảm thiểu độ đặc hiệu - Tránh lồng sâu
- Sử dụng các thuộc tính hiện đại -
gapthay vì lề - Giảm số lần sơn lại - Sử dụng
transformcho hình động - Tải lười biếng - Chỉ tải mô-đun CSS khi cần
/* Good - low specificity */.block-title { }
/* Avoid - high specificity */.sidebar .block .block-header .block-title { }Tài liệu liên quan
Phần tiêu đề “Tài liệu liên quan”- Theme-Structure - Tổ chức file chủ đề
- Phát triển chủ đề - Hướng dẫn chủ đề hoàn chỉnh
- ../Templates/Smarty-Templates - Tích hợp mẫu
- ../../03-Module-Development/Block-Development - Tạo kiểu khối