亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

使用jQuery實現Web頁面換膚功能的要點解析

2019-11-20 10:04:52
字體:
來源:轉載
供稿:網友

網頁換膚是一門老技術了,老的現在都不怎么流行了。但是,有時候有些客戶就是想要這個換膚功能。于是就實踐做了一下網頁換膚,結果遇到了很多問題。

網頁換膚的基本原理

基本原理很簡單,就是使用 JS 切換對應的 CSS 樣式表。例如導航網站 Hao123 的右上方就有網頁換膚功能。除了切換 CSS 樣式表文件之外,通常的網頁換膚還需要通過 Cookie 來記錄用戶之前更換過的皮膚,這樣下次用戶訪問的時候,就可以自動使用上次用戶配置的選項。

那么基本工作流程就出來了:訪問網頁――JS 讀取 Cookie ――如果沒有,使用默認皮膚――如果有,使用指定皮膚;用戶點擊換膚選項――JS 控制替換對應的 CSS 樣式表――將皮膚選項寫進 Cookie 保存。

網頁換膚事先需要的準備

首先你可能要準備多套 CSS 樣式表文件,當點擊換膚按鈕的是,使用 JS 來切換對應的 CSS 樣式表。之后,就是在網頁上增加一個 ul li 列表,用 CSS 修飾一下做成換膚選項。例如:

2016512163555911.png (178×73)

下面我們就來看具體功能代碼。

實現點擊切換對應 CSS 功能

首先,我們的皮膚選項的 HTML 結構是這樣的

<div class=”skin”>  <ul>    <li class=”skin1 hover”></li>    <li class=”skin2”></li>    <li class=”skin3”></li>    <li class=”skin4”></li>  </ul></div>

然后在網頁的頂部偏下的位置放上一個空的 link 標簽,我們將會使用 jQuery 為這個 link 標簽賦予不同的 CSS 文件實現切換效果

復制代碼 代碼如下:

<link rel=”stylesheet” href=”” data-href=”style-Teal.css” type=”text/css” media=”screen” class=”skincsslittle” />

其中,我自定義了一個 data-href 屬性來存放系統默認的皮膚,這樣當頁面加載完成之后,如果 JS 沒有檢測到 Cookie 中的皮膚信息,就會把 data-href 中的內容賦值上去。之后就是大家熟悉的 jQuery 代碼:

jQuery(‘.skin li').click(function(){  var currentClass = jQuery(this).attr(‘class');  jQuery(this).siblings().removeClass(‘hover');  jQuery(this).addClass(‘hover');  var cc = currentClass.substring(0,5);  cc = convertcsslittle(cc);  var skincssurl = jQuery(‘.stylecssurl').attr(‘href').substring(0,jQuery(‘.stylecssurl').attr(‘href').indexOf(‘style')) + cc;  jQuery(‘.skincsslittle').attr(“href”,skincssurl);createCookie('skin',currentClass,365);});

大體的邏輯就是獲取到當前皮膚的 class 然后截取出來 skin* 然后通過一個函數得到其對應的 CSS 文件。skincssurl 記載的是網頁的非皮膚 CSS 文件,主要用來獲取當前網頁的 CSS 目錄 URL ,最后將混合好的 CSS 皮膚文件賦值準備好的空 link 中,實現換膚。

增加 Cookie 記錄皮膚功能

這里主要用到兩個自定義的函數,用來創建、讀取 Cookie 內容。

function readCookie(name) { var nameEQ = name + “=”; var ca = document.cookie.split(‘;'); for(var i=0;i < ca.length;i++) {  var c = ca[i];  while (c.charAt(0)==' ‘) c = c.substring(1,c.length);  if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return false;}function createCookie(name,value,days) {if (days) {var date = new Date();date.setTime(date.getTime()+(days2460601000));var expires = “; expires=”+date.toGMTString();}else expires = “”;document.cookie = name+”=”+value+expires+”; path=/“;}

你只需要把這兩個函數復制到 JS 代碼區域即可。在 jQuery 點擊換膚的功能代碼中,最后一句就創建了一個 Cookie,等網頁加載完成之后,我們需要使用 JS 讀取 Cookie 內容,然后使用 if 判斷:

