今天要规划一个项目的UI,重新回顾总计了一下asp.net 2.0下Theme的相关知识:
1.Theme是根目录下App_Themes,必须是这个名称
2.App_Themes下一级的每一个子文件夹为一个Theme
3.每个Theme文件夹下可以包含skin 文件、css 文件、图片文件、XML 文件、脚本文件以及子文件夹等。
Theme下要解释的,主要是CSS样式加载顺序和Skin文件和其加载顺序.
CSS样式:
asp.net 2.0下.可以在Page标签里面通过Theme和StylesheetTheme设置来指定样式.如果出现重复定义,具体执行顺序如下:
标签级别Style > Theme设置 > 页面级别Style > StylesheetTheme设置
其实CSS样式一样还是根据后出现的覆盖先出现的样式.出现这个顺序是因为Theme设置StylesheetTheme设置的加载位置不同,在<head runat="Server"></header>里面,Theme设置总出现在</head>之前,StylesheetTheme设置总出现在<head runat="Server">之后,而页面级别的Style则在中间.如下:
Code
<head id="ctl00_Head1">
<link href="App_Themes/default/default.css" type="text/css" rel="stylesheet" /><!--StylesheetTheme设置-->
<style type="text/css"><!--页面级别Style-->
.test
{
width:100%;
}
</style>
<link href="App_Themes/default2/default.css" type="text/css" rel="stylesheet" /><!--Theme设置-->
</head>
所以出现如此顺序也就不足为奇了.
另外还要介绍一下的就Skin文件.现看一个简单的例子:
(名为skintest.skin)
Code
<asp:Label runat="server" width="100"></asp:Label>
<asp:Label runat="server" SkinId="lbl" width="200"></asp:Label>
1.第一行定义会应用到所有Label
2.第二行定义会应用到标明skinId是lbl的Label
(加载顺序:如果用Theme设置,skin文件设置会覆盖本地控件设置,如果用StylesheetTheme设置,则本地控件设置覆盖StylesheetTheme设置)
另外还得说说的就是EnableTheming 属性,它指示是否为指定控件启用主题,默认为 true。大部分控件均具有此属性。值得注意的是:当使用 StylesheetTheme 来引用主题时,EnableTheming 的设置并不会禁用主题.
在 web.config 配置文件中可以为所有网页指定默认的主题文件<configuration> - <system.web> - <pages styleSheetTheme="default">.当然也可以设置Theme.个人建议采用styleSheetTheme设置,这样加载顺序合乎习惯.页面自由度比较大.当然,看情况需要咯.
大概就这些.以后想到什么再补充吧.