CSS Building
Trong quá trình phát triển Giao diện hoặc Các Thành Phần Mở Rộng (Element), bạn thường xuyên lấy các giá trị Cấu hình (Config) như padding, margin, màu sắc từ Form builder mà người dùng thiết lập, sau đó chuyển tụi nó thành mã CSS Inline thực tế in ra màn hình.
SkillDo CMS v8 hỗ trợ mạnh mẽ class Theme\Supports\ThemeCssBuild để thực hiện việc chuyển đổi Dữ liệu mảng (Data input) thành Chuỗi CSS (String Styles) tự động quét đủ các giao diện (Desktop, Tablet, Mobile, Hover) một cách mượt mà nhất.
1. Khởi Tạo Vùng Bao CSS (Wrapper)
Khi bạn muốn xuất CSS, bạn thường cần giới hạn CSS đó chỉ áp dụng vào một Khối mã (Class) cụ thể để tránh xung đột trên toàn hệ thống trang. Wrapper giúp tự động bọc tên Class mẹ ở trước rễ cây bộ chọn.
use Theme\Supports\ThemeCssBuild;
// Cú pháp 1: Khởi tạo với Wrapper trực tiếp
$style = new ThemeCssBuild('.my-custom-box');
// Cú pháp 2: Hàm khai báo thiết lập sau
$style = new ThemeCssBuild();
$style->wrapper('#element-1234');
2. Truyền Biến CSS Variables (Root Vars)
Hàm cssVariables cho phép bạn tạo ra các biến CSS hiện đại (CSS Custom Properties). Hàm này sẽ gắn cứng biến vào Class Wrapper của bạn để các thành phần con thiết kế linh động thừa kế.
Cú pháp:
$style->cssVariables(string $key, string $value);
Ví dụ:
$style->cssVariables('--header-logo-height', '100px');
$style->cssVariables('--btn-color-primary', '#ff0000');
CSS Kết Quả:
.my-custom-box {
--header-logo-height:100px;
--btn-color-primary:#ff0000;
}
3. Tạo CSS bằng cssSelector() (Khuyên Dùng Trong V8)
Đây là phương pháp Nhanh, Mạnh và Ngắn rọn nhất để Map (Kết nối) dữ liệu từ Form Builder vào Selectors. Phương thức này tự động ánh xạ Data Input gọi đến class SkillDo\Cms\Template\Template để render style theo nhiều khung hình khác nhau (Desktop, Mobile).
Cú pháp:
$style->cssSelector(string|array $selectors, array ...$properties);
Ví dụ thực tế:
Bạn có một input color, spacing và radius từ Element. Bạn muốn nạp nó vào thẻ <a> nằm trong Box:
// Chọn vùng cần CSS
$selectors = '.box-item a';
// Cũng có thể nạp mảng nâng cao nếu muốn thay class thẻ lúc hover:
// $selectors = ['normal' => '.box-item a', 'hover' => '.box-item a:hover', 'active' => '.box-item a.active'];
$style->cssSelector($selectors,
[
'data' => $buttonData, // Mảng Data trả ra từ Cấu hình Nút của Form
'style' => 'cssButton' // Hàm Parser tương ứng của CMS
],
[
'data' => $paddingData, // Mảng Data Padding/Margin sinh ra từ Option inputSpacing
'style' => 'cssSpacing'
]
);