var cccc = readCookie(“skin”);if (cccc){cccc = cccc.substring(0,5);jQuery(‘.'+cccc).addClass(‘hover').siblings().removeClass(‘hover');ccc = convertcsslittle(cccc);var skincssurl = jQuery(‘.stylecssurl').attr(‘href').substring(0,jQuery(‘.stylecssurl').attr(‘href').indexOf(‘style')) + ccc;jQuery(‘.skincsslittle').attr(“href”,skincssurl);}else{var currentcss = jQuery(‘.skincsslittle').attr(“data-href”);var currentcssname = currentcss.substring(currentcss.indexOf(‘style'),currentcss.length);currentcssname = defaulttoclass(currentcssname);jQuery(‘.'+currentcssname).addClass(‘hover').siblings().removeClass(‘hover');jQuery(‘.skincsslittle').attr(“href”,jQuery(‘.skincsslittle').attr(“data-href”));}

不要被這么亂的代碼嚇暈了,實際上邏輯很簡單,先獲取 Cookie 的皮膚值,如果有就為對應的皮膚選項高亮并且轉換得到對應的 CSS 皮膚文件賦值。如果沒有 Cookie 內容,就將 data-href 屬性中記錄的值賦值進去。

網頁換膚的閃爍問題和不完美解決方案

網頁換膚中,會遇到閃爍的問題。就是當點擊切換按鈕的時候,更換顏色或者圖片會閃爍一下?;蛘呤褂?Cookie 記錄之后,用戶使用了非默認的皮膚,也會閃爍一下,先出現默認的樣式然后再閃爍切換成用戶自己選擇的樣式。

這種影響用戶體驗的現象肯定要徹底消滅,但是一直沒有找到完美的解決方法。因為瀏覽器默認的是優先渲染 CSS 之后再加載 JS,特別是使用 Cookie 記錄的皮膚,先渲染現有的 CSS 之后,JS 才能讀取然后切換到皮膚。原理是這樣的,跟客戶協商之后,客戶給出了一個“無閃爍”的換膚效果示例,是 MG12 很早的一款主題。同樣的 Cookie 記錄等,但是他的作品確實沒有閃爍情況。

于是我就查看了他的 JS 代碼,沒有發現特殊之處,后來才想明白,這種閃爍問題,在圖片比較多的網頁中效果尤其明顯,因為切換的 CSS 需要加載圖片需要更多時間。而 MG12 那款主題中,切換的 CSS 文件只是改變了幾個 background 顏色,加載速度快到你眼球反應不過來就造成了不閃爍的假象。

不完美解決方案也是有的,點擊切換按鈕之后的閃爍情況,也是因為要加載圖片等,那么我們可以在訪問網頁的時候,使用預加載技術將其他皮膚圖片預加載或者使用 CSS Sprite 技術做成一張大圖片。

