换肤原理,准备N套皮肤CSS,放在webroot/css/red/test.css, webroot/css/blue/test.css……
程序员只需要通过Cookie来控制red, blue这里的目录,将这里目录变成变量即可,单页面通过DOM操作Link即可实现,框架页面同样,通过递归即可实现全站换肤,以下为JS代码
/*
保存Cookie
c_name--key
value---value
默认时长为一年
*/
function setCookie(c_name, value, expiredays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : "; expires=" + exdate.toGMTString());
}
/*
获取Cookie,根据c_name--key值来获取
*/
function getCookie(c_name) {
if (document.cookie.length > 0) {
var c_start = document.cookie.indexOf(c_name + "=");
if (c_start != -1) {
c_start = c_start + c_name.length + 1;
var c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) {
c_end = document.cookie.length;
}
return unescape(document.cookie.substring(c_start, c_end));
}
}
return "";
}
/*
递归换肤
*/
function changeSkin(winObj, cssPath) {
var frames = winObj.frames;
for (var i = 0; i < frames.length; i++) {
//证明是该页面是框架页面
//alert(frames[i].name + ":" + frames[i].frames.length);
if (frames[i].frames.length > 0) {
//判断页面中是否存在iframe
var iframes = frames[i].document.getElementsByTagName("iframe");
if(iframes.length > 0){//如果页面含有iframe,那么此页面也需要换肤
var linkObj = frames[i].document.getElementById("style"); //获取link对象
if (linkObj != null) {
linkObj.href = basePath + "/css/" + cssPath + "/test.css";
}
}
//alert("iframes:" + iframes.length);
changeSkin(frames[i], cssPath);//递归换肤
} else {
//非框架页面,换肤
var linkObj = frames[i].document.getElementById("style"); //获取link对象
if (linkObj != null) {
linkObj.href = basePath + "/css/" + cssPath + "/test.css";
}
}
}
}
/*
下拉框调用此方法
*/
function changeCss(winObj, cssPath) {
setCookie("cssPath", cssPath, 365); //设置cookie
changeSkin(winObj, cssPath); //换肤
}
方法准备好了以后,需要在共享页面(taglibs.jsp)加入以下代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ taglib prefix="page" uri="page-tag"%>
<%@ page isELIgnored="false"%>
<c:set var="basePath" value="${pageContext.request.contextPath}" />
<script type="text/javascript" src="${basePath}/script/skin.js"></script>
<script type="text/javascript">
var basePath = '${basePath}'; //基路径
var cssPath = getCookie("cssPath"); //获取默认皮肤路径
//判断用户Cookie中是否有路径,无采用默认,有采用用户的信息
if (cssPath != null && cssPath != ""){
document.write("<link href='${basePath}/css/" + cssPath + "/test.css' id='style' rel='stylesheet' type='text/css' />");
}else{
setCookie('cssPath',"blue",365);
document.write("<link href='${basePath}/css/blue/test.css' id='style' rel='stylesheet' type='text/css' />");
}
</script>
下拉框的调用:
<select onchange="changeCss(window.top,this.value)">
<option value="blue" selected="selected">
默认皮肤
</option>
<option value="red">
红海
</option>
<option value="green">
苍绿
</option>
</select>
分享到:
相关推荐
在本实例中,"后台框架页面换肤简单实例"可能包含了实现以上步骤的代码示例、说明文档或者演示页面。开发者可以通过学习这个实例,了解如何在实际项目中应用这些技术,为用户提供更好的交互体验。同时,这也涉及到...
许多前端开发框架,如Bootstrap、Angular Material、React和Vue.js,都提供了内置的主题系统,允许开发者轻松实现页面换肤功能。这些框架通常提供了一套完整的样式组件,用户只需更改主题变量即可改变整个应用的...
#### 多项目工程中的换肤实现 在多项目环境中实现换肤功能时,需要考虑不同项目之间的差异性和共通性。 1. **相同点**: - 所有项目共享相同的模板初始化文件,以统一浏览器的基础样式。 - 定义统一的class名称...
在"vue换肤,全屏,中英文切换框架"这个项目中,开发者已经整合了一些常见的功能特性,以便于快速搭建一个具备用户友好的PC端应用。以下是这个框架涉及的主要知识点: 1. **Vue组件化开发**:Vue的核心理念之一就是...
在本篇内容中,我们将深入探讨如何在JavaServer Faces (JSF) 2.0框架中实现换肤功能。JSF是一种用于构建Web应用程序的Java EE标准组件模型,而换肤功能则是提升用户体验的重要手段,它允许用户根据个人喜好选择不同...
在本文中,我们将深入探讨如何利用JavaScript(JS)来实现网页背景换肤的功能,类似于QQ空间的个性化设置。背景换肤是提升用户交互体验的重要手段,它允许用户根据个人喜好自定义网页的视觉样式,从而增加用户的参与...
换肤功能是现代移动应用提升用户体验的重要手段,它不仅涵盖了全局主题的更换,如节假日主题切换,还包括局部页面的个性化设置,如白天/夜间模式。iOS系统自iOS13开始引入暗黑模式,为实现动态换肤提供了基础。本文...
在Ajax程序中实现无刷新换肤功能是提升用户体验的重要手段,尤其是在ASP.NET 2.0框架下。这种技术允许用户更改网站的外观和感觉而无需重新加载整个页面,从而提供了流畅且快速的交互体验。本文将详细介绍如何在ASP...
总之,这个压缩包提供了关于Android应用中手指滑动切换页面和主题换肤的实现思路,包括触摸事件处理、主题资源管理和夜间模式切换。通过学习和理解这些代码,开发者可以提升自己的Android开发技能,为用户打造更友好...
4. 桌面应用:在Windows和macOS等桌面平台上,换肤技术通常依赖于特定的框架或库,如Qt、WPF或JavaFX,它们提供了丰富的界面元素和样式控制。 四、换肤技术的挑战与解决方案 1. 性能优化:大量更换皮肤资源可能...
标题 "AntDesign最简单的动态换肤方案" 指向的是使用Ant Design框架实现应用程序的动态主题切换功能。Ant Design是阿里巴巴开源的一款基于React的UI组件库,它提供了丰富的界面设计元素和良好的交互体验,广泛应用于...
- 如今许多前端框架(如React、Vue或Angular)和库(如jQuery)提供了便捷的方法来管理CSS和用户设置,简化换肤功能的实现。 7. **代码结构与模块化**: - 良好的源码组织结构能让代码易于维护和扩展。换肤功能...
6. **移动办公支持**:Jeecg框架兼容移动设备,能适应不同终端的展示需求,实现了移动办公的无缝对接。 7. **插件化设计**:Jeecg采用插件化设计,各个功能模块独立,方便扩展和维护,降低系统耦合度。 在文档...
【标题】"若依登录页面改造源码资源"是一个针对Vue.js框架的登录页面开发项目,其中包含了Vue组件化的登录界面、验证码实现以及背景图片素材。这个资源旨在帮助开发者快速构建美观且功能齐全的登录系统。 【描述】...
本文将深入探讨如何利用JQuery实现页面换肤。 首先,我们需要了解JQuery的基本概念。JQuery是由John Resig于2006年创建的,它简化了JavaScript编程,通过链式操作、事件处理、动画和Ajax交互等特性,使得开发者能更...
本文将深入探讨网站换肤的设计原理,特别是针对.NET平台下的实现方法,包括CSS隔离、模板识别、主题应用、动态控件加载以及XML与XSLT的结合等技术点。 #### CSS隔离与样式控制 CSS(层叠样式表)是网站换肤的核心...
5. **使用CSS框架或库**:有些库如Bootstrap和Materialize提供了预设的皮肤,可以通过简单的类名添加或移除来实现换肤。 CSS换肤带来的好处包括: 1. **用户体验提升**:用户可以根据自己的喜好选择界面风格,提高...
在提供的"jqueryEasyui换肤技术"压缩包中,应该包含了这样的示例代码和演示页面。 总结来说,jQuery EasyUI的换肤技术主要涉及皮肤样式的引入、默认皮肤的移除、JavaScript设置的调整、自定义皮肤的创建以及动态...
界面换肤则涉及到软件的可定制性和用户界面设计的灵活性,这可能涉及到CSS、JavaScript或者更高级的框架如React或Vue等来实现动态换肤功能。 在实现这种功能时,开发人员通常会采用以下技术: 1. HTML/CSS: 用于...
在“Vue百度换肤”这个项目中,我们可以看到一个基于Vue.js的皮肤切换功能的实现,这对于初学者来说是理解Vue指令操作和实际应用的一个很好案例。 首先,我们来探讨Vue.js的核心知识点: 1. **数据绑定**:Vue.js...