Title/ CSS Transform完全指南(第二版) #flight.Archives007

序: 第7天了! 终身学习, 坚持创作, 为生活埋下微小的信仰. 我是忘我思考,共同进步!

简介: 一篇最简约高效的CSS Transform教程.

Tag/ Transform介绍

CSS的 transform 可以让元素产生变形效果,比如旋转,缩放,倾斜或平移

element {
transform: scale(0.5) translate(10px, 10px); /*`transform` 支持同时指定多个函数.*/
}

上面代码中 element 会缩放一半大小, 同时向右和向下各平移 10px.

接下来逐一介绍现支持的所有 Transform 函数.

Tag/ Transform 函数介绍

Matrix(矩阵计算)相关函数

  1. matrix3d(a1, b1, c1, d1, a2, b2, c2, d2, a3, b3, c3, d3, a4, b4, c4, d4)

    这个函数涉及高等数学知识, 矩阵变换, 使用非常复杂 ,随后介绍的rotate, scale, skew, translate 函数都是基于这个 matrix 函数实现的

    但是在实战中直接使用这个函数的情况不大, 多数是间接使用基于该方法实现的函数, 所以本文不详细介绍该方法.

    就像Canvas中的 webgl, 在实战中一般都是使用基于 webgl 实现的JS库, 如 three.js

    关于 matrix矩阵 的详细内容可以参见 https://www.zhangxinxu.com/wordpress/2012/06/css3-transform-matrix-矩阵/

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

    这个函数是 matrix3d(a, b, 0, 0, c, d, 0, 0, 0, 0, 1, 0, tx, ty, 0, 1) 的简写形式.

Perspective(透视深度)相关函数

  1. perspective(l)

    l: <length>, 表示透视深度, 在值为正数时生效

Rotate(旋转)相关函数

  1. rotate3d(x, y, z, a)

    x,y,z,a: <angle>, 横坐标, 纵坐标, Z坐标 和 顺时针旋转的角度

  2. rotate(a)

    a: <angle>, 表示顺时针旋转的角度

  3. rotateX(a)

    a: <angle>, 表示横坐标旋转的角度

  4. rotateY(a)

    a: <angle>, 表示纵坐标旋转的角度

  5. rotateZ(a)

    a: <angle>, 表示Z坐标旋转的角度

Scale(缩放)相关函数

  1. scale3d(sx, sy, sz)

    sx, sy, sz: <percentage>, 在X轴, Y轴, Z轴上的缩放大小.

    参数取值为 1 时不进行缩放处理, 在 [0~1] 区间按比例缩小, 在 [>1] 时按比例放大.

    参数取负值时元素将沿原点中心翻转.

  2. scale(sx, [sy])

    sx, sy(可选): <percentage>, 在X轴, Y轴上的缩放大小.

  3. scaleX(s)

    s: <percentage>, 在X轴上的缩放大小.

  4. scaleY(s)

    s: <percentage>, 在Y轴上的缩放大小.

  5. scaleZ(s)

    s: <percentage>, 在Z轴上的缩放大小.

Skew(倾斜)相关函数

  1. skew(ax, [ay])

    ax, ay(可选): <angle>, 元素沿X轴和Y轴倾斜的角度

  2. skewX(a)

    a: <angle>, 元素沿X轴倾斜的角度

  3. skewY(a)

    a: <angle>, 元素沿Y轴倾斜的角度

Translate(平移)相关函数

备注: translate 是一个CSS属性, 可以单独使用, 用法与函数一致.

  1. translate3d(tx, ty, tz)

    tx, ty, tz: <length>, 元素沿X轴,Y轴和Z轴平移的距离.

  2. translate(tx, [ty])

    tx, ty(可选): <length>, 元素沿X轴和Y轴平移的距离.

  3. translateX(t)

    t: <length>, 元素沿X轴平移的距离.

  4. translateY(t)

    t: <length>, 元素沿Y轴平移的距离.

  5. translateZ(t)

    t: <length>, 元素沿Z轴平移的距离.

