惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
Apple Machine Learning Research
Apple Machine Learning Research
量子位
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
博客园 - 聂微东
博客园_首页
D
Docker
博客园 - 叶小钗
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
爱范儿
爱范儿
腾讯CDC
罗磊的独立博客
雷峰网
雷峰网
博客园 - Franky

博客园 - 黄耀辉

PMP应考知识点-合同类型以及选择要领 敏捷宣言及原则(中英对照) Scrum笔记 PMP(第六版)十大知识领域、五大项目管理过程组、49个过程矩阵 跟大家分享Entity Framework使用Code First方式如何连接到现有数据库 在SSIS中使用SharePoint列表作为源和目标 修复Win7桌面我的电脑右键属性的“管理”窗口打不开 将GAC中的程序集复制出来的方法 VSTS2008如果团队资源管理器中项目的报表文件夹出现“红叉”试试这样解决。 SharePoint中引用图片库中缩略图的一种方式 SharePoint的列表中某列去除重复值的一种方法 让乌龟SVN(TortoiseSVN)提交时忽略bin和obj目录 - 黄耀辉 - 博客园 你还在想用VSS2005的Internet访问方案来做远程协作吗? Team Foundation Server 2008使用SQLServer2008 SP1做存储层的部署方法 WSS&MOSS常见问题及解决方法[不断更新] - 黄耀辉 - 博客园 SQL注入案例曝光,请大家提高警惕 再见了亲爱的学生们,再见了敬爱的同事们,再见了信狮 ASP.NET 3.5 Extensions CTP 预览版 已经发布 .NET Framework开源了!ASP.NET 3.5扩展发布!Silverlight 2.0发布!
SharePoint2010主题和样式揭秘(1)
黄耀辉 · 2011-07-28 · via 博客园 - 黄耀辉

    好久好久没写技术博客了,差点以为技术已经离我远去。但鱼离不开水,我怎能把技术丢了呢,呵呵!最近部署了SharePoint2010,这个大玩意够玩一段时间了。刚接触的时候给我第一个感觉就是跟07比只是布局改变了,而且好多功能找不到。但慢慢接触久了便觉得比07强多了,不仅布局更合理,操作更直观方便…...有点跑题了,呵呵,言归正传,如果需要对SharePoint2010的外观做定制,开始肯定会处处碰壁,连找个地方改背景图都找不到,网上对外观方面的介绍资料也太紧缺,所以本着“人人为我,我为人人”的精神,决定把这两天对SharePoint2010主题和样式方面的研究与大家分享。

     一提到外观,我们很自然就联想到主题和样式,但又是因为SharePoint很多封装和内部处理,还有N多的“虚拟目录”给SharePoint应用增添了不少神秘色彩。我们要找到外观定制的着手点还真得费点功夫,在这里先介绍三个你不得不知道的主题和样式相关的目录。

    其中一个是当站点的“发布”功能没激活并且应用了主题后,站点中产生的“_theme”目录。其中有“0”“1”“2”之类的子目录。该目录每次应用主题都会递增1,但只会保存一个目录,也就是只会保存当前主题版本。通过SharePoint Designer点到“所有文件”可以查看到。此时站点会加载目录中的corev4-xxx.css样式及其资源呈现网站外观。但需要注意切记每次应用新的主题都会重新生成并应用其中内容,所以你的修改会被覆盖。

    第二个要讲的目录是"_catalogs/theme/Themed"目录。当站点激活了“发布”功能并且重新应用了某些主题时便会产生,其中的每个子目录都是都对应一个应用过的主题,其中保存着主题相应的css样式文件及所引用到的图片资源。每应用一个新的主题便会产生相应新的目录,重新应用原来应用过的主题则不会产生新目录,但原来内容也会被重新覆盖。每个主题目录的名字是固定的,比如“浅天蓝”对应是1386CE2C目录,你重新应用“浅天蓝”目录还是1386CE2C。但每次样式表都会被重置,所以你如果修改了这里的样式表,记得自己备份好喽。

    有些同学一看到第一个目录的位置可能就着急打开看看,但找不到“_theme”或者“_theme”下边没有子目录,那是什么原因呢?没有应用到主题也总有个样式表来描述默认的外观吧?这就是这里要说的第三个样式文件目录。请大家定位到你SharePoint服务端上的一个目录:“\\主机名\c$\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\2052\STYLES\Themable”这里包含了答案。里面有个corev4.css就是最基础最关键的样式表(其它的样式表先不考虑),主题引擎可以改变的字体和颜色的玄机也在这个文件上。每次我们应用主题这个文件将被复制并做一些替换工作,放到上述两个其中一个目录中。有同学可能会问替换个啥呢?其实打开这个文件就可以知道,其中有很多被“注释”的代码,如:

.ms-toolbar-togglebutton-on{
/* [ReplaceColor(themeColor:"Accent3-Darker")] */ border:1px solid #2353b2;
/* [ReplaceColor(themeColor:"Accent4-Lightest")] */ background-color:#fffacc;
}

    其实这个些注释并不是真正的“注释”,而是相当于替换内容的点位符,它们以行为单位,标识需要更改的样式属性。改成什么?其实就是改成主题中定义的内容(颜色、字体等)

    如上例代码所示borderbackground-color将会被主题(*.thmx)中定义的"Accent3-Darker""Accent4-Lightest"所替换。还有就是替换完以后还会将文件名改一下变成corev4-xxx.css才被送到相应的主题目录下。

    换句话说,其实(*.thmx)主题文件,其实内部只有字体、颜色等内容定义,而并没有保存样式表和相关图片资源的。又有同学可能会问,那样式中用到的图片又是从哪里来的呢?这个因为时间关系,只有留到下一集再说了。

    最后还要说说一个样式目录,当你还没应用主题的情况下,在SharePoint Designer中打开母板页并在某个样式上按Ctrl点鼠标(转到定义)时产生。 名叫“_styles”,下边会有个corev4.css。这个是上述第三个目录中的样式文件的一个复本,直接修改后样式就会应用到站点上。但除了你不再想使用切换主题的功能,不建议修改这个样式文件。因为当产生这个目录和样式文件后,所有的主题样式将不会再套用。如果想主题功能恢复正常,可以直接把整个“_styles”目录删掉。

    如果大家想要更具体更科学的解释,建议大家用反射工具看看CssLinkTheme类,它在Microsoft.SharePoint.WebControls命名空间,在Microsoft.SharePoint.dll 程序中,程序集位于你服务器上,路径如下:\\主机名\c$\Program Files\Common
Files\Microsoft Shared\Web Server Extensions\14\ISAPI

本文出处:http://www.cnblogs.com/Ryu666/archive/2011/07/28/SharePoint2010ThemeAndCSS.html