国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端實現(xiàn)動態(tài)切換主題色-使用 css/less 動態(tài)更換主題顏色(換膚功能)或通過單擊更改背景顏色

這篇具有很好參考價值的文章主要介紹了前端實現(xiàn)動態(tài)切換主題色-使用 css/less 動態(tài)更換主題顏色(換膚功能)或通過單擊更改背景顏色。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

提示:以下是本篇文章正文內(nèi)容,主要描述使用 css/less 動態(tài)更換主題色(換膚功能)


前言

提示:使用 css/less 動態(tài)更換主題色(換膚功能),方法共通,不限制技術(shù)棧:

其實在日常項目開發(fā)中經(jīng)常會遇到有些用戶想要一些自定義的的主題色來滿足不同的視覺需求,這時候就需要通過動態(tài)更改主題色來實現(xiàn)預(yù)期的效果;

一、CSS中原生變量“--”和var()

示例:開始之前先稍微了解一下變量“--”和var(),在動態(tài)改變主題色中會經(jīng)常用到這兩個變量

@表示我們定義的的變量名稱

css中原生的變量定義語法是:--@

例如定義一個邊框顏色變量:?--border-color: #D9EEE2;

css中變量使用語法是:var(--@)

例如使用定義的邊框顏色變量:border: 0.1rem solid var(--border-color);

二、使用步驟

1、自定義樣式變量,定義css方法(可以定義多個css樣式)

要注意的是不管定義了幾個主題色,都要確保定義的變量名保持一致。

// theme.less

/*
 *這里為我們自定義主題色,可以根據(jù)自己的需求定義多組樣式
 *
*/

// 主題類型定義
:root {
  // 背景色
  --bg-color: #D9EEE2;
  --border-color: #D9EEE2;
  // 很多圖標(biāo)、border都用這個顏色
  --icon-color: #108372;
  // 按鈕背景色
  --button-bg-color: var(--dominant-color);
  // 選中字體和圖表顏色
  --active-font-color: #037181;
  // hover字體和圖表顏色
  --hover-font-color: var(--dominant-color);
  // logo
  --logo: url('你的圖片路徑')  no-repeat center center;

 ...
 ...
 ...
}


/* 這里假設(shè)為我們自定義的主題  */
:root[theme = 'defined'] {
  // 背景色
  --bg-color: pink;
  --border-color: pink;
  // 很多圖標(biāo)、border都用這個顏色
  --icon-color: pink;
  // 按鈕背景色
  --button-bg-color: pink;
  // 選中字體和圖表顏色
  --active-font-color: pink;
  // hover字體和圖表顏色
  --hover-font-color: var(--dominant-color);
  // logo
  --logo: url('你的圖片路徑')  no-repeat center center;

 ...
 ...
 ...
}

2、使用已定義的變量

使用其實很簡單,只要根據(jù)主題色動態(tài)改變的地方通過var()引用已經(jīng)定義的樣式變量就可以;

/*
 *  這里舉個簡單的例子 child.less(這里就是項目中引用的css文件)
 */

.root{

  .main{
    background:var(--bg-color);
    border:1px solid var(--border-color);
    
    ...
    
  }

    ...
}

3、用戶操作,切換對應(yīng)的主題

通過設(shè)置屬性自動匹配選擇顏色主題,會修改對應(yīng)的樣式;

1)、首先你跟據(jù)需求在特定位置定義好主題切換功能鍵;

這里是定義的結(jié)構(gòu)體,僅作參考(你可以根據(jù)自己項目的框架使用對應(yīng)的組件都是ok的,沒啥特殊要求)

? ? <div className={styles.root}>
? ? ? <Dropdown overlay={menu} placement="bottomCenter">
? ? ? ? <div>
? ? ? ? ? <i className="iconfont icon-them" />
? ? ? ? ? <span>主題</span>
? ? ? ? </div>
? ? ? </Dropdown>
? ? </div>

這里是菜單的主題曲部分,切換全靠它了;

// 這里的items就是你要定義的主題的種類,沒有key代表一個主題色標(biāo)識

? const menu = (
? ? <Menu
? ? ? selectable
? ? ? selectedKeys={theme}
? ? ? onClick={setThemeFun}
? ? ? items={[
? ? ? ? {
? ? ? ? ? label: '默認(rèn)色',
? ? ? ? ? key: 'default',
? ? ? ? },
? ? ? ? {
? ? ? ? ? label: '自定義',
? ? ? ? ? key: 'defined',
? ? ? ? },
? ? ? ]}
? ? />
? );