Tag/ Transform 属性介绍

  1. transform-origin

    指定元素变形的原点, 默认值为 center.

    可取值:

    transform-origin: 2px; /*如果只有一个值, 则表示原点的横坐标*/
    
    transform-origin: 2px 2em; /*如果有两个值, 则分别表示原点的横坐标和纵坐标*/
    
    transform-origin: left top; /*可以使用关键字: left, center, right, top 或 bottom*/
    
    transform-origin: top right; /*如果两个值都是关键字, 则可以先纵坐标, 后横坐标*/
    
    transform-origin: 20px left; /*这是错误的表示. 如果关键字和长度单位同时使用, 不可以都表示纵坐标或横坐标*/
    
    transform-origin: 2px 10% 20px; /*如果有三个值, 则前两个值用法不变, 第三个值表示原点的深度(Z坐标)*/
  2. transform-style

    指定元素的子元素是位于 3D 空间中还是平面中, 默认值是 flat.

    可取值:

    transform-style: flat; /*子元素位于独立的平面*/
    
    transform-style: preserve-3d; /*子元素位置继承自父元素的3d位置*/
  3. transform-box

    指定变形的布局框

    /*不了解CSS Box Model的, 可以去搜一下, 本文不详细介绍.*/
    transform-box: content-box /*使用内容框为盒布局方式*/ transform-box: border-box /*使用边框框为盒布局方式*/ transform-box: fill-box /*使用填充边界框为盒布局方式, 填充边界框是仅包含元素几何形状的框. 对于基本形状, 这是填充的区域.*/ transform-box: stroke-box /*使用描边框为盒布局方式. 描边框是包含元素的几何形状及其笔画形状的边界框.*/ transform-box: view-box /*使用最近父元素的SVG Viewport为盒布局方式*/

->> Reference link

MDN中文文档 https://developer.mozilla.org/zh-CN/docs/Web/CSS/transform

MDN 英文文档 https://developer.mozilla.org/en-US/docs/Web/CSS/transform

transform-origin属性介绍 https://developer.mozilla.org/zh-CN/docs/Web/CSS/transform-origin

CSS-Tricks https://css-tricks.com/almanac/properties/t/transform/

Quackit https://www.quackit.com/css/css3/properties/css_transform-box.cfm

张鑫旭 - Matrix矩阵 https://www.zhangxinxu.com/wordpress/2012/06/css3-transform-matrix-矩阵/

张鑫旭 - CSS动画 https://www.zhangxinxu.com/wordpress/2010/11/css3-transitions-transforms-animation-introduction/

->> Version History

现在版本为V2.0, 下一版预计添加两处(函数和transform-origin) flight.Playground 以便互动式理解

详见 Github(@flightmakers)

2021.8.17 在掘金发布V0.1

2021.8.18 补全内容. 发布V1.0, 添加了两个链接

2021.8.24 补全了许多其他Transform属性,发布V2

