CSS实现五种常用的2D转换


Posted in HTML / CSS onDecember 06, 2021

CSS 中的 2D 转换允许我们在二维空间中执行一些基本的变换操作,例如移动、旋转、缩放或扭曲等,变换后的元素与绝对定位的元素类似,不会影响周围的元素,但可以和周围的元素重叠,不同的是,转换后的元素在页面中任然会占用为转换之前的空间。

借助 CSS 中的 transform 属性以及下列转换函数就可以实现 2D 转换:

  1. matrix():以一个包含六个值(a, b, c, d, e, f)的变换矩阵的形式指定一个 2D 变换,相当于直接应用一个 [a,b,c,d,e,f] 的变换矩阵;
  2. translate():将对象沿 X 轴和 Y 轴平移,该函数需要提供 1~2 个参数,第一个参数对应 X 轴,第二个参数对应 Y 轴,如果未提供第二个参数,则默认值为 0;
  3. translatex():将对象沿 X 轴(水平方向)的平移;
  4. translatey():将对象沿 Y 轴(垂直方向)的平移;
  5. rotate():旋转指定对象,在函数的参数中可以指定旋转的角度;
  6. scale():将对象进行缩放,该函数需要提供 1~2 个参数,第一个参数对应 X 轴,第二个参数对应 Y 轴,如果未提供第二个参数,则默认取第一个参数的值;
  7. scalex():将对象进行缩放(改变元素的宽度);
  8. scaley():将对象进行缩放(改变元素的高度);
  9. skew():将对象沿 X 轴和 Y 轴方向进行倾斜扭曲,该函数需要提供 1~2 个参数,第一个参数对应 X 轴,第二个参数对应 Y 轴。如果未提供第二个参数,则默认值为 0;
  10. skewx():将对象沿 X 轴的(水平方向)扭曲;
  11. skewy():将对象沿 Y 轴的(垂直方向)扭曲。

1. translate()

translate() 函数用来根据指定的参数将元素沿水平(X轴)或垂直(Y轴)方向移动,函数的语法格式如下:

translate(tx, ty)

其中 tx 对应元素在水平(X轴)方向的移动距离,ty 对应元素在垂直(Y轴)方向的移动距离,参数 ty 可以忽略(默认为 0),两个参数均可以为负值。

【示例】使用 translate() 函数来移动指定的元素:

<!DOCTYPE html>
<html>
<head>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: #CCC;
            transform: translate(100px, 10px);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

运行结果如下图所示:

CSS实现五种常用的2D转换

图:translate() 函数演示

如果只是将元素水平移动或者只是将元素垂直移动,也可以使用 translateX()(将元素水平移动)或 translateY()(将元素垂直移动),translateX() 和 translateY() 函数均只需要提供一个参数即可,例如:

translateX(100px);      /* 等同于 translate(100px, 0px); */
translateY(10px);        /* 等同于 translate(0px, 10px); */

2. rotate()

rotate() 函数用来按照给定的角度来旋转元素,函数的语法格式如下:

rotate(a)

其中参数 a 表示元素要旋转的角度,若 a 为正值则表示顺时针旋转,若 a 为负值则表示逆时针旋转。

【示例】使用 rotate() 函数来旋转元素:

<!DOCTYPE html>
<html>
<head>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: #CCC;
            margin: 20px 0px 0px 20px;
            transform: rotate(45deg);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

运行结果如下图所示:

CSS实现五种常用的2D转换

图:rotate() 函数演示

3. scale()

scale() 函数用来缩放(放大或缩小)指定的元素,函数的语法格式如下:

scale(sx, sy)

其中 sx 表示水平方向的缩放比例,sy 表示垂直方向的缩放比例。另外,参数 sy 可以省略,它的默认值等于 sx。

【示例】使用 scale() 函数缩放指定元素:

<!DOCTYPE html>
<html>
<head>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: #CCC;
            transform: scale(0.7);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

运行结果如下图所示:

CSS实现五种常用的2D转换

图:scale() 函数演示

提示:当 scale() 中,给定的参数值在 -1~1 范围之外时,元素将被放大;当在参数值在 -1~1 范围之内时,元素将被缩小。

与 translate() 函数类似,如果是仅在水平方向或者仅在垂直方向上缩放元素大小,也可以使用 scaleX()(在水平方向缩放元素)和 scaleY()(在垂直方向缩放元素)函数。scaleX() 和 scaleY() 函数仅需要提供一个参数即可,例如:

scaleX(0.5);    /* 等同于 scale(0.5, 1); */
scaleY(0.5);    /* 等同于 scale(1, 0.5); */

4. skew()

skew() 函数用来将元素沿水平方向(X轴)和垂直方向(Y轴)倾斜扭曲,函数的语法格式如下:

skew(ax, ay)

其中,参数 ax 表示元素水平方向的扭曲角度,参数 ay 表示元素垂直方向的扭曲角度。另外,参数 ay 可以省略,若省略参数 ay,则其默认值为 0。

