CSS自学笔记(13):CSS3 2D/3D转换

CSS3中新增了对元素进行2D和3D的转换效果,这样可以是开发人员很方便的做出视觉效果更好的网页来。

通过CSS3中属性的定义,我们可以对元素进行移动、缩放、拉伸、旋转等等,可以通过定义transform属性来实现转换效果。

浏览器支持

属性 浏览器支持
2D transform IE Firefox Chrome(-webkit-) Safari(-webkit-) Opera
3D transform IE Firefox Chrome(-webkit-) Safari(-webkit-) Opera

目前的主浏览器都已经支持2D效果的transform属性,3D效果的transform只有Opera不支持。同时要注意到时,在定义transform属性时,在Chrome和Safari浏览器中需要加(-webkit-)前缀。

transform属性的部分方法

函数 描述
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 矩阵。
translate3d(x,y,z) 定义 3D 转化。
translate(x,y) 定义 2D 转换。
translateX(x) 定义 2D/3D 转换,沿着 X 轴移动元素。
translateY(y) 定义 2D/3D 转换,沿着 Y 轴移动元素。
translateZ(z) 定义 3D 转换,沿着 Z 轴移动元素。
scale3d(x,y,z) 定义 3D 缩放转换。
scale(x,y) 定义 2D 缩放转换。
scaleX(x) 定义 2D/3D 缩放转换,通过给定一个 X 轴的值(宽度)。
scaleY(y) 定义 2D/3D 缩放转换,通过给定一个 Y 轴的值(高度)。
scaleZ(z) 定义 3D 缩放转换,通过给定一个Z轴的值。
rotate(angle) 定义 2D 旋转。
rotate3d(x,y,z,angle) 定义 3D 旋转。
rotateX(angle) 定义 3D 旋转,通过给定的值沿着 X 轴旋转。
rotateY(angle) 定义 3D 旋转,通过给定的值沿着 Y 轴旋转。
rotateZ(angle) 定义 3D 旋转,通过给定的值沿着 Z 轴旋转。
skew(x-angle,y-angle) 定义 2D 倾斜转换,沿着 X 和 Y 轴。
skewX(angle) 定义 2D 倾斜转换,通过给定的值沿着 X 轴倾斜。
skewY(angle) 定义 2D 倾斜转换,通过给定的值沿着 Y 轴倾斜。
perspective(n) 定义 3D 转换元素的透视视图。

注:angle为度数值

在CSS3中transform主要包括以下几种:旋转rotate扭曲skew缩放scale移动translate以及矩阵变形matrix

transform属性的语法结构:

	transform:none | <transform-function> [ <transform-function> ]*
也就是:
	transform:rotate|scale|skew| translate|matrix;

通过rotate(angle),可以对元素进行旋转操作,如果给定值为负值,元素会逆时针旋转。

*{
	transform: rotatey(130deg); transform: rotate(20deg);
}

无转换

(3D转换)transform:rotateY(130deg)

(2D转换)transform: rotate(20deg);

通过scale()方法,可以通过给定倍数对元素的尺寸进行放大或者缩小。

*{
	transform: scale(4,2);
}

无转换元素

transform: scale(4,2);

通过skew()方法,可以通过给定的角度值,对元素的X轴和Y轴进行翻转。

*{
	transform: skew(20deg,20deg);
}

无转换元素

transform: skew(20deg, 20deg);

我们通过一个就简单的导航栏看看transform属性各个方法的效果:

关键部分的CSS代码:

.menu ul {
    list-style-type: none;
    border-top: 10px solid gray;
}
.menu ul li a {
    color: #fff;
    float: left;
    margin: 0 5px;
    font-size: 15px;
    height: 50px;
    line-height: 50px;
    text-align: center;
    width: 80px;
    padding: 10px 5px;
    border-radius: 0 0 5px 5px;
    box-shadow: 0 0 1px #000, inset 0 0 2px #000;
    text-shadow: 0 2px 2px #000;
    text-decoration: none;
}
.menu ul li a {
    background: #2EC7D2;
}

