类似tom网站给系统换肤的实现方法。

news/2024/5/15 14:16:00/文章来源:https://blog.csdn.net/weixin_30278237/article/details/98312191

首先,换肤设计要保证皮肤更改的信息能够存在cookie里,使得用户下次访问的时候还能够看到自己上次的设置。这里换肤我们用到的是通过js调用不同的样式。然而在我们正在做的系统中,我们用到了IFRAME,要保证整体页面的一致,我们还要考虑从父页面给IFRAM的子页面加载样式文件。下面先给出JS:

 

ContractedBlock.gifExpandedBlockStart.gifCode
function $(obj) {
    
return document.getElementById(obj);
}

var skin = {};

skin.addEvent 
= function() {
    
var skins = $("skin").getElementsByTagName("span");
    
for (i = 0; i < skins.length; i++) {
        skins[i].onclick 
= function() { skin.setSkin(this.id.substring(5)) };
    }
}
//设置Cookie值,可以参考我的博客http://www.cnblogs.com/shineqiujuan/archive/2008/09/17/1292647.html
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();
}
//以下是读Cookie值的方法,可以参考我的博客http://www.cnblogs.com/shineqiujuan/archive/2008/09/17/1292647.html
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;

}
//设置皮肤样式,其实是调用已经准备好的样式表
skin.setSkin = function(n) {
    
var skins = $("skin").getElementsByTagName("span");
    
for (i = 0; i < skins.length; i++) {
        skins[i].className 
= "";
    }
    skin.setCookie(n);
    
try {
        $(
"skin_" + n).className = "selected";
        $(
"cssfile").href = "css/all" + n + ".css";
        
//  iframe_left.document.getElementsByTagName("link")[0].href = "css/all" + n + ".css";
    }
    
catch (ex) {
        $(
"skin_" + 0).className = "selected";
        $(
"cssfile").href = "css/all" + 0 + ".css";
    
// iframe_left.document.getElementsByTagName("link")[0].href = "css/all" + 0 + ".css";
    }
}
//最先的入口,先读cookie
window.onload = function() {
    skin.setSkin(skin.readCookie());
    skin.addEvent();
}


整个系统中一共准备了6套样式,分别为all0,all1,...all5;在第一套样式中定义好系统默认的样式,其他的样式分别对要改变的元素进行不同的样式设置。
而在CSS当中也用到了简单的滑动门技术:

ContractedBlock.gifExpandedBlockStart.gifCode
 1None.gif#skin
 2ExpandedBlockStart.gifContractedBlock.gif{dot.gif}
{
 3InBlock.gif    margin-top:0px;
 4InBlock.gif    margin-left:10px;
 5InBlock.gif    margin-right:10px;
 6InBlock.gif    margin-bottom:10px;
 7InBlock.gif    padding-top:0px;
 8InBlock.gif    padding-left:5px;
 9InBlock.gif    padding-bottom:5px;
10InBlock.gif    padding-right:0px;
11InBlock.gif    list-style:none;
12InBlock.gif    border: 0px solid #CCCCCC;
13InBlock.gif    overflow:hidden;
14ExpandedBlockEnd.gif    }

15ExpandedBlockStart.gifContractedBlock.gif#skin li{dot.gif}{
16InBlock.gif    float:left;
17InBlock.gif    margin-right:5px;
18InBlock.gif    margin-top:0px;
19InBlock.gif    width:15px;
20InBlock.gif    height:15px;
21InBlock.gif    text-indent:-999px;
22InBlock.gif    overflow:hidden;
23InBlock.gif    display:block;
24InBlock.gif    cursor:pointer;
25InBlock.gif    background-image:url(../images/theme.gif);
26ExpandedBlockEnd.gif}

27ExpandedBlockStart.gifContractedBlock.gif#skin_0{dot.gif}{
28InBlock.gif    background-position:0px 0px;
29ExpandedBlockEnd.gif}

30ExpandedBlockStart.gifContractedBlock.gif#skin_1{dot.gif}{
31InBlock.gif    background-position:15px 0px;
32ExpandedBlockEnd.gif}

33ExpandedBlockStart.gifContractedBlock.gif#skin_2{dot.gif}{
34InBlock.gif    background-position:35px 0px;
35ExpandedBlockEnd.gif}

36ExpandedBlockStart.gifContractedBlock.gif#skin_3{dot.gif}{
37InBlock.gif    background-position:55px 0px;
38ExpandedBlockEnd.gif}

39ExpandedBlockStart.gifContractedBlock.gif#skin_4{dot.gif}{
40InBlock.gif    background-position:75px 0px;
41ExpandedBlockEnd.gif}

42ExpandedBlockStart.gifContractedBlock.gif#skin_5{dot.gif}{
43InBlock.gif    background-position:95px 0px;
44ExpandedBlockEnd.gif}

45ExpandedBlockStart.gifContractedBlock.gif#skin_0.selected{dot.gif}{
46InBlock.gif    background-position:0px 15px !important;
47ExpandedBlockEnd.gif}

