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操作来调用不同的样式表,从而实现网页换肤功能,用户可以通过点击按钮来切换主题,而网站会根据用户的偏好存储和读取主题设置。