CSS Transform完全指南(第二版) #flight.Archives007的更多相关文章

  1. CSS Transform完全指南 #flight.Archives007

    Title/ CSS Transform完全指南 #flight.Archives007 序: 第7天了! 终身学习, 坚持创作, 为生活埋下微小的信仰. 我是忘我思考,共同进步! 简介: 一篇最简约 ...

  2. (备忘)Nginx中文手册(技术指南第二版)

    Nginx 常见应用技术指南[Nginx Tips] 第二版 目 录 一. Nginx 基础知识二. Nginx 安装及调试三. Nginx Rewrite四. Nginx Redirect五. Ng ...

  3. Tomcat权威指南(第二版)下载pdf 高清完整中文版-百度云下载

    本书是一本万能工具,其主题涵盖了Apache Tomcat这一广受欢迎的开源servlet.JSP容器和高性能的web server. <Tomcat权威指南>对管理员和web站点管理员而 ...

  4. [已读]HTML5与CSS3权威指南第二版(下)

    去年下半年前公司给买的(老付对我们确实蛮好的),一人挑一本,我当时一定是秀逗了.看的时候就发现,这本书的内容过时严重,即便它是新出不久的第.二.版.其他没什么说的,总之,不推荐看.

  5. Sklearn 与 TensorFlow 机器学习实用指南第二版

    零.前言 一.机器学习概览 二.一个完整的机器学习项目 三.分类 四.训练模型 五.支持向量机 六.决策树 七.集成学习和随机森林 八.降维 十.使用 Keras 搭建人工神经网络 十一.训练深度神经 ...

  6. HTML 5与CSS 3权威指南(第2版·上册) 中文pdf扫描版​

    HTML5与CSS3权威指南(第2版·上册)已经成为HTML 5与CSS 3图书领域的一个标杆,被读者誉为“系统学习HTML 5与CSS 3技术的最佳指导参考书之一”和“Web前端工程师案头必备图书之 ...

  7. [翻译]现代java开发指南 第二部分

    现代java开发指南 第二部分 第二部分:部署.监控 & 管理,性能分析和基准测试 第一部分,第二部分 =================== 欢迎来到现代 Java 开发指南第二部分.在第一 ...

  8. CSS 动画一站式指南

    CSS 动画一站式指南 目录 CSS 动画一站式指南 1. CSS 动画 1.1 变换 1.1.1 变换属性介绍 1.1.2 变换动画实践 1.2 过渡 1.2.1 过渡属性介绍 1.2.2 过渡动画 ...

  9. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

随机推荐

  1. mysql日期时间处理

      获得当前周的周一到周日 select subdate(curdate(),date_format(curdate(),'%w')-1)//获取当前日期在本周的周一 select subdate(c ...

  2. 从三道题目入门frida

    偶然从看雪看到了一篇入门frida的题目,正好苦于没练手的东西,直接上手一波 1.第一题jadx打开,也没有壳和混淆,整体非常清晰,判断的逻辑也很简单 发现其实就是两个输入框,一个用户名一个密码,先拼 ...

  3. linux学习之路第七天(时间日期类指令详解)

    时间日期类 1.date指令 date指令 - 显示当前日期 基本语法 1)date (功能描述:显示当前时间): 2) date + %Y (功能描述:显示当前年份) 3)date+%m( 功能描述 ...

  4. MySQL | 使用Xtrabackup进行备份和备份恢复

    备份 进行备份前需要先创建备份用户,直接使用 root 用户进行备份也行,但是这样不太规范. create user backup@'localhost' identified by '123456' ...

  5. 简单DOS命令

    1.nslookup命令 nslookup命令是用来解析域名的,举个例子:我们只知道百度的域名是www.baidu.com 想要知道它的ip的话就要使用nslookup命令了nslookup www. ...

  6. 前端-HTML标签

    1.<p></p>段落标签 <p>别在最该拼搏的年纪选择稳定,世界上最大的不变是改变,只有每天进步,才能拥抱生命的无限可能!</p> 2.</b& ...

  7. Hive——简介

    Hive--简介 Hive 是基于 Hadoop 构建的一套数据仓库分析系统,它提供了丰富的 SQL 查询方式来分析存储在 Hadoop 分布式文件系统中的数据, 可以将结构化的数据文件映射为一张数据 ...

  8. springboot-3-web开发

    一.视图层技术thymeleaf 我们一般都是基于3.x版本 1.流程: 导入依赖 <!--整合thymeleaf技术--> <dependency> <groupId& ...

  9. 【洛谷 P2388 阶乘之乘】模拟

    分析 求因数5的个数 AC代码 #include<iostream> using namespace std; int main() { long long n,t,ans=0,s=0; ...

  10. C语言学习之基本数据类型【一】

    近期学习鸿蒙硬件物联网开发,用到的开发语言是C: 一.基础语法:第一个案例: 命令 gcc hello.c #include <stdio.h> //stdio.h 是一个头文件 , #i ...