.menu ul li.translate a:hover {
    transform: translate(-10px, -10px);
}
.menu ul li.translate-x a:hover {
    transform: translateX(-10px);
}
.menu ul li.translate-y a:hover {
    transform: translateY(-10px);
}
.menu ul li.rotate a:hover {
    transform: rotate(30deg);
}
.menu ul li.scale a:hover {
    transform: scale(0.8, 0.8);
}
.menu ul li.scale-x a:hover {
    transform: scaleX(0.8);
}
.menu ul li.scale-y a:hover {
    transform: scaleY(1.2);
}
.menu ul li.skew a:hover {
    transform: skew(30deg, 30deg);
}
.menu ul li.skew-x a:hover {
    transform: skewX(-30deg);
}
.menu ul li.skew-y a:hover {
    transform: skewY(30deg);
}
.menu ul li.matrix a:hover {
    transform: matrix(1, 1, -1, 0, 0, 0);
}
.menu ul li.rotate-y a:hover {
    transform:rotateY(120deg);
}
.menu ul li.rotate-z a:hover {
    transform:rotateZ(120deg);
}
.menu ul li.perspective a:hover {
    transform:perspective(50px) rotateY(30deg);
}
.menu ul li.transform-origin a {
    transform-origin: left;
}

部分html代码:

<div class="menu">
    <ul class="clearfix">
        <li class="item translate"><a href="#">Translate</a></li>
        <li class="item translate-x"><a href="#">TranslateX</a></li>
        <li class="item translate-y"><a href="#">TranslateY</a></li>
        <li class="item rotate"><a href="#">Rotate</a></li>
        <li class="item scale"><a href="#">Scale</a></li>
        <li class="item scale-x"><a href="#">ScaleX</a></li>
        <li class="item scale-y"><a href="#">ScaleY</a></li>
        <li class="item skew"><a href="#">Skew</a></li>
        <li class="item skew-x"><a href="#">SkewX</a></li>
        <li class="item skew-y"><a href="#">SkewY</a></li>
        <li class="item matrix"><a href="#">Matrix</a></li>
        <li class="item rotate-y"><a href="#">RotateY</a></li>
        <li class="item rotate-z"><a href="#">RotateZ</a></li>
        <li class="item perspective"><a href="#">perspective</a></li>
    </ul>
</div>

CSS自学笔记(13):CSS3 2D/3D转换

时间: 2024-08-05 23:40:42

CSS自学笔记(13):CSS3 2D/3D转换的相关文章

CSS自学笔记(10):CSS3盒子模型

CSS3为CSS技术的升级版本.最新版本. 就CSS而言,它是一个模块,是一个庞大而又复杂的模块,但是在CSS3中,将这一个庞大的模块分解为一个个容易理解的同时又很精简的小模块,同时CSS3中又添加了一些新的模块,所以CSS3朝着模块化的方向发展. CSS3中比较重要的模块有:选择器.盒子模型.背景和边框.文字特效.2D/3D转换.动画.多列布局.用户界面. CSS3的选择器常用的和CSS选择器差不多. CSS3 盒子模型 盒子模型是CSS3很重要的一个模型,它是指元素以何种方式显示以及元素间如

CSS自学笔记(11):CSS3背景和边框

CSS3 背景 在CSS3中新增了多个关于背景的属性,可以让我们对背景有了更多更好的操作,减少用第三方工具对背景图片进行修改美化. CSS3中主要是通过定义backgrounp中的各个属性来控制背景(高宽,位置,透明度----). 关于背景的部分常用属性有(*为CSS3中新增属性): 值 描述 background-color 规定要使用的背景颜色. background-position 规定背景图像的位置. background-size* 规定背景图片的尺寸. background-rep

CSS自学笔记(14):CSS3动画效果

