转:http://www.cnblogs.com/Ryu666/archive/2011/07/28/2119652.html

好久好久没写技术博客了,差点以为技术已经离我远去。但鱼离不开水,我怎能把技术丢了呢,呵呵!最近部署了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;
}

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

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

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

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

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

Files\Microsoft Shared\Web Server Extensions\14\ISAPI

SharePoint2010主题和样式揭秘的更多相关文章

  1. Android学习系列(40)--Android主题和样式之系统篇(下)

    11)Widget样式(Widget Style) 特别说明,此处定义大量的系统内置控件的样式,对于重写原生控件的样式具有很大的参考价值. <!-- Widget styles --> & ...

  2. Android学习系列(39)--Android主题和样式之系统篇(上)

    [基于最新的Android4.4的源码分析] 每家公司或者每个移动团队无不想开发出一套自己的UI框架,融入自己的设计和特性,这必然会去修改android的ui.所以,学习和理解android的UI设计 ...

  3. 【转】Android学习系列(39)--Android主题和样式之系统篇(上)

    [基于最新的Android4.4的源码分析] 每家公司或者每个移动团队无不想开发出一套自己的UI框架,融入自己的设计和特性,这必然会去修改android的ui.所以,学习和理解android的UI设计 ...

  4. android studio 导入主题设置,代码风格(附带eclipse 主题代码样式)

    在这里我最想说的,android studio默认主题样式,太low.不适合长时间写代码,看代码颜色不好识别,相对于背景的代码样式,我都不想吐槽了.还是网上下载主题代码样式导入样式.在这里我推荐 Su ...

  5. hexo修改Next主题的样式

    Next主题默认对超链接只有下划线样式,很容易被忽略,就想着怎么修改下 主题样式是在\hexoBlog\themes\next\source\css,这里面保存了Muse,Mist和Pisces三个主 ...

  6. Android 主题、样式

    样式是针对View的,比如TextView.Button等控件,主题是针对Activity.整个APP的. 样式.主题是多种属性的集合,类似于网页中的CSS样式,可以让设计与内容分离,并且可以继承.复 ...

  7. Visio主题与样式

    o visio内置了27种主题样式 共有四个分类 每个主题样式都有四个变体可供选择 重复就是复制的意思 就是复制页面 可以设置将某一个主题应用于当前页或者所有页 所有页面指的是所有有相同背景的页面 允 ...

  8. [Beginning SharePoint Designer 2010]Chapter5 主题和样式

    本章概要: 1.什么是CSS 2.样式表的组成 3.如何管理CSS适应SPD的工具和特性 4.被SPS使用的关键的CSS类别 5.使用SPD应用样式到你的站点上

  9. Android 样式 (style) 和主题(theme)

    转载:https://gold.xitu.io/post/58441c48c59e0d0056a30bc2 样式和主题 样式是指为 View 或窗口指定外观和格式的属性集合.样式可以指定高度.填充.字 ...

随机推荐

  1. (转)使用inotify、inotify_add_watch、inotify_rm_watch、read编写监控程序

    转自:http://blog.csdn.net/myarrow/article/details/7096460 inotify是什么 inotify是文件系统变化通知机制,在监听到文件系统变化后,会向 ...

  2. VMware10.0.4下 CentOS 6.5 cmake安装 MySQL 5.5.32

    一.准备工作 1.1.创建 zhuzz/tools目录 [root@localhost ~]# mkdir -p /home/zhuzz/tools [root@localhost ~]# cd /h ...

  3. HDOJ(1001) Sum Problem

    这一套题做错了几次,按理说直接用等差数列求和公式就行了,主要是要考虑一些运算符的结核性问题: 四则运算符(+.-.*./)和求余运算符(%)结合性都是从左到右. 于是,我自己写了一个版本,主要是考虑( ...

  4. shell环境

    1 引言 一个进程运行在shell环境中,理解进程运行的环境是十分重要的.环境影响着进程的行为,利用环境提供的便利,可以极大地提高开发效率.本节深入讨论shell中与进程有关的环境问题,包括命令行参数 ...

  5. C# winform关于DataGridView的一些操作

    设置字段名 设置字段值 设定单元格表示 Error图标 设定当前单元格 取得当前单元格内容 取得当前单元格的列 Index 取得当前单元格的行 Index 向下一行 向上一行 取消 DataGridV ...

  6. WinForm 图形报表控件

    http://wenku.baidu.com/link?url=hOCeHErshNOw6NScDG3Y6JjT1mD-A4xHhjthcHyrTgk5NmPRKf0eqeaee4LmKZX5jd7S ...

  7. HTML5-原声拖放

    最早在网页中引入js拖放功能的是IE4,并且只可以拖放图像和某些文本.IE5.5以后网页中的任何元素都可以进行拖放.HTML5以IE为实例制定了拖放规范.FireFox3.5.Safari3+和Chr ...

  8. perl命令批量替换文件内容

    转自:http://www.jbxue.com/article/12638.html 使用perl命令批量替换文件内容. 对linux下的文件内容进行替换,有时不用编写perl脚本,用perl命令就可 ...

  9. ecshop用户中心订单详情增加快递单物流信息查询显示的功能

    1,themes\default\user_transaction.dwt 找到: <!--{if $action eq order_detail} --> 在下面一行加入: <st ...

  10. hdu 5626 Clarke and points 数学推理

    Clarke and points Problem Description   The Manhattan Distance between point A(XA,YA) and B(XB,YB) i ...