【示例】使用 skew() 函数来扭曲指定元素:

<!DOCTYPE html>
<html>
<head>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: #CCC;
            margin: 20px 0px 0px 10px;
            transform: skew(-15deg, 20deg);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

运行结果如下图所示:

CSS实现五种常用的2D转换

图:skew() 函数演示

另外,如果是仅在水平方向或者仅在垂直方向上对元素进行扭曲,也可以使用 skewX()(在水平方向缩放元素)和 skewY()(在垂直方向缩放元素)函数来完成。skewX() 和 skewY() 函数仅需要提供一个参数即可,例如:

skewX(15deg);    /* 等同于 skew(15deg, 0deg); */
skewY(15deg);    /* 等同于 skew(0deg, 15deg); */

5. matrix()

matrix() 函数可以看作是 skew()、scale()、rotate() 和 translate() 几个函数的缩写形式,通过 matrix() 函数可以同时定义所有 2D转换操作,函数的语法格式如下:

matrix(a, b, c, d, tx, ty)

matrix() 函数中的 6 个参数分别对应 scaleX()、skewY()、skewX()、scaleY()、translateX()、translateY() 几个函数,您可以使用 matrix() 来实现各种 2D转换操作,例如:

  • translate(tx, ty) = matrix(1, 0, 0, 1, tx, ty);:其中 tx 和 ty 是水平和垂直平移值;
  • rotate(a) = matrix(cos(a), sin(a), -sin(a), cos(a), 0, 0);:其中,a 是度数的值。您可以交换 sin(a) 和 -sin(a) 值来进行反向旋转;
  • scale(sx, sy) = matrix(sx, 0, 0, sy, 0 ,0);:其中 sx 和 sy 是水平和垂直缩放比例值;
  • skew(ax, ay) = matrix(1, tan(ay), tan(ay), 1, 0 ,0);:其中 ax 和 ay 是以 deg 为单位的水平和垂直值。

【示例】使用 matrix() 函数对元素进行 2D转换操作:

<!DOCTYPE html>
<html>
<head>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: #CCC;
            margin: 20px 0px 0px 10px;
            float: left;
        }
        .one {
            transform: matrix(0.866, 0.5, -0.5, 0.866, 0, 0);
        }
        .two {
            margin-left: 35px;
            transform: matrix(0.586, 0.8, -0.8, 0.686, 0, 0);
        }
        .three {
            margin-left: 40px;
            margin-top: 25px;
            transform: matrix(0.586, 0.8, -0.8, 0.866, 0, 0);
        }
        .four {
            transform: matrix(0.586, 0.8, -0.8, 0.586, 40, 30);
        }
    </style>
</head>
<body>
    <div class="one"></div>
    <div class="two"></div>
    <div class="three"></div>
    <div class="four"></div>
</body>
</html>

运行结果如下图所示:

CSS实现五种常用的2D转换

图:matrix() 函数演示 

到此这篇关于CSS实现五种常用的2D转换的文章就介绍到这了,更多相关CSS  2D转换内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
让IE6、IE7、IE8支持CSS3的脚本
Jul 20 HTML / CSS
css3的@media属性实现页面响应式布局示例代码
Feb 10 HTML / CSS
深入浅析css3 中display box使用方法
Nov 25 HTML / CSS
CSS3对背景图片的裁剪及尺寸和位置的设定方法
Mar 07 HTML / CSS
利用CSS3 动画 绘画 圆形动态时钟
Mar 20 HTML / CSS
详解CSS3原生支持div铺满浏览器的方法
Aug 30 HTML / CSS
CSS3实现的渐变幻灯片效果
Dec 07 HTML / CSS
html5之Canvas路径绘图、坐标变换应用实例
Dec 26 HTML / CSS
html5读取本地文件示例代码
Apr 22 HTML / CSS
HTML5 3D衣服摇摆动画特效
Mar 17 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
Aug 24 HTML / CSS
Html5页面内使用JSON动画的实现
Jan 29 HTML / CSS
CSS巧用渐变实现高级感背景光动画
在HTML中引入CSS的几种方式介绍
div与span之间的区别与使用介绍
Unicode中的CJK(中日韩统一表意文字)字符小结
Dec 06 #HTML / CSS
HTML5 新增内容和 API详解
Nov 17 #HTML / CSS
Html5同时支持多端sdk的小技巧
Nov 17 #HTML / CSS
使用canvas仿Echarts实现金字塔图的实例代码
You might like
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
最新28个很棒的jQuery 教程
2011/05/28 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
python使用matplotlib画饼状图
2018/09/25 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
python实现图书借阅系统
2019/02/20 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
Python itertools.product方法代码实例
2020/03/27 Python
建筑设计所实习生自我鉴定
2013/09/25 职场文书
大学生优秀的自我评价分享
2013/10/22 职场文书
前台文员我鉴定
2014/01/12 职场文书
学生出入校管理制度
2014/01/16 职场文书
物流专员岗位职责
2014/02/17 职场文书
环保建议书200字
2014/05/14 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript