CSS3 Transform 转换属性

整    理:徐秀、晋哲

时    间:2015-12-04

说    明:CSS3 Transform基本语法以及基础用法的介绍。

一、名词解释

transform字面上就是变形,改变的意思,包括2D transform和3D transform。在CSS3中transform主要包括以下几种:移动translate()、旋转rotate()、扭曲skew()、缩放scale()以及矩阵变形matrix(),对内联元素(inline)和块级元素(block)都适用。

二、浏览器兼容性
注意:transform是CSS3新属性,目前兼容浏览器【盗图】:image001

和其它CSS3新属性一样,transform要加兼容前缀。

三、transform-origin属性

transform-origin在元素发生transform变换时有效,是发生变换的基点,以此点建立【2d/3d】坐标。默认值为:transform-origin:50% 50% [0]; 第三个参数是3d转换下z的值,默认0。当改变transform-origin的值时,transform参照基点发生改变,如: transform-origin:0 0;image002

其中X和Y的值可以是百分值,em,px,其中X也可以是字符参数值left,center,right;Y和X一样除了百分值外还可以设置字符值top,center,bottom。

四、语法讲解

描述
none 定义不进行转换。
matrix(n,n,n,n,n,n) 定义 2D 转换,使用六个值的矩阵。
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义 3D 转换,使用 16 个值的 4x4 矩阵。
translate(x,y) 定义 2D 转换。
translate3d(x,y,z) 定义 3D 转换。
translateX(x) 定义转换,只是用 X 轴的值。
translateY(y) 定义转换,只是用 Y 轴的值。
translateZ(z) 定义 3D 转换,只是用 Z 轴的值。
scale(x,y) 定义 2D 缩放转换。
scale3d(x,y,z) 定义 3D 缩放转换。
scaleX(x) 通过设置 X 轴的值来定义缩放转换。
scaleY(y) 通过设置 Y 轴的值来定义缩放转换。
scaleZ(z) 通过设置 Z 轴的值来定义 3D 缩放转换。
rotate(angle) 定义 2D 旋转,在参数中规定角度。
rotate3d(x,y,z,angle) 定义 3D 旋转。
rotateX(angle) 定义沿着 X 轴的 3D 旋转。
rotateY(angle) 定义沿着 Y 轴的 3D 旋转。
rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。
skew(x-angle,y-angle) 定义沿着 X 和 Y 轴的 2D 倾斜转换。
skewX(angle) 定义沿着 X 轴的 2D 倾斜转换。
skewY(angle) 定义沿着 Y 轴的 2D 倾斜转换。
perspective(n) 为 3D 转换元素定义透视视图。

未经transform转换的div,以下各种变换均以此为参照:image003

  • transform:translate();

通过指定translation(tx,ty)进行矢量偏移,translation3d(tx,ty,tz);参数tx 是x轴方向的偏移矢量,ty 可选参数是y轴方向的偏移矢量。translation3d()中的各值,表示在对应方向的偏移量。tx,ty,tz的取值可以是具体的像素值,也可以是百分比,百分比的的取值相对于自身的宽高。translate(),表示对对象进行平移,当值为负数时,反方向移动物体。分别指定指定轴上的偏移量可以。通过transform-origin属性改变基点。

其它写法:translateX(x)【适用于2d/3d】,translateY(y) 【适用于2d/3d】;translateZ(z) 【适用于3d】,

代码:image004image005效果:image005

  • transform:rotate();

通过指定的角度参数对指定元素指定一个rotate(angle)进行2d旋转,rotate3d(rx,ry,rz,angle)进行3d旋转;rx,ry,rz可以取【1:正方向;-1:反方向;0不旋转】;在指定方向选择angle度; angle是指旋转角度,如果设置的值为正数表示顺时针旋转,如果设置的值为负数,则表示逆时针旋转。可以通过transform-origin属性改变基点。

其它写法:rotateX(angle) 【适用于3d】;rotateY(angle) 【适用于3d】;rotateZ(angle) 【适用于3d】
代码:image007image008效果:image009

  • transform:scale();