至于 Cookie 記錄閃爍的問題,這是瀏覽器渲染的硬傷,只能盡量減少換膚需要改變的地方,盡量壓縮圖片減小體積。然后優先加載沒有任何皮膚的基礎樣式,之后使用 JS 加載默認樣式或者讀取 Cookie 獲取的皮膚選項。這樣處理,訪問網頁的時候會先顯示白色或者無顏色,之后直接切換成之前選擇的皮膚的顏色,而不會從默認的顏色閃爍變成另一種顏色從而提升一定的用戶體驗。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91最新国产视频| 久久久精品国产一区二区| 久久电影一区二区| 国产精品国产亚洲伊人久久| 国产精品福利无圣光在线一区| 精品精品国产国产自在线| 亚洲电影免费观看高清完整版在线观看| 国产激情久久久| 日韩在线观看免费高清完整版| 欧美亚洲成人网| 91亚洲精品久久久| 成人性教育视频在线观看| 久久免费成人精品视频| 国产不卡av在线| 久久九九全国免费精品观看| 国产精品久久久久不卡| 国产高清视频一区三区| 91成人免费观看网站| 日韩av一区在线观看| 久久国产精品首页| 97视频在线播放| 欧美精品中文字幕一区| 午夜精品久久久99热福利| 国产精品激情av电影在线观看| 色香阁99久久精品久久久| 91影院在线免费观看视频| 欧美激情久久久久| 国产日产久久高清欧美一区| 国自产精品手机在线观看视频| 亚洲精品在线观看www| 亚洲视频欧洲视频| 欧美亚洲午夜视频在线观看| 亚洲欧美一区二区激情| 国产精品视频白浆免费视频| 亚洲一区二区三区视频播放| 欧美一级大胆视频| 国产精品极品尤物在线观看| 欧美肥臀大乳一区二区免费视频| 一区二区三区天堂av| 88国产精品欧美一区二区三区| 精品国产户外野外| 国产精品亚洲欧美导航| 亚洲全黄一级网站| 国产精品wwww| 中文字幕日韩在线观看| 色噜噜国产精品视频一区二区| 亚洲网站在线看| 精品国产31久久久久久| 国产成人精品亚洲精品| 国产精品久久久久久久av电影| 一区二区三区四区视频| 91国内产香蕉| 日韩电影大片中文字幕| 日韩电影免费观看在线观看| 91九色视频在线| 久久99国产综合精品女同| 中文字幕久久久av一区| 国产99视频精品免视看7| 亚洲最大的成人网| 色偷偷偷综合中文字幕;dd| 日韩av电影在线播放| 欧美www视频在线观看| 欧美专区国产专区| xvideos国产精品| 国产精品av电影| 亚洲国产天堂久久综合网| 久久精品成人欧美大片古装| 在线精品国产欧美| 日韩视频免费中文字幕| 日韩中文字幕网| 欧美激情一区二区三区久久久| 精品色蜜蜜精品视频在线观看| 欧洲永久精品大片ww免费漫画| 亚洲视频在线看| 亚洲xxx自由成熟| 亚洲第一页自拍| 亚洲图片欧洲图片av| 日韩激情视频在线播放| 91网站免费看| 欧美xxxx做受欧美| 亚洲性夜色噜噜噜7777| 91高清在线免费观看| 亚洲精品电影网站| 91免费国产网站| 成人精品在线观看| 日韩精品高清在线| 国产精品丝袜白浆摸在线| 国产精品一区二区久久久| 日韩网站免费观看| 欧美激情精品久久久久久大尺度| 亚洲一区二区日本| 精品在线小视频| 国产精品日韩电影| 久久精品影视伊人网| 欧美性高潮床叫视频| 欧美午夜美女看片| 92看片淫黄大片欧美看国产片| 亚洲精品色婷婷福利天堂| 国产精品美女www爽爽爽视频| 亚洲第一综合天堂另类专| 国产日韩欧美中文在线播放| 久久久天堂国产精品女人| 91香蕉嫩草影院入口| 国产一区二区欧美日韩| 第一福利永久视频精品| 国产在线视频2019最新视频| 色偷偷av亚洲男人的天堂| 日韩av在线精品| 欧美在线观看一区二区三区| 亚洲片国产一区一级在线观看| 久久久久免费视频| www高清在线视频日韩欧美| 亚洲一区二区三区成人在线视频精品| 色伦专区97中文字幕| 清纯唯美亚洲激情| 欧美黑人一级爽快片淫片高清| 欧美性xxxx极品hd欧美风情| 中文字幕日韩有码| 亚洲欧洲日本专区| 精品一区二区三区三区| 亚洲国产精彩中文乱码av| 久久精品国产2020观看福利| 日韩有码在线电影| 日韩在线视频导航| 亚洲欧美另类在线观看| 亚洲国产精品小视频| 日韩成人在线播放| 日韩中文在线观看| 欧美亚洲日本网站| 久久久人成影片一区二区三区| 亚洲欧美国产精品专区久久| 亚洲欧美中文日韩v在线观看| 亚洲视频axxx| 精品香蕉在线观看视频一| 亚洲尤物视频网| 国产成人亚洲综合| 亚洲一区精品电影| 97在线视频免费| 久久综合伊人77777| 精品亚洲一区二区三区在线播放| 亚洲精选中文字幕| 欧美日韩高清在线观看| 国内精品视频一区| 国产香蕉精品视频一区二区三区| 91国产高清在线| 亚洲aa在线观看| 福利一区福利二区微拍刺激| 中文字幕精品—区二区| 日韩av在线免费观看一区| 在线性视频日韩欧美| 亚洲乱码国产乱码精品精| 欧美日韩国产限制| 亚洲色图av在线| 97色在线观看免费视频| 精品中文视频在线| 欧美在线精品免播放器视频| 久久久最新网址| 中国人与牲禽动交精品| 欧美黑人一级爽快片淫片高清| 中文字幕av一区二区| 欧美国产极速在线| 久久久久999| 午夜精品在线观看| 国产亚洲视频在线|