transform  改变
rotate 旋转
translate  位移
scale 缩放

skew  斜切变形

记得兼容性:
-webkit-
   -moz-
    -ms-
     -o-

transform: rotate(Xdeg,Ydeg);
deg 表示角度 X轴正半轴为0deg,顺时针旋转值越来越大。
transform-origin( X ,Y ); 设置对象旋转的中心点,如果没设置该值,默认transform-origin(50%,50%);

transform-origin(100px,200px); 设定旋转的中心点为,水平位移100px,垂直位移200px;
transform: rotate(45deg); 对象 以水平位移100px,垂直位移200px 为中心点旋转45度。

默认旋转中心为对象的正中心,即:图片长宽的50%。transform-origin:50% 50%;
rotate指定对象的2D旋转,指定对象指的是当前对象,也就是原元素,虽然子元素也会跟着动,
但是子元素并没有发生相对旋转,旋转一定要有一个旋转中心,所以需先有transform-origin属性的定义来确定旋转中心,
如果缺省,默认为transform-origin: 50% 50%。

transform:translate(X , Y);    px,vh,vw,%,rem,em,cm,mm等相对单位,绝对单位都有效。
X   相对图片左上角顶点,进行水平位移。
Y   相对图片左上角顶点,进行垂直位移。
transform: translate(200px);  ===  transform: translate(200px,0);
transform: translate(0,200px); 如果只让Y轴垂直位移,那么X轴参数不能省略。
只写一个参数那么默认X轴水平位移200px,Y轴不进行位移。

transform:translateX(x);
transform:translateY(x);
transform: scale( X , Y );
以对象的正中心为缩放中心,把对象进行缩放,这里是等比例缩放,对象不会变形,缩放对象包括图片,div等等。
transform: scaleX( .5 );     以对象的正中心为中心,水平缩放到宽度等于原来宽度的50%;
transform: scaleY( .5 );  以对象的正中心为中心,垂直缩放到高度等于原来高度的50%;
transform: scale( .5 , .5 ); 以对象的正中心为中心,水平垂直缩放到原来宽高的50%;
transform: scale( .5 );  ===  transform: scale( .5 , .5 );

=================

transform: rotate(Xdeg,Ydeg);
deg 表示角度 X轴正半轴为0deg,顺时针旋转值越来越大。
transform-origin( X ,Y ); 设置对象旋转的中心点,如果没设置该值,默认transform-origin(50%,50%);

transform-origin(100px,200px); 设定旋转的中心点为,水平位移100px,垂直位移200px;
transform: rotate(45deg); 对象 以水平位移100px,垂直位移200px 为中心点旋转45度。

默认旋转中心为对象的正中心,即:图片长宽的50%。transform-origin:50% 50%;
rotate指定对象的2D旋转,指定对象指的是当前对象,也就是原元素,虽然子元素也会跟着动,
但是子元素并没有发生相对旋转,旋转一定要有一个旋转中心,所以需先有transform-origin属性的定义来确定旋转中心,
如果缺省,默认为transform-origin: 50% 50%。

transform:translate(X , Y);    px,vh,vw,%,rem,em,cm,mm等相对单位,绝对单位都有效。
X   相对图片左上角顶点,进行水平位移。
Y   相对图片左上角顶点,进行垂直位移。
transform: translate(200px);  ===  transform: translate(200px,0);
transform: translate(0,200px); 如果只让Y轴垂直位移,那么X轴参数不能省略。
只写一个参数那么默认X轴水平位移200px,Y轴不进行位移。

兼容性问题:

-webkit-
   -moz-
    -ms-
     -o-

----------------------------

transform:translateX(x);
transform:translateY(x);
transform: scale( X , Y );
以对象的正中心为缩放中心,把对象进行缩放,这里是等比例缩放,对象不会变形,缩放对象包括图片,div等等。
transform: scaleX( .5 );     以对象的正中心为中心,水平缩放到宽度等于原来宽度的50%;
transform: scaleY( .5 );  以对象的正中心为中心,垂直缩放到高度等于原来高度的50%;
transform: scale( .5 , .5 ); 以对象的正中心为中心,水平垂直缩放到原来宽高的50%;
transform: scale( .5 );  ===  transform: scale( .5 , .5 );

实例1:
将一个width:1000px;height:500px;的元素缩放为width:300px;height:100px;,
scale缩放的参数是以1为基准的[sx,sy]缩放矢量参数,即宽度缩放为原元素的sx倍,高度缩放为原元素的sy倍。所以缩放的应该是transform: scale(300/1000, 100/500),但是scale()中不能用分数,所以正确答案是transform: scale(.3, .2)。