2)、然后通過對應(yīng)的方法設(shè)置對應(yīng)的的主題色;


/*主題色選擇后的回調(diào)*/
const setThemeFun =(e)=>{
// 這里其實就是將主題表示存在state里,在menu中展示,  默認(rèn) const [theme, setTheme] = useState(['default']);
 setTheme([e.key]); 
 //通過修改屬性,會用對應(yīng)的樣式
 document.documentElement.setAttribute('theme', e.key);
}

這里建議把切換主題色封裝到一個單獨的組件,便于維護(hù)處理
切記:初始化時要個給一個默認(rèn)值,這里就不做過多贅述了

4、特殊處理
1)本地存取主題色

其實用戶沒有的要求的話,一般都是主題的存儲本地,可以通過localStorage實現(xiàn)

// 在你需要的時候存在來
localStorage.setItem('theme', e.key);

//特定情況取出來使用就可以了
const defaultTheme = localStorage.getItem('theme');
 if (defaultTheme) {
      setTheme([defaultTheme]);
      document.documentElement.setAttribute('theme', defaultTheme);
 } 

注:本地存儲小科普

生存期

localStorage理論上來說是永久有效的,即不主動清空的話就不會消失,即使保存的數(shù)據(jù)超出了瀏覽器所規(guī)定的大小,也不會把舊數(shù)據(jù)清空而只會報錯。但需要注意的是,在移動設(shè)備上的瀏覽器或各Native App用到的WebView里,localStorage都是不可靠的,可能會因為各種原因(比如說退出App、網(wǎng)絡(luò)切換、內(nèi)存不足等原因)被清空。
sessionStorage的生存期顧名思義,類似于session,只要關(guān)閉瀏覽器(也包括瀏覽器的標(biāo)簽頁),就會被清空。由于sessionStorage的生存期太短,因此應(yīng)用場景很有限,但從另一方面來看,不容易出現(xiàn)異常情況,比較可靠。


2)接口存取主題色

這個就需要跟產(chǎn)品和后端確認(rèn)好方案,是否綁定用戶或者設(shè)備,通過對應(yīng)的接口實現(xiàn)主題色存取,原理和上述本地存儲大差不差,具體根據(jù)需求走就行了


總結(jié)

以上是使用純CSS控件切換主題顏色或通過單擊更改背景顏色,這個個人感覺可能前期樣式定義稍微繁瑣一點,其他都還可,相對來說易上手方便操作,關(guān)鍵是簡單,不過要注意以下幾點:
1、需求確定好是否需要主題色切換;
2、需要的話對一些字體圖標(biāo)的定義要跟ui和pd溝通好,構(gòu)建好對應(yīng)的iconfont工程,方便使用,因為你要清楚如果單純使用圖片,那切換主題色,變量定義就會很繁瑣,一句話怎么方便怎么好維護(hù)就怎么來;
3、一定要確保主題的定義的變量保持一致……
……

暫且就這么多,有什么好的方法后期再更新上來,希望對你有所幫助文章來源地址http://www.zghlxwxcb.cn/news/detail-552786.html

