CSS3的常见transformation图形变化用法小结


Posted in HTML / CSS onMay 13, 2016

1.rotate旋转
旋转图片,单位deg,为“度”的意思

CSS Code复制内容到剪贴板
  1. -moz-transform: rotate(20deg); -webkit-transform: rotate(20deg); -o-transform: rotate(20deg); -ms-transform: rotate(20deg);  

2.scale放大缩小
按比例放大缩小,如 “1.6” 为放大 1.6 倍,若 “-1.6” 则缩小 1.6 倍

CSS Code复制内容到剪贴板
  1. -webkit-transform: scale(1.6); -moz-transform: scale(1.6); -o-transform: scale(1.6); -ms-transform: scale(1.6);  

3.translate平移
translate 为指定对象的平移,具有两个参数,第一个为 x 轴方向平移,第二个为 y 轴方向平移。如果第二个参数未提供,则默认值为 0 。

例如,需要设置一个元素在鼠标悬停时进行 x 轴方向 30px 和 y 轴方向 20px 的平移,可以这样编写:

CSS Code复制内容到剪贴板
  1. #translate-demo:hover {   
  2.     -webkit-transform: translate(30px20px);   
  3.     -moz-transform: translate(30px20px);   
  4.     -o-transform: translate(30px20px);   
  5.     -ms-transform: translate(30px20px);   
  6.     transform: translate(30px20px);   
  7. }  

CSS3的常见transformation图形变化用法小结

这里必须说明一点,最新版本的主流现代浏览器(Kayo 测试的是 Chrome 22.0.1229.94 , Firefox 17.0.1 , Safari 5.1.7 , Opera 12.12)除 webkit 内核的 Chorme 和 Safari 外都不需要通过私有属性才能支持 transform 了,但由于早期的现代浏览器中 transform 属性都需要通过各自的私有属性支持,因此为了尽量兼容早期版本的浏览器,在实际项目中使用 transform 时最好使用各自的私有属性,同时为了向后兼容,需要加上没有私有属性的调用。

4.skew倾斜
skew 指定元素斜切扭曲,即元素围绕 x 轴和 y 轴进行倾斜,具有两个参数,第一个对应 x 轴方向的倾斜角度,第二个对应 y 轴方向倾斜角度。如果第二个参数未提供,则默认值为 0 。skew 与 scale 有点相似,但 scale 只旋转元素,不会对元素形状作出改变,而 skew 则会使到元素的形状发生改变。

例如,需要设置一个元素在鼠标悬停时进行 x 轴方向 30 度和 y 轴方向 30 度的斜切扭曲,可以这样编写:

CSS Code复制内容到剪贴板
  1. #skew-demo:hover {   
  2.     -webkit-transform: skew(30deg, 30deg);   
  3.     -moz-transform: skew(30deg, 30deg);   
  4.     -o-transform: skew(30deg, 30deg);   
  5.     -ms-transform: skew(30deg, 30deg);   
  6.     transform: skew(30deg, 30deg);   
  7. }  

CSS3的常见transformation图形变化用法小结

值得注意的是,由于 translate、skew 以及上文提到的 scale 都是以 x、y 轴相关的值作为参数,因此为了方便起见,W3C 还提供了 translateX 和 translateY 、skewX 和 skewY 以及 scaleX 和 scaleY 方法,分别用于独立设置 x 轴和 y 轴方向上的效果。

5.matrix矩阵
matrix 即矩阵,这里具体使用的是一个 3*3 矩阵。
用矩阵表示属性值?
是的,除了 transform 外,CSS3 中另外还有一些属性以 matrix 作为属性值,实际上,matrix 是 transform 中最基本而又最强大的值,上面的 translate 和 skew 以及之前介绍过的 rotate 和 scale 在底层都是通过 matrix 实现的,因此实际上所有的 transform 值都可以通过一个 3*3 矩阵表示。
我们知道,transform 是在 x、y 坐标系上的 2D 变换,因此实际上变换就是元素上每一个点通过一个变换等式进行变化,再产生新的坐标值的过程。因此我们设置旧的 x、y 坐标值分别为 XprevCoordSys 和 YprevCoordSys ,新的 x、y 坐标值分别为 XnewCoordSys 和 YnewCoordSys ,由于变换在 2D 中进行,因此 z 坐标值设为 1 即可。这时再另设 matrix 为如下的一个矩阵,
CSS3的常见transformation图形变化用法小结

则旧的坐标值、新的坐标值与 matrix 中存在如下关系:
CSS3的常见transformation图形变化用法小结

即新旧值之间可以通过矩阵连成等式,因此开发者只需要设定好 matrix 的值,就可以写出自定义的变换了。接下来需要注意,虽然 matrix 是一个 3*3 矩阵,在实际使用时只需填写6个参数(另外3个与 x、y 轴无关),并且调用时需要用如下的顺序 [a b c d e f]
例如编写如下语句:

CSS Code复制内容到剪贴板
  1. #matrix-demo:hover {   
  2.     -webkit-transform: matrix(1, 1, 0, 1, 0, 0);   
  3.     -moz-transform: matrix(1, 1, 0, 1, 0, 0);   
  4.     -o-transform: matrix(1, 1, 0, 1, 0, 0);   
  5.     -ms-transform: matrix(1, 1, 0, 1, 0, 0);   
  6.     transform: matrix(1, 1, 0, 1, 0, 0);   
  7. }  

这样在鼠标悬停时元素会在 y 轴方向上拉伸(即相当于 skewY(45deg) 的效果)。
另外如果同时使用两个或以上的 transform 方法,可以把它们合并书写。

 

HTML / CSS 相关文章推荐
纯CSS3代码实现switch滑动开关按钮效果
Aug 30 HTML / CSS
支持IE8的纯css3开发的响应式设计动画菜单教程
Nov 05 HTML / CSS
CSS3中使用RGBA设置透明度的示例
Aug 04 HTML / CSS
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
Apr 26 HTML / CSS
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
Apr 26 HTML / CSS
CSS3 animation实现逐帧动画效果
Jun 02 HTML / CSS
CSS3制作hover下划线动画
Mar 27 HTML / CSS
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
Oct 29 HTML / CSS
HTML5 在canvas中绘制文本附效果图
Jun 23 HTML / CSS
html5的自定义data-*属性与jquery的data()方法的使用
Jul 02 HTML / CSS
使用canvas一步步实现图片打码功能的方法
Jun 17 HTML / CSS
使用CSS连接数据库的方式
Feb 28 HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
May 13 #HTML / CSS
几个CSS3的flex弹性盒模型布局的简单例子演示
May 12 #HTML / CSS
CSS3中的transform属性进行2D和3D变换的基本用法
May 12 #HTML / CSS
CSS3制作气泡对话框的实例教程
May 10 #HTML / CSS
详解CSS3的box-shadow属性制作边框阴影效果的方法
May 10 #HTML / CSS
解决CSS3的opacity属性带来的层叠顺序问题
May 09 #HTML / CSS
详解CSS3的opacity属性设置透明效果的用法
May 09 #HTML / CSS
You might like
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
PHP+APACHE实现网址伪静态
2015/02/22 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
python实现文本界面网络聊天室
2018/12/12 Python
Python Django 命名空间模式的实现
2019/08/09 Python
python如何绘制疫情图
2020/09/16 Python
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
学生实习自我鉴定
2013/10/11 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
相亲大会策划方案
2014/06/05 职场文书
社区创先争优承诺书
2014/08/30 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers