JavaScript編寫(xiě)css自定義屬性的示例代碼
一、自定義屬性
是在 CSS 中定義的變量,以 --開(kāi)頭。它們可以存儲(chǔ)顏色、尺寸、字體等任何 CSS 值,并且可以在整個(gè)文檔中重復(fù)使用。
:root { --primary-color: #3498db; --font-size: 16px; } body { color: var(--primary-color); font-size: var(--font-size); }
二、定義自定義屬性
自定義屬性通常在 :root
選擇器中定義,這樣它們就可以在整個(gè)文檔中全局使用。不過(guò),你也可以在任何選擇器中定義自定義屬性,使其作用域僅限于該選擇器及其子元素局部。
/* 全局定義 */ :root { --main-bg-color: #f0f0f0; } /* 局部定義 */ .header { --header-height: 60px; height: var(--header-height); }
三、使用自定義屬性
使用 var()
函數(shù)來(lái)引用自定義屬性
.button { background-color: var(--primary-color); padding: var(--padding, 10px); /* 提供默認(rèn)值 */ }
四、JS動(dòng)態(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">切換偽類(lèi)圖片</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ù)標(biāo)題返回不同的背景大小 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('沒(méi)有找到leftBg節(jié)點(diǎn)'); return; } const systemTitle = systemTitles[currentTitleIndex]; const imagePath = `/${systemTitle}/title.jpg`; // 根據(jù)系統(tǒng)標(biāo)題獲取圖片路徑 if (!images[imagePath]) { console.log(`沒(méi)有找到對(duì)應(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); // 切換到下一個(gè)標(biāo)題 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編寫(xiě)css自定義屬性的示例代碼的文章就介紹到這了,更多相關(guān)JavaScript css自定義屬性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Javascript下拉刷新的簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Javascript下拉刷新的簡(jiǎn)單實(shí)現(xiàn)過(guò)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02JavaScript常用正則驗(yàn)證函數(shù)實(shí)例小結(jié)【年齡,數(shù)字,Email,手機(jī),URL,日期等】
這篇文章主要介紹了JavaScript常用正則驗(yàn)證函數(shù),結(jié)合實(shí)例形式總結(jié)分析了javascript針對(duì)年齡、數(shù)字、Email、手機(jī)、URL、日期等格式常用正則驗(yàn)證技巧,需要的朋友可以參考下2017-01-01js自定義trim函數(shù)實(shí)現(xiàn)刪除兩端空格功能
這篇文章主要介紹了js自定義trim函數(shù)實(shí)現(xiàn)刪除兩端空格功能,結(jié)合實(shí)例形式分析了javascript基于正則替換實(shí)現(xiàn)類(lèi)似trim函數(shù)刪除字符串兩端空格的相關(guān)操作技巧,并附帶jQuery類(lèi)似功能函數(shù)使用方法,需要的朋友可以參考下2018-02-02PHP抓取HTTPS內(nèi)容和錯(cuò)誤處理的方法
這篇文章主要介紹了PHP抓取HTTPS內(nèi)容的實(shí)現(xiàn)方法,以及在抓取的時(shí)候遇到的一個(gè)HTTPS問(wèn)題的處理辦法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-09-09微信小程序開(kāi)發(fā)中var that =this的用法詳解
這篇文章主要介紹了微信小程序開(kāi)發(fā)中var that =this的用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01JavaScript檢測(cè)瀏覽器是否支持css3的屬性
這篇文章主要為大家詳細(xì)介紹了如何編寫(xiě)一個(gè) JavaScript 方法來(lái)檢測(cè)瀏覽器是否支持特定的 CSS3 屬性,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-12-12