如何在不改變頁面顏色模式的情況下,通過JavaScript獲取Bootstrap中其他主題模式的CSS變量值?

如何在不改變頁面顏色模式的情況下,通過JavaScript獲取Bootstrap中其他主題模式的CSS變量值?

JavaScript讀取bootstrap主題css變量

Bootstrap利用CSS變量(custom properties)來管理不同主題模式(例如light和dark)下的顏色值。本文探討如何在不改變當前頁面主題的情況下,通過JavaScript獲取其他主題模式下的CSS變量值。

直接使用window.getComputedStyle只能獲取當前應用的樣式值。要獲取其他主題模式的變量值,需要解析CSS文件內容。假設Bootstrap CSS內容已加載到名為cssContent的字符串變量中,例如:

:root, [data-bs-theme=light] {   --bs-body-color: #212529; }  [data-bs-theme=dark] {   --bs-body-color: #dee2e6; }

我們可以使用正則表達式提取特定主題模式下的變量值:

function getThemeColor(cssContent, themeSelector, variableName) {   const regex = new RegExp(`${themeSelector}s*{s*--${variableName}s*:s*([^;]*)s*;`);   const match = cssContent.match(regex);   return match ? match[1].trim() : NULL; }  const cssContent = ` :root, [data-bs-theme=light] {   --bs-body-color: #212529; }  [data-bs-theme=dark] {   --bs-body-color: #dee2e6; } `;  const lightColor = getThemeColor(cssContent, '[data-bs-theme=light]', 'bs-body-color'); const darkColor = getThemeColor(cssContent, '[data-bs-theme=dark]', 'bs-body-color');  console.log('Light theme color:', lightColor); // 輸出: #212529 console.log('Dark theme color:', darkColor);  // 輸出: #dee2e6

getThemeColor函數接收CSS內容、主題選擇器(例如'[data-bs-theme=light]’)和變量名作為參數,返回匹配的變量值。 該方法通過正則表達式匹配CSS規則,并提取變量值。如果沒有找到匹配項,則返回null。 這種方法可以有效地從CSS字符串中提取不同主題模式下的CSS變量值,而無需修改頁面樣式。 需要注意的是,實際應用中需要獲取真實的Bootstrap CSS內容,而不是像示例中那樣直接定義一個字符串。

立即學習Java免費學習筆記(深入)”;

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享