实例2:
原元素的宽高属性为width:1000px;height:500px;,执行transform: scale(.5);之后的变化表述正确的是?

scale缩放的参数是以1为基准的[sx,sy]缩放矢量参数,即宽度缩放为原元素的sx倍,高度缩放为原元素的sy倍。当第二个参数省略的时候,默认宽度和高度的缩放比例都和第一个参数一样,实现等比缩放。width:1000px和height:500px;执行transform: scale(.5);之后,width=1000px*.5=500px;height=500px*.5=250px
注意:
这里的缩放是针对元素对象本身,而不是其父元素。

===============================

transform: skewX( Xdeg );

已经定义对象div宽高如:width:300px;  height:200px;

如上图:transform: skewX( 30deg ); 可以理解为:

最重要的是:没变形之前,在对象的几何中心画X,Y轴,skew是相对它们进行角度旋转的。

对象以X正半轴为0deg,逆时针旋转30deg,两条宽度永远都与X轴平行,除了角度达到最大90deg/-90deg时,变成一条看不见的线。

高度永远为300px 。旋转最大角度(变成一条看不见的线)为 90deg 或 -90deg 。正度数就在X正半轴,负度数就在X负半轴。

同理:

transform: skewY(20deg); 理解:

最重要的是:没变形之前,在对象的几何中心画X,Y轴,skew是相对它们进行角度旋转的。

对象以Y正半轴为0deg,顺时针旋转20deg(跟X轴相反)。且高度永远跟Y轴平行,除了角度达到最大90deg/-90deg时,变成一条看不见的线。

宽度永远为200px。旋转最大角度(变成一条看不见的线)为 90deg 或 -90deg 。正度数就在Y正半轴,负度数就在Y负半轴。

transform: skew( 20deg );  ===  transform: skew(20deg , 0deg);

transform: skew( 0 , 20deg );  表示对象的Y轴旋转20度。

skew   X轴,Y轴的取值范围都是: 90deg ~ -90deg ;

X轴 以X正半轴为0deg,值逆时针越来越大。
Y轴 以Y正半轴为0deg,值顺时针越来越大。
Xdeg +  Ydeg = 90deg或-90deg  那么就变成看不到的一条直线。
使用元素审查,改变度数最好。

transform: skew(<angle> [, <angle>]);其中angle为倾斜角度,角度方向跟随极坐标角度方向,逆时针为正方向,顺时针为负方向。当只有一个参数的时候,第二个参数默认为0deg,因此transform: skew(45deg);为元素的水平方向逆时针倾斜45度,竖直方向倾斜0度

==========================

在transform: rotate3d(x, y, z, angle);中,第一个参数表示X轴,第二个参数表示Y轴,第三个参数表示Z轴,其中0为该方向不旋转,大于0为正方向旋转(顺时针),小于0为负方向旋转(逆时针),第四个参数表示旋转的角度,参数不允许省略。

需要把一个宽度为1000像素和高度为250像素的元素缩放为宽度为500像素、高度为500像素

scale3d(sx,sy,sz),sx为横向缩放比例;sy为纵向缩放比例;sz为z轴缩放比例,参数不允许省略,无缩放比例为1,宽度1000px缩放为500px,宽度变成原来的一半,即1000*0.5=500px,高度250px变成500px,增加了一半,因此250*2=500px;z轴没有缩放,参数不能省略,使用1表示无缩放。因此transform: scale3d(.5, 2, 1)正确。

