首页 > 其他分享 >网站的主题和皮肤

网站的主题和皮肤

时间:2024-01-16 18:24:08浏览次数:22  
标签:theme 网站 主题 皮肤 runat server Theme Label Page

原文链接:https://www.pianshen.com/article/1051540568/

一、简介:

利用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了。

 

在哪里添加Page_PreInit事件?

 

一.在页面的cs类当中写 override vs会智能提示重写OnPreInit
C# code

    protected override void OnPreInit(EventArgs e)
    {
        this.Page.Theme = "blue";
    }

 

二.手动写入代码
protected override void OnPreInit(EventArgs e)
{
      this.Page.Theme = "blue";
}

标签:theme,网站,主题,皮肤,runat,server,Theme,Label,Page
From: https://www.cnblogs.com/Dongmy/p/17968251

相关文章

  • korean sexy pet网站爬取
    importrequestsfromlxmlimportetreecookies={'fb_external_id':'13ff5c994e2864ebef4d0a2dba4d0ba6985ad724fe2b9608a0de1237e082102d','_fwb':'57RgnHB1Jl9KS0nY5fIGRX.1704026411225','ec_ipad_devi......
  • 分享一个国内可用的ChatGPT网站,免费无限制,支持AI绘画
    背景ChatGPT作为一种基于人工智能技术的自然语言处理工具,近期的热度直接沸腾......
  • 【博客园主题美化】《 那些年换过的主题 - 04 》
    主题展示重点博客园一定要申请JS权限!这个美化使用的主题是 Custom;使用highlight.js渲染引擎!!!要禁用 主题本身的默认Css!!!基础主题设置如下:页面定制Css代码代码@keyframesspin3D{from{transform:rotate3d(0.5,0.5,0.5,360deg)}to{transform:rotate3d(0deg)}}#loading{he......
  • 【博客园主题美化】《 那些年换过的主题 - 03 》
    主题展示重点博客园一定要申请JS权限!这个美化使用的主题是 Custom;使用highlight.js渲染引擎!!!要禁用 主题本身的默认Css!!!基础主题设置如下:页面定制Css代码代码#loading{bottom:0;left:0;position:fixed;right:0;top:0;z-index:9999;background-color:#f4f5f5;pointer-ev......
  • jmeter压测网站、数据库、接口及分布式压测
    Jmeter是apache组织开发的基于java的压力测试工具。Jmeter可以用于对服务器、网络活对象模拟巨大的负载,来自不同压力类别下测试他们的强度和分析整体性能。另外,jmeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活......
  • 【博客园主题美化】《 那些年换过的主题 - 02 》
    主题展示重点博客园一定要申请JS权限!这个美化使用的主题是Custom;要禁用主题本身的默认Css!!!基础主题设置如下:博客侧边栏公告代码<script>window.$silence={avatar:'https://images.cnblogs.com/cnblogs_com/esofar/972540/o_avatar.jpg',fa......
  • 【博客园主题美化】《 那些年换过的主题 - 01 》
    主题展示重点博客园一定要申请JS权限!这个美化使用的主题是SimpleMemory;不禁用主题本身的默认Css!!!基础主题设置如下:博客侧边栏公告代码<!--头像--><divclass="av"><imgclass="but"itemprop="image"src="https://images.cnblogs.com/cnblogs_com/lingr7/1......
  • 调整jupyter notebook 背景主题颜色
    为保护视力,调整jupyternotebook背景颜色。有看过一些帖子也都试过一些背景,目前感觉比较舒适的背景,其设置过程如下。记录下来备忘。参考链接:https://blog.csdn.net/wh8514/article/details/81532286————————安装Jupyter主题:pipinstalljupyterthemes然后,更新Jup......
  • python网站创建016:BootStrap
    什么是BootStrap?:是一个别人写好的javascript和css的代码,如果在开发项目的时候省点事,就可以在它的基础上来修改使用使用教程:https://www.runoob.com/bootstrap/bootstrap-tutorial.html下载:https://getbootstrap.net/   下载之后解压,解压之后可以随意打开一个文件,比如cs......
  • 网站安全防护,改2个地方
    一、修改ssh端口。防止被扫描,端口改成大一点的,自己设定(注意不要占据已有的端口)二、root用户禁掉。在vps或者服务器上,建一个新用户,用新用户登录。(新用户的端口,也自己设定,同时注意防火墙放行该端口。)然后把root用户禁掉。进入/etc/ssh/目录,修改sshd_config文件。把PermitRootL......