解锁css3新姿势之transform3D各属性及transform兼容之矩阵写法
来源:互联网 发布:一木成林软件 编辑:程序博客网 时间:2024/06/08 06:54
闲来无事,整理一下可以打造炫酷网站的一些transform的属性
1. 矩阵transform:matrix()
这个矩阵哥们是有些厉害的,不得不多说两句,这哥们可以同时写上缩放,旋转,拉伸,位移等变形;详细内容见下面
2.transform-style:preserve-3d;创造3D空间
3.transform:rotate;2D旋转;
4.transform:scale(倍数),缩放函数,取值正数,负数,小数;
5.transform:skew(xdeg,ydeg);拉伸函数或者斜切;
6.transform:translate();位移;
7.transform:可以同时有多种变形的样式混写
矩阵transform:matrix(),可以同时写上缩放,旋转,拉伸,位移等变形;
如果变形不用矩阵来写的话,不兼容ie9以下,js也不会获取到deg度数;
所以用矩阵来用数字值来表达度数,让js动态获取;
transform:matrix(a,b,c,d,e,f);martrix共有6个值; 初始值是matrix(1,0,0,1,0,0);
兼容ie9,需要另写声明:
filter:progid:DXImageTransform.Microsoft.Matrix(M11=1,M12=0,M21=0,M22=1,SizingMethod='auto expand');
ie矩阵下没有e和f两个值,即没有位移的值;具体位移可用定位来写;
其中:M11==a;M12==b,M21=c,M22=d矩阵实现缩放;
x轴的缩放:a=x*a c=x*c e=x*e;y轴的缩放:b=y*b d=y*d f=y*f;d
如果只有缩放效果的话,那么只写a,d的值即可
如果有别的效果的话,matrix就不是默认值了,乘以相应的值即可;
.box{ width:300px; height: 400px; border:1px solid red; margin: 50px auto 0; font-size: 100px; color:#fff; line-height: 400px; text-align: center; } .div1{ width:300px; height: 400px; background: blue; transition: 3s; } .div1{ transform:matrix(0.5,0,0,0.5,0,0); filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.5,M12=0,M21=0,M22=0.5,SizingMethod='auto expand');
矩阵实现位移;transform:matrix(a,b,c,d,e,f);只需要改变ef的值
x轴的位移:x+e;y轴的位移:y+f;位移数值可以不用加px单位
如果至实现 x和 y位移100px的话,matrix代码如下
transform:matrix(1,0,0,1,100,100);
矩阵实现斜切;
矩阵的斜切是cb的值,c就是skewX的效果,b是skewY的效果;
而cb是角度的tan值;tan值的计算公式Math.tan(xDeg/180*Math.PI);
但是matrix只识别tan值,不能写公式;
所以先计算tan值,可以用一个弹窗在网页中弹出来计算的tan值,之后再写在matrix中去
例如弹窗计算30度tan值代码
<script> alert(Math.tan(30Deg/180*Math.PI))</script>
x轴的倾斜需要写的值: c=Math.tan(xDeg/180*Math.PI);
y轴倾斜:b=Math.tan(yDeg/180*Math.PI);
例如实现只有x轴拉伸30度的效果
transform:matrix(1,0.577,0,1,0,0);filter:progid:DXImageTransform.Microsoft.Matrix( M11=1, M12=0.577, M21=0 , M22=1,SizingMethod='auto expand');矩阵实现旋转;
transform:matrix(a,b,c,d,e,f);需要改变abcd的值
其中a d是相等的cos值;
b c是正负的sin值;
同样的可以用弹窗计算相应的值
计算公式:
a=Math.cos(deg/180*Math.PI);
b=Math.sin(deg/180*Math.PI);
c=-Math.sin(deg/180*Math.PI);
d=Math.cos(deg/180*Math.PI);
例如弹窗计算30度的sin值
<script> alert(Math.sin(30/180*Math.PI));</script>
如果之前没有别的样式,直接在abcd上写上相对应的值即可;
如果之前有别的样式,即abcd不是默认值了,那么写上计算出的abcd值乘以以前的值 ;
- 解锁css3新姿势之transform3D各属性及transform兼容之矩阵写法
- css3 新属性的兼容性之--transform
- CSS3新属性及兼容代码一览
- CSS3 transform-origin属性之初理解
- CSS3变形之transform-origin属性
- CSS3属性之transform 矩阵转换深入讨论(2D)
- 自定义控件从入门到轻生之---解锁新姿势
- css3之transform详解
- CSS3之变换Transform
- CSS3之变形transform
- CSS3之变换Transform
- css3学习之:transform
- CSS3之transform详解
- css3之变形transform
- CSS3之Transform
- CSS3变形之Transform-style和Perspective等属性
- css3动画属性详解之transform、transition、animation
- 吃透css3之3d属性--perspective和transform
- Eclipse项目出现红色叹号的解决办法
- MVP+RxJava+Retrofit使用GET解析拼参数
- 吴恩达(Andrew Ng)深度学习工程师笔记
- (安卓)属性动画 (平移,旋转,透明)
- 命令注入突破长度限制 | 从CTF题目讲起
- 解锁css3新姿势之transform3D各属性及transform兼容之矩阵写法
- 【PAT】1003. 我要通过!(20) C++语言 浙江大学PAT上机题
- mysql -5.7 的安装
- view的CustomBanner轮播
- web开发者工具插件
- Python的学习&文件
- ShoneSharp语言(S#)的设计和使用介绍系列(2)— 掀开盖头
- DSSM, 深度语义匹配模型
- 吕鑫书中自己定义的CMyTime