ASP.NET2.0中themes、Skins轻松实现网站换肤!

原创 2007年10月09日 12:01:00

可能有些朋友还不是很清楚themes、skins。下面先介绍下themes、skins.。

一、简介:
一看Themes、Skins这2名字就都知道是用来做什么的了吧,下面就说下它是做什么的(怎么都知道了还说,~_~),利用Themes我们可以很容易的更改控件、页面的风格,而不需要修改我们的代码和页面文件。
Themes文件被单独的放在1个App_Themes文件夹下面,与你的程序是完全分开的。

二、怎么使用Themes和Skins:
先看个非常简单的实例:

App_Themes/default/1.skin文件代码:

<asp:Label Font-Bold="true" ForeColor="Red" runat="server" />

default.aspx:文件代码:

<%@ Page Language="C#" Theme="default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  
<title>Page with Example Theme Applied</title>
</head>
<body>
  
<form id="form1" runat="server">
      
<asp:Label ID="Label1" runat="server" Text="Hello 1" /><br />
      
<asp:Label ID="Label2" runat="server" Text="Hello 2" /><br />
  
</form>
</body>
</html>

可以看到我们在default.aspx并没有写如何的控制style的代码,但运行取发现label上的字都变成了粗体红色了,这就是1个最基本的theme例子。

App_Themes文件夹:
App_Themes文件夹位于程序的根目录下,App_Themes下必须是Theme名称的子文件夹,子文件夹中可以包含多个.skin和.css文件。下图中建立2个Theme,名称分别为default和default2:


使用themes
1、在1个页面中应用Theme:
      如果想在某1个页面中应用Theme,直接在aspx文件中修改<%@ Page Theme="..." %>,比如你想这个页面应用default2 theme,设置<%@ Page Theme="default2" %>就OK

2、在所有页面应用同1个Theme:
      如果要在所有页面上使用相同的Theme,在web.config中的<system.web>节点下加上句<pages theme="..."/>

3、让控件不应用Theme:
        第1个例子中我们看到了2个Label的风格都变了,就是说.skin文件中的风格在页面上所有Label都起作用了。但有时我们希望某1个Label不应用.skin中的风格,这时你只需设置Label的EnableTheming属性为false的时候就可以了。
        也许你还想不同的label显示不同的风格,你只需设置label的SkinID属性就可以,见下面的实例:
 App_Themes/default/1.skin

<asp:label runat="server" font-bold="true" forecolor="Red" />
<asp:label runat="server" SkinID="Blue" font-bold="true" forecolor="blue" />

deafult.aspx

<%@ Page Language="C#" Theme="default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  
<title>Page with Example Theme Applied</title>
</head>
<body>
  
<form id="form1" runat="server">
      
<asp:Label ID="Label2" runat="server" Text="Hello 2" SkinID="Blue" /><br />
      
<asp:Label ID="Label3" runat="server" Text="Hello 3" /><br />
  
</form>
</body>
</html>

运行后就会发现2个label显示的风格不一样了。

4、其他方法:
前面已经说了在aspx文件头使用 <%@ Page Theme="..." %> 来使用theme,而用这个方法应用theme中的风格将会覆盖你写在aspx中的控件属性style。比如:
 App_Themes/default/1.skin

<asp:Label Font-Bold="true" ForeColor="Red" runat="server" />

default.aspx

<%@ Page Language="C#" Theme="default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<body>
  
<form id="form1" runat="server">
      
<asp:Label ID="Label1" runat="server" Text="Hello 1" /><br />
      
<asp:Label ID="Label2" runat="server" Text="Hello 2" ForeColor="blue" />
  
</form>
</body>
</html>

运行结果,所有的label的forecolor都为red。

 而使用<%@ Page StyleSheetTheme="..." %>应用theme就不会覆盖你在aspx文件中写的属性style:

控件应用style属性的顺序如下:
a、StyleSheetTheme引用的风格
b、代码设定的控件属性(覆盖StyleSheetTheme)
c、Theme引用的风格(覆盖前面2个)

theme中包含CSS:
        theme中也可以使用.css文件,当你把.css文件放在1个theme目录下后,在用到了这个theme的页面中自动会应用你的.css的