在CSS3中也新增了一些能够对元素创建动画处理的属性.通过这些新增的属性,我们可以实现元素从一种样式变换成另一种样式时为元素添加动态效果,我们就可以取代网页中的动态图片.flash动画和JavaScript了. CSS3中新增的动画效果的属性以及主流浏览器支持情况 属性 浏览器支持 transition IE Firefox Chrome Safari(-webkit-) Opera @keyframes IE Firefox Chrome(-webkit-) Safari(-webkit-)

CSS自学笔记(12):CSS3文字特效

在CSS3中新增了多个文本属性,同样有了这些属性我们在进行问题特效处理时,就尽可能少的用到其他软件去制作特效文字了. 在以前使用CSS进行web开发的时候,必须使用计算机上安装好的字体,如果有些用户的计算机上未安装该字体,可能会达不到开发人员的预期效果.而通过CSS3,开发人员可以使用他们喜欢的任意字体,只要将需要的字体文件放到web服务器上就OK了. 注:现在的主流浏览器不支持部分新增属性. 最简单的文本特效就是给文本添加阴影了. 可以给文本添加水平偏移值.垂直偏移值和模糊半径,也可以定义阴影

CSS3的3D转换效果详解介绍

CSS3的3D转换效果详解介绍:本章介绍一下CSS3的3D转换效果,此效果的实现依靠的是transform属性,3D转换只是此属性的部分应用,更多相关内容可以参阅CSS3的transform属性总略介绍一章节.掌握3D转换效果,可以从三个方法作为突破口,分别是rotateX, rotateY, rotateZ,在2D变换过程中rotate()函数的应用,它表示旋转的意思,由于是2D变换,所以它只是在一个平面进行旋转,所以无需细分,具体可以参阅CSS3的2D转换效果详细介绍一章节. 下面分别介绍一

CSS自学笔记(9):CSS拓展(二)

CSS图片 当一个网页上有一张或多张图片,而且这些图片的尺寸比较大时,为了是网页布局更紧凑合理,我们可以将这些图片放到一个图片库里,可以有效的防止图片过大可能会对网页布局造成的不良影响. 通过CSS我们就可以实现这些操作,下面是一个简单的例子: 内马尔破门瞬间 街舞助兴 激情墨西哥 梅西的任意球来 源代码是: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"/> 5 &

CSS自学笔记(3):CSS样式表的使用

当浏览器读到一个样式表时,浏览器会根据这个样式表来格式化html文档,从而表现出各式各样的网页. 想要浏览器读到样式表,有三种方法: 1.外部样式表 外部样式表可以理解为.CSS文件.当多个页面使用同一个样式的时候,外部样式表是一个很理想的选择. 在使用外部样式表的情况下,可以通过改变一个文件来改变整个站点的外观,无需在调整html文件,尤其是多个页面使用同一个样式的时候. 每个html页面使用标签<link>来连接外部样式表: <head> <link rel="

CSS自学笔记(5):CSS的样式

CSS中拥有各种各样的样式表,而基本的样式有背景,文本,字体,链接,列表,表格,轮廓. 一.CSS-背景 CSS中允许用纯色背景,也允许用图片来创建复杂的个性背景. p {background-color: #000;} 是用纯色作为背景.这时你可以定义其他属性,生成不同效果的背景. CSS中也可以用图片作为背景,这是就需要使用background-image属性了,如果属性值为一个URL值,并且图片文件存在,那么就可以看到用该图片做为背景的网页了 body {background-image:

CSS3的3D转换translate3d(x,y,z)函数

CSS3的3D转换translate3d(x,y,z)函数:translate3d(x,y,z)只是规定3D转换的一种形式,更多相关内容可以参阅CSS3的3D转换效果详解介绍一章节.此函数用来规定指定元素在三维空间中的位移.语法结构: translate3d(x,y,z) 参数解析:1.x:表示在x轴方向的位移.2.y:表示在y轴方向的位移.3.z:表示在z轴方向的位移.代码实例:1.x轴方向的位移: <!DOCTYPE html> <html> <head> <