Js部分:
思路: 参考图书:《JavaScript基础教程(第8版)》
、cookie和DOM操作调用样式表实现网页换肤
HTML代码部分
1、创建带ID的样式表链接:在HTML文件中,需要有一个带id的样式表链接,通过操作这个链接来切换不同的CSS文件。
<link href="css/main0.css" rel="stylesheet" type="text/css" id="cssfile">
2、创建皮肤选择按钮:添加一个包含多个li
元素的ul
列表,每个li
元素对应一种皮肤风格,并为每个li
元素添加onclick
事件以触发换肤功能。
<ul id="skin"> <li id="skin_0" title="灰色">灰色</li> <li id="skin_1" title="绿色">绿色</li> <li id="skin_2" title="黄色">黄色</li> <li id="skin_3" title="蓝色">蓝色</li> <li id="skin_4" title="粉色">粉色</li> <li id="skin_5" title="紫色">紫色</li> </ul>
JavaScript代码部分
1、定义换肤方法:创建一个名为setSkin
的方法,用于设置页面的皮肤样式,该方法接收一个参数n
,表示皮肤的编号,根据该编号切换到对应的CSS文件。
var skin = { setSkin: function(n) { var skins = document.getElementById("skin").getElementsByTagName("li"); for (i = 0; i < skins.length; i++) { skins[i].className = ""; // 初始化按钮状态 } this.setCookie(n); // 保存当前样式 document.getElementById("skin_" + n).className = "selected"; // 设置选中皮肤按钮的样式 document.getElementById("cssfile").href = "css/main" + n + ".css"; // 设置页面样式 }, setCookie: function(n) { var expires = new Date(); expires.setTime(expires.getTime() + 24 * 60 * 60 * 1000); // 设置cookie有效期为一天 var flag = "Skin_Cookie=" + escape(n) + ";expires=" + expires.toGMTString(); document.cookie = flag; }, readCookie: function() { var allCookie = document.cookie; var start = allCookie.indexOf("Skin_Cookie=") + "Skin_Cookie=".length; var end = allCookie.indexOf(";", start); if (end == 1) { end = allCookie.length; } return unescape(allCookie.substring(start, end)); } };
2、绑定换肤按钮事件:为每个皮肤选择按钮绑定onclick
事件,当用户点击某个按钮时,调用setSkin
方法并传入相应的皮肤编号。
window.onload = function() { var skin = document.getElementById("skin").getElementsByTagName("li"); for (i = 0; i < skin.length; i++) { skin[i].onclick = function() { skin.setSkin(this.id.substring(5)); } } skin.setSkin(skin.readCookie()); // 根据读取的cookie值设置皮肤样式 };
3、页面加载完成后设置皮肤样式:在页面加载完成后,根据从cookie中读取的值设置初始皮肤样式,如果cookie中没有保存的皮肤样式,则使用默认样式。
window.onload = function() { var skin = document.getElementById("skin").getElementsByTagName("li"); for (i = 0; i < skin.length; i++) { skin[i].onclick = function() { skin.setSkin(this.id.substring(5)); } } skin.setSkin(skin.readCookie()); // 根据读取的cookie值设置皮肤样式 };
FAQs
1、如何在不同浏览器中确保cookie的兼容性?
确保在不同浏览器中正确设置和读取cookie,可以使用一些第三方库如jscookie
,或者手动处理不同浏览器的兼容问题。
2、如何动态加载更多的皮肤选项?
可以通过AJAX请求从服务器获取更多的皮肤选项,并在客户端动态添加到皮肤选择列表中。
使用Cookie和DOM操作调用样式表
1. 基本概念
Cookie:一种存储在用户浏览器中的小文件,用于存储网站用户数据。
DOM操作:文档对象模型(Document Object Model)操作,用于动态修改网页内容。
样式表:CSS文件或内联样式,用于定义网页元素的样式。
2. 实现步骤
2.1 创建样式表
创建一个或多个CSS文件,用于定义不同主题的样式。
/* 默认主题样式.css */ body { backgroundcolor: #FFFFFF; color: #000000; } /* 深色主题样式.css */ body { backgroundcolor: #333333; color: #FFFFFF; }
2.2 HTML结构
在HTML文件中,引入上述CSS文件,并添加一个切换按钮。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF8"> <title>网页换肤</title> <link rel="stylesheet" href="default.css"> </head> <body> <h1>欢迎来到我的网页</h1> <button id="themetoggle">切换主题</button> <script src="script.js"></script> </body> </html>
2.3 JavaScript脚本
编写JavaScript脚本,用于切换主题和操作Cookie。
document.addEventListener('DOMContentLoaded', function() { var themeToggle = document.getElementById('themetoggle'); var currentTheme = getCookie('theme') || 'default'; function applyTheme(theme) { var links = document.getElementsByTagName('link'); for (var i = 0; i < links.length; i++) { if (links[i].rel === 'stylesheet') { links[i].href = theme + '.css'; } } } function setCookie(name, value, days) { var expires = ''; if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = '; expires=' + date.toUTCString(); } document.cookie = name + '=' + (value || '') + expires + '; path=/'; } function getCookie(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 null; } themeToggle.addEventListener('click', function() { var newTheme = currentTheme === 'default' ? 'dark' : 'default'; setCookie('theme', newTheme, 7); applyTheme(newTheme); currentTheme = newTheme; }); applyTheme(currentTheme); });
3. 归纳
通过以上步骤,我们可以使用Cookie和DOM操作来调用不同的样式表,从而实现网页换肤功能,用户可以通过点击按钮来切换主题,而网站会根据用户的偏好存储和读取主题设置。