到了這里,關(guān)于前端實現(xiàn)動態(tài)切換主題色-使用 css/less 動態(tài)更換主題顏色(換膚功能)或通過單擊更改背景顏色的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 前端實現(xiàn)界面切換主題

    前端實現(xiàn)界面切換主題

    常用的主題切換實現(xiàn)方式之一,就是通過 link 標(biāo)簽的 rel 屬性來實現(xiàn)的 當(dāng) rel 標(biāo)簽的值是 alternate ,就代表該樣式是可以替換的 title 屬性要加就全加上或者全不加,因為 title 會導(dǎo)致系統(tǒng)直接識別成樣式文件,意思就是如果兩個樣式文件,第一個沒有加該屬性,第二個加了該屬

    2024年02月08日
    瀏覽(22)
  • Visual Studio Code(中文英切換,主題更換,等一些常用命令)

    Visual Studio Code(中文英切換,主題更換,等一些常用命令)

    目錄 切換成中文界面 切換回英文界面 主題更換 常用命令 安裝Visual Studio Code后,界面默認(rèn)以英語顯示。 VS Code支持將界面語言更改為其他語言。以下介紹如何將界面語言更改為中/英文。 點擊左側(cè)最下面的一個? 在輸入框中搜索 Chinese 點擊 Install 安裝 然后它會讓重啟下就好了

    2024年02月08日
    瀏覽(36)
  • 【前端面經(jīng)】CSS-less/sass/scss的區(qū)別和基本使用

    隨著Web開發(fā)的不斷發(fā)展,CSS預(yù)處理器變得越來越流行。它們?yōu)閃eb開發(fā)者提供了一種更高效、更簡便的CSS編寫方式。Less、Sass以及SCSS作為最受歡迎的三種CSS預(yù)處理器,它們都為CSS編寫提供了不同的特點和功能。 在本篇博客中,我們將會探討這三種預(yù)處理器之間的區(qū)別以及它們的

    2024年02月06日
    瀏覽(28)
  • 前端使用scale屬性結(jié)合CSS動態(tài)樣式實現(xiàn)動態(tài)的圖片縮放效果

    廢話不多說,直接上代碼: 示例一,使用css動態(tài)樣式結(jié)合scale進(jìn)行src圖片的縮放。 示例二,使用css動態(tài)樣式結(jié)合scale進(jìn)行background背景圖圖片的縮放。

    2024年01月15日
    瀏覽(26)
  • IOS課程筆記[4-5] 計算器實現(xiàn)與更換主題 的使用

    IOS課程筆記[4-5] 計算器實現(xiàn)與更換主題 的使用

    設(shè)置鍵盤格式為NumberPad 字符串與數(shù)字轉(zhuǎn)換方法 NSInteger num2 =[str2 integerValue]; UIAlertController 新版本彈窗 UIAlertView IOS9之前版本 UISwitch 開關(guān)組件 UISegmentedControl多選框 -addTarget綁定點擊或者切換事件 ##效果展示

    2024年02月07日
    瀏覽(20)
  • Vue + Element UI 前端篇(六):更換皮膚主題

    Vue + Element UI 前端篇(六):更換皮膚主題

    命令行主題工具 1.安裝主題工具 首先安裝「主題生成工具」,可以全局安裝或者安裝在當(dāng)前項目下,推薦安裝在項目里,方便別人 clone 項目時能直接安裝依賴并啟動。 2.安裝chalk主題 安裝白堊主題,可以從 npm 安裝或者從 GitHub 拉取最新代碼,這里從 npm 安裝。 3.初始化變量

    2024年02月09日
    瀏覽(31)
  • 前端三大Css處理器之Less

    Less是Css預(yù)處理器之一,分別有Sass、Less、Stylus這三個。 ? ? ? ? Less https://lesscss.org/ ? ? ? ? Less 是用JavaScript編寫的,事實上,Less是一個JavaScript庫,他通過混合、變量、嵌套和規(guī)則設(shè)置循環(huán)擴展了原生普通Css的功能。 Less的少數(shù)缺點之一是它 不支持函數(shù) 。 Less的語法與Scss十

    2024年02月10日
    瀏覽(22)
  • Vue3 + Vite + Css3切換主題

    Vue3 + Vite + Css3切換主題

    1、css3中變量的作用 一個系統(tǒng)或者說一個項目中,往往涉及到很多顏色,但是如果系統(tǒng)看起來樣式規(guī)整統(tǒng)一的話可能在色值方面偏靠一個色系,字體,顏色,背景顏色,圖標(biāo)顏色等等。 所有可以在css中定義統(tǒng)一的變量,就不用到處去改防止在修改的時候遺漏。 2、css3中如何聲

    2024年01月21日
    瀏覽(48)
  • ElementUI主題顏色動態(tài)切換并緩存

    今天給大家分享一下在Vue中使用ElementUI時,想切換主題顏色的兩種方式。 第一種:靜態(tài)改變項目中的主題顏色 比較簡單,稍微帶過: 項目中創(chuàng)建 element-variables.scss 文件,編寫內(nèi)容: 之后,在項目的入口文件中,直接引入以上樣式文件即可(無需引入 Element 編譯好的 CSS 文件

    2024年02月14日
    瀏覽(23)
  • 前端:css less語法 /deep/ 深度影響的用法

    前端:css less語法 /deep/ 深度影響的用法

    css中通常會在 style 標(biāo)簽內(nèi)添加?scoped?來避免父組件對子組件的影響,添加了之后只能修改當(dāng)前組件的樣式。 這樣做的原理是通過在打包的時候給每個樣式都添加一個獨一無二的hash值,從而避免父組件對子組件的樣式的影響。 添加后控制臺顯示的樣式就會像這樣: ? ? 設(shè)置

    2024年02月12日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包