transform旋转,平移,缩放,扭曲 斜切的更多相关文章

  1. OpenGL中旋转平移缩放等变换的顺序对模型的影响

    l 前提: 0x01. 假设绘制顶点的语句为Draw Array,变换的语句(旋转.平移.缩放)为M,而 M0; M1; M2; Draw Array; 则称对Array先进行M2再进行M1.M0 0 ...

  2. [opencv] 图像几何变换:旋转,缩放,斜切

    几何变换 几何变换可以看成图像中物体(或像素)空间位置改变,或者说是像素的移动. 几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,即不一定 ...

  3. Three.js三维模型几何体旋转、缩放和平移

    创建场景中的三维模型往往需要设置显示大小.位置.角度,three.js提供了一系列网格模型对象的几何变换方法,从WebGL的角度看,旋转.缩放.平移对应的都是模型变换矩阵,关于矩阵变换内容可以观看本人 ...

  4. 【转载】Unity中矩阵的平移、旋转、缩放

    By:克森 简介 在这篇文章中,我们将会学到几个概念:平移矩阵.旋转矩阵.缩放矩阵.在学这几个基本概念的同时,我们会用到 Mesh(网格).数学运算.4x4矩阵的一些简单的操作.但由于克森也是新手,文 ...

  5. IOS第18天(1,核心动画layer, 旋转,缩放,平移,边框,剪裁,圆角)

    ****动画效果 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [UIView animateWithDurat ...

  6. WPF/Silverlight中图形的平移,缩放,旋转,倾斜变换演示

    原文:WPF/Silverlight中图形的平移,缩放,旋转,倾斜变换演示 为方便描述, 这里仅以正方形来做演示, 其他图形从略. 运行时效果图:XAML代码:// Transform.XAML< ...

  7. ARFoundation - 实现物体旋转, 平移,缩放

    ARFoundation - 实现物体旋转, 平移,缩放 本文目的是为了确定在移动端怎样通过单指滑动实现物体的旋转,双指实现平移和缩放. 前提知识: ARFoundation - touch poin ...

  8. 【CSS3动画】transform对文字及图片的旋转、缩放、倾斜和移动

    前言:之前我有写过CSS3的transform这一这特性,对于它的用法,还不是很透彻,今天补充补充,呵呵 你懂的,小司机准备开车了. a)再提一提transform的四个属性 ①旋转--->ro ...

  9. CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)

    CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)   在CSS3中,可以利用transform功能来实现文字或图像的旋转.缩放.倾 ...

随机推荐

  1. 用Python学分析:集中与分散

    散点图进阶,结合箱体图与直方图对数据形成全面的认识 描述数据集中趋势的分析量: 均值 - 全部数据的算术平均值 众数 - 一组数据中出现次数最多的变量值 中位数 - 一组数据经过顺序排列后处于中间位置 ...

  2. Adobe Photoshop CC 2019 for Mac v20.0.4 中文版安装教程

    全新Adobe Photoshop CC 2019 mac特别版终于上线了,简称ps cc 2019,Adobe Photoshop CC 2019 for Mac v20.0.4 中文版安装教程分享 ...

  3. with管理文件操作上下文

    目录 with管理文件操作上下文(掌握) with管理文件操作上下文(掌握) 之前我们使用open()方法操作文件,但是open打开文件后我们还需要手动释放文件对操作系统的占用.但是其实我们可以更方便 ...

  4. 为自己搭建一个分布式 IM(即时通讯) 系统

    前言 大家新年快乐! 新的一年第一篇技术文章希望开个好头,所以元旦三天我也没怎么闲着,希望给大家带来一篇比较感兴趣的干货内容. 老读者应该还记得我在去年国庆节前分享过一篇<设计一个百万级的消息推 ...

  5. netcore程序部署到docker

    1.基础准备 1. ubuntu 18.04 2. docker version 18.09 3. netcore 2.1 2.简介 自从netcore支持跨平台之后,以及现在很多公司都是采用容器化部 ...

  6. 基于weex的app开发脚手架weexplus学习笔记

    认识weexplus weexplus是基于weex官方的二次开发版本,weex和react native一样同属第2代跨平台技术,解决了第一代性能低下,体验不好的问题,同时保留了第一代 多平台一套代 ...

  7. Git:九、删除项目

    1.删除远程仓库 1)打开有绿色客隆按钮的仓库代码页面,选择Settings 2)把页面拉到最下边 2.删除本地仓库 1)先删.git隐藏文件 2)强行删除仓库文件夹 显示所有文件,包括隐藏的:ls ...

  8. 国内常用DNS

    114.114.114.114 国内移动,电信,联通通用DNS 223.5.5.5 阿里 223.6.6.6 阿里 180.76.76.76 百度

  9. mssql sqlserver 给已存在表添加新的字段及字段备注的方法

    转自:http://www.maomao365.com/?p=8102 摘要: 下文讲述向已存在表上添加新字段及字段备注的方法,如下所示: 实验环境:sql server 2008 R2 1. 添加新 ...

  10. golang中的defer

    1.defer的作用 defer 语句会将函数推迟到外层函数返回之后执行. 即defer后面的函数在defer语句所在的函数执行结束的时候会被调用 2.defer的语法 defer后面必须是函数调用语 ...