JavaScript編寫css自定義屬性的示例代碼
一、自定義屬性
是在 CSS 中定義的變量,以 --開頭。它們可以存儲顏色、尺寸、字體等任何 CSS 值,并且可以在整個文檔中重復(fù)使用。
:root { --primary-color: #3498db; --font-size: 16px; } body { color: var(--primary-color); font-size: var(--font-size); }
二、定義自定義屬性
自定義屬性通常在 :root
選擇器中定義,這樣它們就可以在整個文檔中全局使用。不過,你也可以在任何選擇器中定義自定義屬性,使其作用域僅限于該選擇器及其子元素局部。
/* 全局定義 */ :root { --main-bg-color: #f0f0f0; } /* 局部定義 */ .header { --header-height: 60px; height: var(--header-height); }
三、使用自定義屬性
使用 var()
函數(shù)來引用自定義屬性
.button { background-color: var(--primary-color); padding: var(--padding, 10px); /* 提供默認值 */ }
四、JS動態(tài)修改自定義屬性
const element = document.querySelector('.container'); element.style.setProperty('--local-color', '#0000ff'); // 修改局部變量 document.documentElement.style.setProperty('--global-color', '#00ffff'); // 修改全局變量
五、應(yīng)用
<template> <div ref="leftBg" class="left-bg"></div> <button @click="updateTitleImageClass">切換偽類圖片</button> </template> <script setup> import { ref, onMounted } from 'vue'; const leftBg = ref(null); const systemTitles = ['cat1', 'cat2', 'cat3']; let currentTitleIndex = 0; const getBackgroundSize = (title) => { // 根據(jù)標題返回不同的背景大小 switch (title) { case 'cat1': return 'contain'; case 'cat2': return 'cover'; case 'cat3': return 'auto'; default: return 'cover'; } }; const images = {}; const loadImages = async () => { for (const title of systemTitles) { try { const response = await fetch(`/${title}/title.jpg`); if (!response.ok) { throw new Error(`Failed to fetch image for ${title}`); } const blob = await response.blob(); images[`/${title}/title.jpg`] = URL.createObjectURL(blob); } catch (error) { console.error(`Error loading image for ${title}:`, error); } } }; onMounted( async () => { await loadImages(); updateTitleImageClass(); } ); const updateTitleImageClass = async () => { if (!leftBg.value) { console.error('沒有找到leftBg節(jié)點'); return; } const systemTitle = systemTitles[currentTitleIndex]; const imagePath = `/${systemTitle}/title.jpg`; // 根據(jù)系統(tǒng)標題獲取圖片路徑 if (!images[imagePath]) { console.log(`沒有找到對應(yīng)的圖片路徑: ${imagePath}`); return; } const imageUrl = images[imagePath]; // 獲取圖片路徑 // 設(shè)置自定義屬性 leftBg.value.style.setProperty('--background-image', `url(${imageUrl})`); const backgroundSize = getBackgroundSize(systemTitle); leftBg.value.style.setProperty('--background-image-size', backgroundSize); // 切換到下一個標題 currentTitleIndex = (currentTitleIndex + 1) % systemTitles.length; }; </script> <style lang="scss" scoped> .left-bg { width: 100%; height: 100px; position: relative; &::before { content: ''; display: block; background-image: var(--background-image); background-size: var(--background-image-size, cover); background-position: center; background-repeat: no-repeat; width: 100px; height: 100%; position: absolute; top: 0rem; left: 0rem; } } </style>
到此這篇關(guān)于JavaScript編寫css自定義屬性的示例代碼的文章就介紹到這了,更多相關(guān)JavaScript css自定義屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript常用正則驗證函數(shù)實例小結(jié)【年齡,數(shù)字,Email,手機,URL,日期等】
這篇文章主要介紹了JavaScript常用正則驗證函數(shù),結(jié)合實例形式總結(jié)分析了javascript針對年齡、數(shù)字、Email、手機、URL、日期等格式常用正則驗證技巧,需要的朋友可以參考下2017-01-01js自定義trim函數(shù)實現(xiàn)刪除兩端空格功能
這篇文章主要介紹了js自定義trim函數(shù)實現(xiàn)刪除兩端空格功能,結(jié)合實例形式分析了javascript基于正則替換實現(xiàn)類似trim函數(shù)刪除字符串兩端空格的相關(guān)操作技巧,并附帶jQuery類似功能函數(shù)使用方法,需要的朋友可以參考下2018-02-02微信小程序開發(fā)中var that =this的用法詳解
這篇文章主要介紹了微信小程序開發(fā)中var that =this的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01