JS實現(xiàn)css主題樣式切換:動態(tài)改變引入的css文件

CSDN鏈接

一個頁面要顯示不同的主題風格,就需要寫不同的css文件;?

在做不同css文件相互切換時,首先要了解link標簽中的rel屬性;?

rel屬性值:

alternate文檔的替代版本(比如打印頁、翻譯或鏡像)。

stylesheet 文檔的外部樣式表。

start 集合中的第一個文檔。

next 集合中的下一個文檔。

prev 集合中的上一個文檔。

contents 文檔的目錄。

index 文檔的索引。

glossary 在文檔中使用的詞匯的術(shù)語表(解釋)。

copyright 包含版權(quán)信息的文檔。

chapter 文檔的章。

section 文檔的節(jié)。

subsection 文檔的小節(jié)。

appendix 文檔的附錄。

help 幫助文檔。

bookmark 相關(guān)文檔。

一般我們在頁面中引入樣式使用的屬性是stylesheet;如:?

< link rel=’stylesheet’ type=’text/css’ href=’a.cc’>?

這里我們要用到alternate屬性,用來替換css文件:?

html:

```

<!DOCTYPE HTML>

<html>

<head>

<meta charset="utf-8">

<title>CSS主題切換</title>

<link rel="stylesheet" type="text/css" href="a.css" title="a">

<link rel="alternate stylesheet" type="text/css" href="b.css" title="b">

</head>

<body>

? ? <div class="main">

? ? ? ? <div class="con">

? ? ? ? ? ? <input type="button" id="sheet-a" value="主題a" />

? ? ? ? ? ? <input type="button" id="sheet-b" value="主題b" />

? ? ? ? </div>

? ? </div>

</body

</html>

```

其中第一個link標簽中的rel屬性值為stylesheet,就是當前頁面所加載顯示的css樣式文件;?

第二個alternate stylesheet就是用來做替換用的,寫在head中時不會被顯示出來,但是會重服務(wù)器中加載到瀏覽器中;?

這時候就需要寫一個javascript方法來做觸發(fā),替換;

```

// 對切換主題的按鈕綁定事件,用來做觸發(fā)document.getElementById("sheet-a").addEventListener("click",function(){ setStyleSheet("a");

});

document.getElementById("sheet-b").addEventListener("click",function(){? ? setStyleSheet("b");

});/** * 查找所有的link標簽,找到符合條件的css進行切換 * @title:需要切換的css文件名稱,也可以是某值,主要是能夠找到所要切換的link標簽 **/functionsetStyleSheet(title){?

? ? // 首先找到DOM中所有的link標簽? ? var link_list = document.getElementsByTagName("link");

? ? if ( link_list ){

? ? ? ? for ( var i=0;i<link_list.length;i++ ){

? ? ? ? ? ? // 要找到所有l(wèi)ink中rel屬性值包括style的,也就是包括stylesheet和alternate stylesheet;? ? ? ? ? ? if ( link_list[i].getAttribute("rel").indexOf("style") != -1 ){

? ? ? ? ? ? ? ? // 將符合條件的link的disabled的屬性設(shè)為true,都改為禁用;? ? ? ? ? ? ? ? link_list[i].disabled = true;

? ? ? ? ? ? ? ? // 然后判斷l(xiāng)ink標簽中的title屬性,找到我們需要替換的css文件? ? ? ? ? ? ? ? // 找到后將該link的disabled改為啟用;? ? ? ? ? ? ? ? if ( link_list[i].getAttribute("title") === title){

? ? ? ? ? ? ? ? ? ? link_list[i].disabled = false;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? }

};

```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容