SharePoint2010主题和样式揭秘
转: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主题和样式揭秘的更多相关文章
- Android学习系列(40)--Android主题和样式之系统篇(下)
11)Widget样式(Widget Style) 特别说明,此处定义大量的系统内置控件的样式,对于重写原生控件的样式具有很大的参考价值. <!-- Widget styles --> & ...
- Android学习系列(39)--Android主题和样式之系统篇(上)
[基于最新的Android4.4的源码分析] 每家公司或者每个移动团队无不想开发出一套自己的UI框架,融入自己的设计和特性,这必然会去修改android的ui.所以,学习和理解android的UI设计 ...
- 【转】Android学习系列(39)--Android主题和样式之系统篇(上)
[基于最新的Android4.4的源码分析] 每家公司或者每个移动团队无不想开发出一套自己的UI框架,融入自己的设计和特性,这必然会去修改android的ui.所以,学习和理解android的UI设计 ...
- android studio 导入主题设置,代码风格(附带eclipse 主题代码样式)
在这里我最想说的,android studio默认主题样式,太low.不适合长时间写代码,看代码颜色不好识别,相对于背景的代码样式,我都不想吐槽了.还是网上下载主题代码样式导入样式.在这里我推荐 Su ...
- hexo修改Next主题的样式
Next主题默认对超链接只有下划线样式,很容易被忽略,就想着怎么修改下 主题样式是在\hexoBlog\themes\next\source\css,这里面保存了Muse,Mist和Pisces三个主 ...
- Android 主题、样式
样式是针对View的,比如TextView.Button等控件,主题是针对Activity.整个APP的. 样式.主题是多种属性的集合,类似于网页中的CSS样式,可以让设计与内容分离,并且可以继承.复 ...
- Visio主题与样式
o visio内置了27种主题样式 共有四个分类 每个主题样式都有四个变体可供选择 重复就是复制的意思 就是复制页面 可以设置将某一个主题应用于当前页或者所有页 所有页面指的是所有有相同背景的页面 允 ...
- [Beginning SharePoint Designer 2010]Chapter5 主题和样式
本章概要: 1.什么是CSS 2.样式表的组成 3.如何管理CSS适应SPD的工具和特性 4.被SPS使用的关键的CSS类别 5.使用SPD应用样式到你的站点上
- Android 样式 (style) 和主题(theme)
转载:https://gold.xitu.io/post/58441c48c59e0d0056a30bc2 样式和主题 样式是指为 View 或窗口指定外观和格式的属性集合.样式可以指定高度.填充.字 ...
随机推荐
- 清橙 A1120 拦截导弹 -- 动态规划(最长上升子序列)
题目地址:http://oj.tsinsen.com/A1120 问题描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但 ...
- 九度OJ 1497 面积最大的全1子矩阵 -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1497 题目描述: 在一个M * N的矩阵中,所有的元素只有0和1,从这个矩阵中找出一个面积最大的全1子矩阵,所谓最 ...
- OpenJudge/Poj 1207 The 3n + 1 problem
1.链接地址: http://bailian.openjudge.cn/practice/1207/ http://poj.org/problem?id=1207 2.题目: 总时间限制: 1000m ...
- 空对象模式(Null Object Pattern)
空对象模式:用一个空对象来取代null实例的检查,空对象实现一个不做任何动作的关系.(消除如if(Object == null) 这样的检查null实例代码) 例子: public abstract ...
- WebClient以POST方式发送Web请求
本例使用WebClient以POST方式发送Web请求并下载一个文件,难点是postData的构造,发送Web请求时有的网站要求可能要求 Cookies前后一致.其中application/x-www ...
- POJ2255二叉树
题目大意就是给出你一个二叉树的前序和中序,要你求后序. 思路:二叉树的排序就是根据根节点的位置来定义的.所以找到二叉树的根节点是最重要的,二叉树的左子树和右子树也可以看成是二叉树,以此递归: #inc ...
- php 导出excel表格
方式一:使用PHPExcel类库 //引入PHPExcel库文件(路径根据自己情况)include './phpexcel/Classes/PHPExcel.php'; $excel = new PH ...
- IOS中如何自定义web应用的图标
在iPhone/iPad等苹果移动设备上,可以把网站”添加至主屏幕”,添加时的图标可以在HTML中自定义设置图片. 可以使用apple-touch-icon和apple-touch-icon-prec ...
- FireMonkey消息机制
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, FMX.Forms, FMX.Plat ...
- GPS坐标转百度地图并且加载地图示例.支持微信端访问
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Wx_VehicleLoca ...