搜尋
首頁web前端css教學即時切換網頁的CSS樣式實現

即時切換CSS樣式
用W3C標準建造的網站,從理論上來說可以做到完全的表現與結構相分離。打個比方,就是可以在不動骨架(結構,XHMTL)和肌肉(行為,Javascript)的前提下,徹底換一身皮(表現,CSS)。

當然,換皮之前你需要先按W3C標準建造你的網站,並且為它準備兩套表現不一樣的CSS。 “換皮”實質上就是“換CSS”,我們要做的,只是用某種方法讓瀏覽器載入另一套CSS,重新渲染頁面。方法有很多種,我就介紹最常見的三種。

方法一:什麼也不乾

啊?什麼也不乾?嗯,這個……準確地說是:就乾那麼一丁點兒 (你還真以為有這麼好的事兒呀……)。

假設我們有兩套CSS,分別封閉在兩個不同的文件中:a.css和b.css。然後在

和之間加入如下兩行XHTML代碼:


然後用你的Firefox打開這個頁面,在菜單欄中選擇:查看-> 頁面風格,應該可以看到如下的“風景」:

 

就這麼簡單,現在你就可以用Firefox來「換皮」了。 IE? IE沒這個功能…MS就是這麼拽,W3C「明文推薦」:要求瀏覽器提供給使用者自己選擇樣式表的權力,可它就不這麼幹。幸運的是這件事也不是太難雜,咱就代勞一下吧。

[separator]

方法二:Javascript

在方法一的基礎上,可以用Javascript的DOM方法訪問link對象,再將不需要的CSS設為“禁用(disabled)”,剩下的CSS就會被瀏覽器用來渲染頁面。腳本如下,請注意其中的註解:


然後在適當的地方呼叫這個函數,以本頁為例,加上以下兩個按鈕:

  

使用Javascript的好處是方便、快速、簡單,缺點也是很明顯的:很難做到全站的CSS切換,只能侷限在目前頁上。為了記憶使用者的選擇,可行的方案就是採用cookie。可是就算使用cookie,也需要在何時載入CSS,使用者沒有Javasciprt支援怎麼辦等問題上多做好些文章。所以不如用下面的方法——

方法三:伺服器端腳本

毫無疑問,最好的CSS切換器應該使用伺服器端腳本(PHP、ASP、JSP等)來開發。這樣做的好處是很明顯的:直接、高效、相容性好、可以記憶使用者選擇、甚至可以組合不同的CSS實現相當複雜的「皮膚」切換。

我這裡就用PHP為例,用其他的語言也都大同小異,對一般的開發人員來說不會有任何困難。

基本想法是這樣:使用者選擇一種“皮膚”,把使用者的選擇記入cookie(記入資料庫也一樣,不過這樣系統開銷會大一些),使用者造訪網站上的任何一個頁面時,再從cookie(或資料庫)中讀出先前使用者的選擇,載入對應的CSS檔案(這裡還是以方法一中講到的a.css和b.css為例)。

建立一個名為switcher.php的文件,內容如下:

 

這段腳本先讀取query數據,然後把參數style的值記入cookie ,最後返回上一頁。接下來我們就可以創建兩個用於切換樣式的連結了,並且放在合適的頁面上,例如首頁或用戶管理後台(注意把其中的site.com換成你的網域):

主題A
主題B  

點擊任一個鏈接,相應的就會把「a」或「b」記入cookie,然後就需要一段腳本來讀取這個cookie值並且輸出XHTML來引入對應的CSS:


 title="當前選擇的主題" href=".css" />

每一個需要切換樣式的頁面都要加上這段程式碼,所以直接把它加入網站的頭檔中就行了。當然你可以根據自己的需求修改這個腳本,但萬變不離其宗,總的思路應該是不變的。

  //預定義變數
  var i, links;

  //用DOM方法獲得所有的link元素
  links = document.getElementsByTagName("link");
  
  for(i=0; links[i]; i++) {

    //判斷此link元素的rel屬性中是否有style關鍵字
    //即此link元素是否為樣式表link
    //同時判斷此link元素是否含有title屬性
    if(links[i].getAttribute("rel").indexOf("style" ) != -1
  && links[i].getAttribute("title")) {

      //先不管三七二十一把它設為disabled
   再判斷它的title中是否有我們指定的關鍵字

      if(links[i].getAttribute("title").indexOf(title) != -1)


    i].disabled = false;

    }

  }
}


 

 title="主題A" href="a.css" />

 title="主題B" href="b.css" />

以上就是即時切換網頁的CSS樣式實現的內容,更多相關文章請關注PHP中文網(www.php.cn)!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
這麼多顏色鏈接這麼多顏色鏈接Apr 13, 2025 am 11:36 AM

最近有一系列有關顏色的工具,文章和資源。請允許我通過將它們四捨五之後關閉幾個標籤,以供您享受。

自動利潤在Flexbox中的工作方式自動利潤在Flexbox中的工作方式Apr 13, 2025 am 11:35 AM

羅賓以前已經介紹過這一點,但是我在過去的幾周里聽到了一些關於它的困惑,看到另一個人在解釋它,我想

移動彩虹移動彩虹Apr 13, 2025 am 11:27 AM

我絕對喜歡三明治網站的設計。在許多美麗的功能中,這些標題是滾動時帶有彩虹的下線。它不是

新年,新工作?讓我們做一個網格驅動的簡歷!新年,新工作?讓我們做一個網格驅動的簡歷!Apr 13, 2025 am 11:26 AM

許多流行的簡歷設計通過以網格形狀鋪設部分來充分利用可用的頁面空間。讓我們使用CSS網格創建一個佈局

將用戶擺脫過多習慣的一種方法將用戶擺脫過多習慣的一種方法Apr 13, 2025 am 11:25 AM

頁面重新加載是一回事。有時,當我們認為它沒有響應或認為新內容可用時,我們會刷新頁面。有時我們只是生氣

域驅動的設計與React域驅動的設計與ReactApr 13, 2025 am 11:22 AM

關於如何在React世界中組織前端應用的指導很少。 (只需移動文件,直到“感覺正確”,大聲笑)。真相

檢測非活動用戶檢測非活動用戶Apr 13, 2025 am 11:08 AM

大多數情況下,您並不真正在乎用戶是否積極參與或暫時非活動。不活躍,意思,也許他們

Wufoo ZapierWufoo ZapierApr 13, 2025 am 11:02 AM

Wufoo一直在集成方面非常出色。他們與特定應用程序(例如廣告系列顯示器,MailChimp和Typekit)進行集成,但他們也

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境