三、后台代码轻松为网站换府肤
        前面讲的都是在aspx文件或web.config中应用theme,而在blog这样的每个用户都有不同的skin的网站中用上面的方法来实现换skin显然是不方便的。
       下面就介绍怎么在后台代码中动态的引用theme来解决上面的情况,theme必须在page被请求的最早期就应用上,所以我们必须在Page_PreInit事件中写代码,代码很简单,就1句:
        Page.Theme = "..."; 
这里我们只要从数据库中去读取每个用户设置的不同theme名就可以轻松实现每个用户都有不同的skin了。

------------------------------------------
以上都是个人的看法和体会,如有不妥处,还请大家多多指点,谢谢!

 

前端基础案例分享:制作百度换肤效果

知识点:html加css,标签运用、样式讲解、静态开发布局、行业标准。JS基础、if判断、jq方法 Dom操作、逻辑思维。...
  • qq_39345165
  • qq_39345165
  • 2017年10月28日 13:12
  • 102

less给网站换肤

LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量、继承、运算、函数等,更方便CSS的编写和维护。 LESSCSS可...
  • queenzjl
  • queenzjl
  • 2016年12月07日 17:39
  • 1099

easyui切换主题

easyui 1.4.2下载地址:点击打开链接 主题有十多个吧 jquery cookie下载地址:点击打开链接 首先页面肯定先导入easyui相关的: 相关界面,我定义了一个切换主题的 ...
  • u012169499
  • u012169499
  • 2015年04月25日 17:29
  • 6567

JavaScript+CSS实现网页换肤功能

Html代码部分 1.要有一个带id的样式表链接,我们要通过操作这个链接来调用不同的href。 <link href="css/main0.css" rel="stylesheet" type="...
  • zhubin215130
  • zhubin215130
  • 2013年05月14日 16:56
  • 2525

仿造百度换肤功能的实现

换肤功能的应用很广,不管是搜索界面还是普通的管理界面等等,都可以进行设计并且应用换肤功能,起到更好的用户体验。 今天仿造百度的换肤功能,实现了基本的换肤功能,接下来将会为大家介绍如何实现。在设计界...
  • u010297791
  • u010297791
  • 2016年09月14日 09:17
  • 1640

ASP.NET2.0轻松搞定统计图表

主页:http://blog.csdn.net/21aspnet/           时间:2007.3.27 本文讲述如何绘制条形图,折线图,柱形图,面积图等常见图形。 效果图: ...
  • jsjpanxiaoyu
  • jsjpanxiaoyu
  • 2015年03月22日 01:23
  • 1483

js利用cookie实现网页的换肤

在浏览网页的时候,我们经常可以看到部分页面上具有换肤功能,点击改变皮肤且但我们下次浏览的时候,还会是我们选择的皮肤。作为菜鸟来说,这是一种赤裸裸的诱惑……今天查了相关资料,很粗糙的写了一个利用cool...
  • u014703834
  • u014703834
  • 2014年07月31日 16:32
  • 1383

ASP.NET2.0轻松解决统计图表

本文讲述如何绘制条形图,折线图,柱形图,面积图等常见图形。效果图:  手把手教程:原理:OWC是Office  Web  Compent的缩写,即Microsoft的Office  Web组件,它为...
  • limshirley
  • limshirley
  • 2017年04月17日 14:16
  • 91

jquery更换网页皮肤

要实现的效果 网页换肤原理 通过调用不同的样式表文件来实现不同皮肤的切换,并且要将换好的皮肤记入cookie中,这样用户下次访问时,就可以显示用户自定义的皮肤了。 实现功能 当皮肤选择按钮被单机...
  • yingzizizizizizzz
  • yingzizizizizizzz
  • 2017年06月04日 13:23
  • 559

android之换肤原理解读

如下是解读demo的链接,自行下载 https://github.com/fengjundev/Android-Skin-Loader 由于是开源的,而且对于想了解换肤功能的童鞋这个demo实...
  • zhongwn
  • zhongwn
  • 2016年10月22日 17:21
  • 3127
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET2.0中themes、Skins轻松实现网站换肤!
举报原因:
原因补充:

(最多只允许输入30个字)