通过指定scale(sx,sy)的sx、sy参数对指定元素进行2d缩放; scale3d(sx,sy,sz)进行3d缩放。2d缩放的第二个参数可选,未提供,则取与第一个参数一样的值;3d的三个参数都必写,表示在对应方向的缩放比例。可以通过transform-origin对元素的基点进行设置。

其它写法:scaleX(x)【适用于2d/3d】,scaleY(y) 【适用于2d/3d】;scaleZ(z) 【适用于3d】。

代码:image011image010 效果:image012

  • transform:skew();

通过指定skew(x-angle, y-angle)的x-angle、 y-angle参数对指定元素在指定方向上发生倾斜; skew()没有3d写法;x-angle是水平方向扭曲角度,y-angle可选,是垂直方向扭曲角度。如未设置y-angle,那么Y轴倾斜角度为0deg。

其它写法:skewX(x)【适用于2d】,skewY(y) 【适用于2d】。
代码:image013image014效果:
111

  • transform: matrix ();

matrix():2d矩阵包含6个值matrix(a,b,c,d,e,f);3d矩阵包含16个之matrix(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)4*4个值,以上的各种变换(2d/3d),都可以矩阵计算得到相应效果,单计算过程很复杂,此处就不赘述了。有兴趣的小伙伴可以自行学习下。

后台产品上新和新闻稿更新

整    理:徐秀、肖雅君

时    间:2015-12-04

说    明:精工后台的操作及注意点,包括精工腕表产品和新闻稿模块的更新。

后台地址:

http://www.seiko.com.cn/M/Login.aspx?ReturnUrl=%2fm%2findex.aspx

精工的腕表产品和新闻稿更新都在后台进行操作。

1) 对应线上的网址:

产品展示:http://www.seiko.com.cn/collections/index.aspx页面下各类别腕表产品页。

2) 新闻资讯:http://www.seiko.com.cn/press_release/index.aspx下的新闻页。

页面入口可由官网页头导航条进入。image001

一、产品上新

  1. 图片制作

要求:一张大图(一般为:300 x 300,视情况而定),一张小图(一般为:42 x 75)。图片一律约束比例缩放,不得变形。以线上该系列下的最新(第一个) 产品图片为模板。【产品上新时,精工发的邮件会包含,一个包含所有新产品信息的excel表格和高清新产品图片,如果没有图片,记得跟他们要,因为excel表格上的图片处理完就糊了。】举个栗子:image002

1)精工发来新产品:

在官网”产品展示”---“premier”---“7D46・7D48・7D56机芯”点击弹出如下页面。image003

下载第一个产品的大图和小图为参考模板。图片的高度和宽度要与线上的一致,”new”的位置,以及图上下的留白区也要一致(可借助PS的参考线来确定图片内容位置;)

方法:

1)模板图片上下左右内容区做好参考线,删除图片内容,保留”new”,做成空白模板;

2)把新图片的上下空白区域裁剪掉,然后根据模板的内容区高度(一般为292px),ctrl+alt+i约束比例确定高度复制到模板区域,调整上下边距【一定要注意】,左右保证居中即可。

PS:找不到该系类咋办【情况非常少】?它是一个新系列,精工邮件会有说明,参考相邻系列的产品图片呗。但多了一项任务,还要制作这个系列的代表图片,尺寸参考相邻系列代表图片。如:image004

  1. 登录后台上新

1) 浏览器输入后台网址,输入用户和密码。image005

2) 确认是否线上已有该系列,没有要先添加“产品系列”。点击侧栏”产品系列管理”---“新增”。image006

根据excel表格中的内容填写下面各项,“保存”。ps:后台操作一保存,精工官网立马显示,一定要慎重检查再保存。检查点【系列款式是否正确,文字描述是否有错字】

3)线上已有该系列,跳过2),在侧栏选择“产品管理”---“新增”。弹出:image007

PS:从上到下依次填入所提到的点,写完之后,注意检查再保存。检查点:

  • 所属列表、款式、机芯系列是否正确。
  • 产品名称是否和文档一致。
  • 显示顺序的数字是否正确。
  • 图片是否正确,简介是否有错字。