48ExpandedBlockStart.gifContractedBlock.gif#skin_1.selected{dot.gif}{
49InBlock.gif    background-position:15px 15px !important;
50ExpandedBlockEnd.gif}

51ExpandedBlockStart.gifContractedBlock.gif#skin_2.selected{dot.gif}{
52InBlock.gif    background-position:35px 15px !important;
53ExpandedBlockEnd.gif}

54ExpandedBlockStart.gifContractedBlock.gif#skin_3.selected{dot.gif}{
55InBlock.gif    background-position:55px 15px !important;
56ExpandedBlockEnd.gif}

57ExpandedBlockStart.gifContractedBlock.gif#skin_4.selected{dot.gif}{
58InBlock.gif    background-position:75px 15px !important;
59ExpandedBlockEnd.gif}

60ExpandedBlockStart.gifContractedBlock.gif#skin_5.selected{dot.gif}{
61InBlock.gif    background-position:95px 15px !important;
62ExpandedBlockEnd.gif}

63None.gif
64ExpandedBlockStart.gifContractedBlock.gif/**//*End of css for skin*/

点击的图片如下:theme.gif
而在系统中显示的图片如下:111.bmp
相应的代码为:

Code
<ul id="skin">
<li id="skin_5" title="紫色">紫色</li>
<li id="skin_4" title="灰色">灰色</li>
<li id="skin_3" title="粉红">粉红</li>
<li id="skin_2" title="绿色">绿色</li>
<li id="skin_1" title="蓝色">蓝色</li>
<li id="skin_0" title="橙色">橙色</li>
</ul>

 

这样一来,就实现了系统的换肤效果。

转载于:https://www.cnblogs.com/shineqiujuan/archive/2008/09/17/1292595.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_720477.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL就事器知名网站中的运用量

2008 年4月18日&#xff0c;在Alexa安插的一次“Scaling MySQL -- Up or Out?” 的小组申辩中&#xff0c;MySQL、Sun、Flickr、Fotolog、Wkipedia、Facebook、YouTube等国际知名网站的DBA们&#xff0c;对其网站MySQL数据库就事器、Web就事器、缓存就事器的数目&#xff0c;M…

网站安全漏洞--大全

原文网址&#xff1a;网站安全漏洞--大全_IT利刃出鞘的博客-CSDN博客 简介 本文介绍网站常见的一些安全漏洞&#xff0c;包括&#xff1a;SQL 注入、越权操作、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、DDoS 攻击、JSON 劫持、暴力破解、HTTP 报头追踪漏洞、信息泄露、文件上传…

[存底]加速,加速,再加速:来自Google的网站加速技巧大全

原文&#xff1a;http://developer.51cto.com/art/200906/132210.htm 困扰许多网站所有者很久的一个问题是网站访问速度总是那么慢。想购买独立带宽&#xff0c;预算不允许&#xff0c;想购买CDN加速&#xff0c;价格又太贵。那有没有经济实惠的解决办法呢&#xff1f;从目前的…

python人工智能_Python爬虫学习教程 bilibili网站视频爬取!【附源码】

Python爬虫学习教程&#xff0c;万物皆可爬&#xff01;每个技术大牛都是从基础慢慢的提升上去的&#xff0c;基础知识越深以后的发展越牛&#xff01;学好python&#xff0c;才能玩转python&#xff0c;那到底怎么才能学好python&#xff1f;通过爬取b站案例带领你快速掌握爬虫…

ASP.NET : 如何为网站添加自定义的文件类型

我们知道&#xff0c;在ASP.NET网站中&#xff0c;默认页面的扩展名是aspx.要想实现在网站中提供特殊的文件类型&#xff0c;例如Test之类的,就可以考虑通过HttpHandler来实现。下面是一个小的例子 1. HttpHandlerusing System; using System.Collections.Generic; using Syste…

aspnetcore upload form提交_第八:网站网址提交给搜索引擎

第八&#xff1a;网站网址提交给搜索引擎网站更新了文章&#xff0c;如果你想搜索引擎快速收录网页&#xff01;把网址提交给搜索引擎&#xff0c;是一种辅助网页收录的技巧。会围绕着搜索引擎提交这个话题&#xff0c;一一的介绍网址提交的方法。★ 网址提交方式以百度为例&am…

网站用户登录验证:Servlet+JSP VS Struts书剑恩仇录

? 什么是Struts框架 –从不同的角度看待Struts框架 –Struts框架的优点 ? 下载安装Struts框架 –下载配置Struts框架 –测试Struts框架 –安装Struts应用程序 –访问Struts文档 ? Struts 中常用组件 –ActionServlet –Action –ActionForm –ActionMapping –ActionForward…

网站防御DDoS的方案--高防节点(高防IP)

原文网址&#xff1a;网站防御DDoS的方案--高防节点(高防IP)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用高防节点防御DDoS攻击。 本文包含的内容有&#xff1a;DDos的概念&#xff0c;高防节点的防御原理&#xff0c;提供高防节点的一些厂家&#xff0c;高防节点的配置…

