css3在原来的基础上增加了变形和动画相关的属性,动画三兄弟:transform、transition和animation,通过使用这三个属性可以达到很炫酷的效果。需要注意的是这三个属性都是css3新增的属性,各大浏览器支持方面还不是特别好,使用时要特别注意浏览器的兼容性,本文重点介绍Transform的使用方法,具体内容如下
浏览器支持情况:
Internet Explorer 10、Firefox、Opera 支持 transform 属性。
Internet Explorer 9 支持替代的 -ms-transform 属性(仅适用于 2D 转换)。
Safari 和 Chrome 支持替代的 -webkit-transform 属性(3D 和 2D 转换)。
Opera 只支持 2D 转换。
2D transform变换方法
•translate(x, y)方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。x, y的值可以取正负,分别表示表示向不同的方向偏移。
•rotate(angle)方法, 表示旋转angle角度。angle为正时,按顺时针角度旋转,为负值时,元素逆时针旋转。
•scale(x, y)方法,表示元素在x轴和y轴上的缩放比例,参数大于1时,元素放大,小于1时,元素缩小。
•skew(x-angle,y-angle)方法,用来对元素进行扭曲变行,第一个参数是水平方向扭曲角度,第二个参数是垂直方向扭曲角度。其中第二个参数是可选参数,如果没有设置第二个参数,那么Y轴为0deg
•matrix(n,n,n,n,n,n)方法, 以一个含六值的变换矩阵的形式指定一个2D变换,此属性值使用涉及到数学中的矩阵,感兴趣的读者可以深入了解一下,这里就不做详细介绍了。
下面是上面方法的演示:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>transform 2D演示</title>
- <style type="text/css">
- #container{
- width: 700px;
- height: 120px;
- border: 1px solid blue;
- margin: 20px auto;
- padding: 20px 20px;
- }
- #div1 ,#div2, #div3, #div4{
- height: 100px;
- width: 100px;
- border: 1px dashed red;
- display: inline-block;
- }
- #div1 div{
- height: 100px;
- width: 100px;
- background: #63F7ED;
- transform:translate(20px,10px); /* W3C标准 */
- -ms-transform:translate(20px,10px); /* IE 9 */
- -moz-transform:translate(20px,10px); /* Firefox */
- -webkit-transform:translate(20px,10px); /* Safari 和 Chrome */
- -o-transform:translate(20px,10px); /* Opera */
- }
- #div2{margin-left: 50px;}
- #div2 div{
- height: 100px;
- width: 100px;
- background: #63F7ED;
- transform:rotate(45deg); /* W3C标准 */
- -ms-transform:rotate(45deg); /* IE 9 */
- -moz-transform:rotate(45deg); /* Firefox */
- -webkit-transform:rotate(45deg); /* Safari 和 Chrome */
- -o-transform:rotate(45deg); /* Opera */
- }
- #div3{margin-left: 100px;}
- #div3 div{
- height: 100px;
- width: 100px;
- background: #63F7ED;
- transform:scale(2,0.5); /* W3C标准 */
- -ms-transform:scale(2,0.5); /* IE 9 */
- -moz-transform:scale(2,0.5); /* Firefox */
- -webkit-transform:scale(2,0.5); /* Safari 和 Chrome */
- -o-transform:scale(2,0.5); /* Opera */
- }
- #div4{margin-left: 100px;}
- #div4 div{
- height: 100px;
- width: 100px;
- background: #63F7ED;
- transform:skew(30deg,-20deg); /* W3C标准 */
- -ms-transform:skew(30deg,-20deg); /* IE 9 */
- -moz-transform:skew(30deg,-20deg); /* Firefox */
- -webkit-transform:skew(30deg,-20deg); /* Safari 和 Chrome */
- -o-transform:skew(30deg,-20deg); /* Opera */
- }
- </style>
- </head>
- <body>
- <div id="container">
- <div id="div1">
- <div>translate</div>
- </div>
- <div id="div2">
- <div>rotate</div>
- </div>
- <div id="div3">
- <div>scale</div>
- </div>
- <div id="div4">
- <div>skew</div>
- </div>
- </div>
- </body>
- </html>
效果如下:
transform-origin 属性
前面我们提到的transform的方法都是基于元素的中心来变换的,也就是元素变换的基点默认是元素的中心。但是有时候我们需要在不同的位置对元素进行这些操作,那么我们就可以使用transform-origin来对元素进行基点位置改变。该属性可以接收三个参数:
transform-origin: x-axis y-axis z-axis;
•x-axis,表示水平方向上的取值,可以取 字符参数值left,center right,也可以取百分比,字符参数值对应的百分值为left=0%;center=50%;right=100%。
•y-axis,表示竖直方向上的取值,还可以设置字符值top,center,bottom,也可以取百分比,字符参数值对应的百分值为top=0%;center=50%;bottom=100%。
•z-axis,表示视图被置于 Z 轴的何处,用于3D变形中。
我们可以设置基点来与之前的transform图形进行对比:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>transform-origin演示</title>
- <style type="text/css">
- *{
- margin: 0;
- padding: 0;
- }
- #container{
- width: 800px;
- height: 150px;
- border: 1px solid blue;
- margin: 20px auto;
- padding: 20px 20px;
- }
- #div1 ,#div2, #div3, #div4{
- height: 100px;
- width: 100px;
- border: 1px dashed red;
- display: inline-block;
- }
- #div1 div{
- height: 100px;
- width: 100px;
- background: #63F7ED;
- transform:translate(20px,10px); /* W3C标准 */
- -ms-transform:translate(20px,10px); /* IE 9 */
- -moz-transform:translate(20px,10px); /* Firefox */
- -webkit-transform:translate(20px,10px); /* Safari 和 Chrome */
- -o-transform:translate(20px,10px); /* Opera */
- transform-origin:left top; /* W3C标准 */
- -ms-transform-origin:left top; /* IE 9 */
- -moz-transform-origin:left top; /* Firefox */
- -webkit-transform-origin:left top; /* Safari 和 Chrome */
- -o-transform-origin:left top; /* Opera */
- }
- #div2{margin-left: 100px;}
- #div2 div{
- height: 100px;
- width: 100px;
- background: #63F7ED;
- transform:rotate(45deg); /* W3C标准 */
- -ms-transform:rotate(45deg); /* IE 9 */
- -moz-transform:rotate(45deg); /* Firefox */
- -webkit-transform:rotate(45deg); /* Safari 和 Chrome */
- -o-transform:rotate(45deg); /* Opera */
- transform-origin:0% 0%; /* W3C标准 */
- -ms-transform-origin:0% 0%; /* IE 9 */
- -moz-transform-origin:0% 0%; /* Firefox */
- -webkit-transform-origin:0% 0%; /*Safari 和 Chrome */
- -o-transform-origin:0% 0%; /* Opera */
- }
- #div3{margin-left: 50px;}
- #div3 div{
- height: 100px;
- width: 100px;
- background: #63F7ED;
- transform:scale(2,0.5); /* W3C标准 */
- -ms-transform:scale(2,0.5); /* IE 9 */
- -moz-transform:scale(2,0.5); /* Firefox */
- -webkit-transform:scale(2,0.5); /* Safari 和 Chrome */
- -o-transform:scale(2,0.5); /* Opera */
- transform-origin:center top; /* W3C标准 */
- -ms-transform-origin:center top; /* IE 9 */
- -moz-transform-origin:center top; /* Firefox */
- -webkit-transform-origin:center top; /* Safari 和 Chrome */
- -o-transform-origin:center top;
- }
- #div4{margin-left: 150px;}
- #div4 div{
- height: 100px;
- width: 100px;
- background: #63F7ED;
- transform:skew(30deg,-20deg); /* W3C标准 */
- -ms-transform:skew(30deg,-20deg); /* IE 9 */
- -moz-transform:skew(30deg,-20deg); /* Firefox */
- -webkit-transform:skew(30deg,-20deg); /* Safari 和 Chrome */
- -o-transform:skew(30deg,-20deg); /* Opera */
- transform-origin:100% 100%; /* W3C标准 */
- -ms-transform-origin:100% 100%; /* IE 9 */
- -moz-transform-origin:100% 100%; /* Firefox */
- -webkit-transform-origin:100% 100%; /* Safari 和 Chrome */
- -o-transform-origin:100% 100%;
- }
- </style>
- </head>
- <body>
- <div id="container">
- <div id="div1">
- <div>translate(基点为(left top)</div>
- </div>
- <div id="div2">
- <div>rotate(基点为(0%, 0%)</div>
- </div>
- <div id="div3">
- <div>scale(基点为(center, top)</div>
- </div>
- <div id="div4">
- <div>skew(基点为(100%, 100%)</div>
- </div>
- </div>
- </body>
- </html>
效果如下:
对比发现:translate()方法与之前的没有区别,其他三个方法基点改变了,图形变形效果也有所变化。
3D transform变换方法
Internet Explorer 10 和 Firefox 支持 3D 转换.
Chrome 和 Safari 必须添加前缀 -webkit-.
Opera 还不支持 3D 转换(支持 2D 转换 ).
三维变换使用基于二维变换的相同属性。CSS3中的3D变换主要包括以下几种功能函数:
•3D位移:CSS3中的3D位移主要包括translateZ()和translate3d()两个功能函数;
•3D旋转:CSS3中的3D旋转主要包括rotateX()、rotateY()、rotateZ()和rotate3d()四个功能函数;
•3D缩放:CSS3中的3D缩放主要包括scaleZ()和scale3d()两个功能函数;
•3D矩阵:CSS3中3D变形中和2D变形一样也有一个3D矩阵功能函数matrix3d()。
还有以下几个转换属性:
•transform-style: 规定被嵌套元素如何在 3D 空间中显示。
•perspective: 规定 3D 元素的透视效果。
•perspective-origin: 规定 3D 元素的底部位置。
•backface-visibility: 定义元素在不面对屏幕时是否可见。
目前各大主流浏览器对transform 3d属性的兼容性还不是特别好,感兴趣的读者可以自行深入了解。下面我们介绍几个常用的功能方法:
rotateX()方法,围绕其在一个给定度数X轴旋转的元素;
rotateY()方法,围绕其在一个给定度数Y轴旋转的元素;
rotateZ()方法,围绕其在一个给定度数Z轴旋转的元素。
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>transform 3d </title>
- <style type="text/css">
- *{
- margin: 0;
- padding: 0;
- }
- #container{
- width: 440px;
- height: 120px;
- border: 1px solid blue;
- margin: 20px auto;
- padding: 20px 20px;
- }
- #div1 ,#div2, #div3, #div4{
- height: 100px;
- width: 100px;
- border: 1px dashed red;
- display: inline-block;
- }
- #div1 div{
- height: 100px;
- width: 100px;
- background: #63F7ED;
- transform:rotateX(45deg); /* W3C标准 */
- -webkit-transform:rotateX(45deg)); /* Safari 和 Chrome */
- }
- #div2{margin-left: 50px;}
- #div2 div{
- height: 100px;
- width: 100px;
- background: #63F7ED;
- transform:rotateY(45deg); /* W3C标准 */
- -webkit-transform:rotateY(45deg)); /* Safari 和 Chrome */
- }
- #div3{margin-left: 50px;}
- #div3 div{
- height: 100px;
- width: 100px;
- background: #63F7ED;
- transform:rotateZ(45deg); /* W3C标准 */
- -webkit-transform:rotateZ(45deg)); /* Safari 和 Chrome */
- }
- </style>
- </head>
- <body>
- <div id="container">
- <div id="div1">
- <div>rotateX(45deg)</div>
- </div>
- <div id="div2">
- <div>rotateY(45deg)</div>
- </div>
- <div id="div3">
- <div>rotateZ(45deg)</div>
- </div>
- </div>
- </body>
- </html>
下面是显示效果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
CSS3,Transform
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]