产品的显示顺序应该根据产品名称递增排序。如下:image008

如果SNP126J1的“显示顺序”号为10,则SNP127J1顺序号:11,SNP128J1:12;SNP129J1:13。

二、新闻稿上新

  1. 登录后台

1) 侧栏点击“最新资讯管理”—“新增”image009
2) 根据精工发来的word文档的排版。进行如下操作,“保存“。
PS:各项填完之后,检查以下问题再保存。

  • 如果有遇到无法解决的排版问题,参考线上相似新闻稿;
  • 未确认排版前,日期最老,使新闻稿不容易被访问到;
  • 为防止代码错乱,建议在”代码模式”下写新闻稿;
  • 保存后,对比word文档,查看图片显示位置是否正确,是否有错别字,特殊符号(如英文人名中间的圆点等)是否与word一致。
  1. 修改首页入口链接

新闻稿确定保存后,要到精工服务器的首页相应位置添加新闻资讯的链接。【很简单,主要是复制粘贴改链接。】image010

1) 登录服务器---找到精工首页的”aspx”文件,备份两份,打开测试的aspx文件,ctrl+f查找【id=”whatsnew”】,复制一个完整的标题和链接部分,只有修改标注部分,链接、和标题,以及新闻发生月份。链接是导航条上“最新资讯“下,你刚更新的新闻稿的网址,格式参考往期。【再添加一个新链接,要删除最下面一个旧链接,不然会有溢出。】
2) 修改完之后在首页“最新咨询”,弹出框测试,测试链接是否正确。image011

php文件包含路径问题


编	写:袁	亮
时	间:2015-12-01
说	明:php文件包含路径问题

一、解决什么问题
	1、在某些项目代码中,会出现包含出错问题
	2、多次include的时候,会发现不知道包含的到底是哪个文件
	3、某些项目代码中,找不到对应include进来的文件

二、前置知识:3种路径
	1、绝对路径
		linux下,以/开头的路径
		window下以盘符开头的,比如c:/
	2、相对路径
		以.或者..开头的路径
	3、不确定路径
		非上述两种情况的都是

三、包含路径include_path
	1、这是一个目录列表
	2、在php查找文件的时候起作用,主要是以下这些函数
		include,require,fopen,file,readfile,file_get_contents
	3、查找文件的时候,会根据include_path中的目录列表一个个去找,找到之后中止返回
	4、功能类似系统中的环境变量
	5、可以通过php.ini或者php代码中进行设置(也可以通过php函数读取)
	6、默认值是. 代表当前工作目录(简单来说就是访问的第一个php文件所在的目录)

四、查找要包含哪个文件
	1、包含的是绝对路径的文件
		与include_path无关,直接引用绝对路径所对应的文件
	2、包含的是相对路径的文件
		跳过include_path,根据工作路径拼接上相对路径,查找文件,如果有则包含,没有则报错
		ps:工作路径即访问的第一个php文件所在的目录
	3、包含的是不确定路径的文件
		3.1 逐个使用include_path中的目录跟不确定路径拼接查找文件,找到则退出
		3.2 如果没有找到,则根据包含语句include所在的文件的目录,拼接上不确定路径查找文件
		3.3 如果还是没有,则报错

五、解决方案
	1、项目的一个公共文件,通过__FILE__,或者__DIR__(php 5.3后),结合dirname来计算获取项目根目录
	2、所有文件包含,均通过项目根目录进行拼接,得到绝对路径,再包含
	3、使用不确定路径包含文件
		3.1 使用不确定路径,包含当前目录或当前目录的子目录下的文件
		3.2 这种方法性能较差,因为必然是经过多次查找才能得到
		3.3 而且在项目工作目录出现同名文件,则会出现包含到错误文件的情况
		3.4 常见于sdk包,一般情况下少用

参考文档:
1、PHP中require和include路径问题详解
	http://www.cnblogs.com/rainman/p/4177302.html
2、PHP手册
	http://php.net/manual/zh/ini.core.php#ini.include-path
	http://php.net/manual/zh/function.set-include-path.php