linux 部署asp网站,Linux Ubuntu下部署Asp.net Core Web

Linux Ubuntu下部署Asp.net Core WebLinux Ubuntu下部署Asp.net Core Web使用的是Ubuntu14.04版本&#xff0c;.Net Core 版本2.1打开终端并运行以下命令&#xff1a;wget -q https://packages.microsoft.com/config/ubuntu/19.04/packages-microsoft-prod.deb -O packages-mic…

UX Pin - 一款在线界面设计网站

UXPorn首页上以Pinterest的风格聚合了很多优秀的UI设计&#xff0c;除了供大家参考学习外&#xff0c;也可以在UXPIN App中直接使用。 进入UXPIN App, 可以拖动各种元素到canvas上&#xff0c;添加用户交互事件&#xff0c;并支持自定义component, version control, team colla…

方配网站服务器 32位,方配网站服务器

方配网站服务器 内容精选换一换当您想在Internet上通过域名访问您的网站时&#xff0c;可以通过本操作将域名托管至华为云的云解析服务&#xff0c;并为域名添加解析记录。例如&#xff0c;搭建一个网站服务器&#xff0c;采用IPv4格式的弹性IP地址。如果想要实现通过域名“exa…

php网站怎么把上传的图片加载在头像上,JavaScript

js实现图片上传并正常显示项目经常会用到头像上传&#xff0c;那么怎么实现呢&#xff1f;首先是HTML布局&#xff1a;缩略图jquery方式&#xff0c;IE不支持&#xff0c;但IE会获得绝对的上传路径信息&#xff1a;function getObjectURL(file) {var url null ;if (window.cre…

b2c 多语言,3个可以让B2C外贸网站更成功的设计

让B2C外贸网站更具备竞争力&#xff0c;也可以从网站上的细节入手。人类是一种很复杂的动物&#xff0c;一些小设计往往能够直达内心&#xff0c;引导他们做出购买行为。下面5个小设计希望能够引起路过的电商朋友一些启发。行为召唤Call To Action充斥在各种购物环境中&#xf…

php手机网站视频上传播放器,TP中PC与手机端视频播放功能二次开发

原标题&#xff1a;TP中PC与手机端视频播放功能二次开发在使用ThinkPHP进行长沙网站开发中&#xff0c;发现新闻中的视频文件都不能正常播放。在DWPCMS开发的项目中存在同样问题&#xff0c;但PC端能正常播放。DWPCMS和TP的视频播放都是使用flash播放器&#xff0c;但Android(安…

360抢票 网站维护中 你的登录被踢了!

本来在超市犹豫到底该买哪种暖手袋&#xff0c;犹豫了差不多半个多小时&#xff0c;还没决定好&#xff0c;一看时间还有8分钟到10点&#xff0c;遂狂奔回寝室抢票。 结果&#xff0c;360抢票被12306秒了—— 猜测原因是12306的验证码改了&#xff08;变成动态的了……&#xf…

win2008服务器运行Linux,Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站...

前言App Store上的所有App应用以后将鼓励或者强制开启ATS功能。苹果的ATS(App Transport Security)对服务器硬性3点要求&#xff1a;① ATS要求TLS1.2或者更高&#xff0c;TLS 是 SSL 新的别称。② 通讯中的加密套件配置要求支持列出的正向保密。③ 数字证书必须使用sha256或者…

体验游戏编程网站

最近学习python&#xff0c;想要找点练习&#xff0c;在看《python核心编程》&#xff08;真是一本好书&#xff0c;非常详细&#xff0c;觉得看这一本书就够了&#xff0c;余下可以翻翻文档&#xff09;。觉得cf之类的虽然能用python提交但是重点不是在学习python上 。终于找到…

如何构建一个优秀的移动网站?谷歌专家教你25招(五)[转]

▌21、你的产品图像需要支持大图显示 顾客想要看看自己买的产品。在零售网站上&#xff0c;用户希望可以看到分辨率更高的产品图片&#xff0c;这样可以看到更多细节&#xff0c;如果网站不支持产品大图显示&#xff0c;肯定会让用户觉得非常失望。 关键要素&#xff1a;对于产…

Vue--解决官网网站404的问题

原文网址&#xff1a;Vue--解决官网网站404的问题_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Vue官网打开之后404的问题。 问题描述 之前收藏了Vue的官网网址&#xff0c;结果现在打开发现404了&#xff0c;如下图所示&#xff1a; 上图的网址是&#xff1a;https://cn.vuejs.…

虚拟服务器是否能查访问网站记录,服务器可以查询记录吗

服务器可以查询记录吗 内容精选换一换资源管理服务(Resource Management Service&#xff0c;简称“RMS”)为用户提供进行全局资源管理的能力&#xff0c;用户可以通过RMS来检索、存储、评估自己在云平台上的资源。裸金属服务器(Bare Metal Server&#xff0c;以下简称BMS)提供…