function applyDynamicStyles (prefix, property) {
const elements = document.querySelectorAll(`[class*="${prefix}["]`);
const styleElement = document.createElement('style');
document.head.appendChild(styleElement);
const styleSheet = styleElement.sheet;
const addedClasses = new Set();
elements.forEach(element => {
const className = element.className;
const regex = new RegExp(`${prefix}\\[(.*?)\\]`);
const match = className.match(regex);
if (match) {
const value = match[1];
const sanitizedValue = value.replace(/[^a-zA-Z0-9-]/g, "");
const dynamicClass = `${prefix}${sanitizedValue}`;
if (!addedClasses.has(dynamicClass)) {
styleSheet.insertRule(
`.${dynamicClass} { ${property}: ${value}; }`,
styleSheet.cssRules.length
);
addedClasses.add(dynamicClass);
}
element.classList.add(dynamicClass);
}
});
}
document.addEventListener("DOMContentLoaded", () => {
applyDynamicStyles("mt-", "margin-top");
applyDynamicStyles("mb-", "margin-bottom");
applyDynamicStyles("mr-", "margin-right");
applyDynamicStyles("wt-", "width");
applyDynamicStyles("ht-", "height");
applyDynamicStyles("b-r-", "border-radius");
});
用法
<div class="mt-[60px] wt-[1400px] ht-[820px]">