当前位置: 首页 > news >正文

[转]页面换肤功能浅析

原理:通过存取cookie和dom操作调用不同的样式表文件来实现前台换肤.

Html代码部分:
1.要有一个带id的样式表链接,我们要通过操作这个链接来调用不同的href.

<link href="css/main0.css" rel="stylesheet" type="text/css" id="cssfile" />

2.皮肤选择按钮(后台为每个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>

Js部分:
1.换肤方法

//设置cookie,按钮选中状态,页面皮肤
skin.setSkin=function(n){
        var skins =$("skin").getElementsByTagName("li");
        for (i=0;i<skins.length;i++)
        {
                skins[i].className="";//初始化按钮状态
        }
        skin.setCookie(n);//保存当前样式
        $("skin_"+n).className="selected";//设置选中皮肤按钮的样式
        $("cssfile").href="css/main"+n+".css";//设置页面样式
}

2.存取cookie

//将当前皮肤n存到cookie
skin.setCookie=function(n){
        var expires=new Date();
        expires.setTime(expires.getTime()+24*60*60*365*1000);
        var flag="Skin_Cookie="+n;
        document.cookie=flag+";expires="+expires.toGMTString();
}
//返回用户设置的皮肤样式
skin.readCookie=function(){
        var skin=0;
        var mycookie=document.cookie;
        var name="Skin_Cookie";
        var start1=mycookie.indexOf(name+"=");
        if(start1==-1){
                skin=0;//如果没有设置则显示默认样式
        }
        else{
                var start=mycookie.indexOf("=",start1)+1;
                var end=mycookie.indexOf(";",start);
                if(end=-1){
                        end=mycookie.length;
                }
                var values= unescape(mycookie.substring(start,end));
                if (values!=null)
                {
                        skin=values;
                }
        }
        return skin;
}

3.绑定换肤按钮事件

skin.addEvent=function(){
        var skins =$("skin").getElementsByTagName("li");
        for (i=0;i<skins.length;i++)
        {
                skins[i].οnclick=function(){skin.setSkin(this.id.substring(5))};
        }
}

4.页面加载完成后设置皮肤样式

window.οnlοad=function(){
        skin.setSkin(skin.readCookie());//根据读取cookie返回值设置皮肤样式
        skin.addEvent();//绑定按钮事件
}

 

转载于:https://www.cnblogs.com/hehaiyang/p/4070066.html

相关文章:

  • 域名在QQ微信被拦截怎么办 怎么样才能让被微信屏蔽的网址正常访问使用
  • Cocos2dX Android 编译出错
  • 关于Mobius反演
  • 常用的正则表达式
  • 四边形不等式优化-石子合并
  • 机器学习笔记(一)线性回归
  • 【OCP-12c】CUUG 071题库考试原题及答案解析(18)
  • 锋利的jQuery-7--编写插件基础知识
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • 【持续跟新】剑指Offer_Java实现
  • js,jq发送短信倒计时
  • Ubuntu软件包管理命令全面集锦
  • 资深项目经理推荐的几款免费/开源项目管理工具
  • Linux上mysql修改密码
  • V4L2视频输入框架概述
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • Bytom交易说明(账户管理模式)
  • JavaScript创建对象的四种方式
  • Java新版本的开发已正式进入轨道,版本号18.3
  • jdbc就是这么简单
  • spring security oauth2 password授权模式
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 规范化安全开发 KOA 手脚架
  • 记录一下第一次使用npm
  • 京东美团研发面经
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • Spring Batch JSON 支持
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #、%和$符号在OGNL表达式中经常出现
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (搬运以学习)flask 上下文的实现
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (算法)Game
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)winform之ListView
  • .FileZilla的使用和主动模式被动模式介绍
  • .net 简单实现MD5
  • .NET下的多线程编程—1-线程机制概述
  • .NET值类型变量“活”在哪?
  • .NET中使用Redis (二)
  • @RequestBody与@ModelAttribute
  • [《百万宝贝》观后]To be or not to be?
  • [20171101]rman to destination.txt
  • [Android] Amazon 的 android 音视频开发文档
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [ARC066F]Contest with Drinks Hard
  • [CF494C]Helping People
  • [Django 0-1] Core.Email 模块
  • [Hibernate] - Fetching strategies
  • [JavaScript]如何讓IE9, IE8, IE7, IE6關閉視窗時不彈出對話訊息