1.先说说css的坐标系:

x轴的正方向就是水平向右的方向

y轴的正方向就是垂直向下的方向

z轴的正方向就是屏幕到用户的方向

2.位移

  • 说明:位移是转换属性中的一个值,包含2d与3d
属性值 说明
translate(x,y) 2d位移
translateX(n) 2d位移,设置x轴方向的位移
translateY(n) 2d位移,设置y轴方向的位移
translate3d(x,y,z) 3d位移
translateZ(n) 3d位移,设置z轴方向的位移
  • 参数值:参数可以是具体的像素值,也可以是百分比(基于自己的宽高)
  • 注意:行内元素无法应用translate
transform: translate(200px,0);

3.缩放

  • 说明:缩放是转换属性中的一个值
属性值 说明
scale(x,y) 如果只传了一个值,则表示x,y都是这个值
scaleX(n) 设置x轴方向的缩放
scaleY(n) 设置y轴方向的缩放
scale3d(x,y,z) 3d缩放
transform:scale(2);

  • 注意:即使使用scale()将元素方法缩小了,在使用getComputedStyle()获取元素大小时值永远都是不变的。属性事件对象中的event.offsetX/event.offsetY也永远是scale=1时的大小,也就是说,坐标轴会跟着缩放

3.旋转

  • 说明:旋转是转换属性中的一个值
属性值 说明
rotate(angle) 2d旋转,顺时针方向
rotateX(angle) 2d旋转,围绕x轴旋转
rotateY(angle) 2d旋转,围绕y轴旋转
rotateZ(angle) 2d旋转,围绕z轴旋转
rotate3d(x,y,z,45deg) 3d旋转:x,y,z的值将构成一个矢量,即轴的方向,第四个值为旋转角度
transform:rotate(45deg)

4.转换基点

  • 相关属性:transform-origin,用来设置元素transform时的基点(x,y,z),默认为元素的中心,也就是center center
示例值类型 示例
具体数值 50px
关键字 left right top bottom center
百分比 20%(基于元素大小)

我们前面的旋转的例子就是基于元素中心进行旋转的

将转换基点修改成左上角

transform-origin: 0 0;

5.3d模式

  • 如果元素的transform涉及了3个维度,需要开启其3D模式才能才有效果,否则只能看见一个平面,如图,右边的方块围绕Y轴进行旋转,在2D模式下,我们只能看见其宽度变窄,无法得知其旋转方向

  • 如果需要开启3D视角,需要在其父容器中设置3d模式和视距(视距:近的的物体就看上去就大,渲染出来尺寸也大,远的物体看上去就就小,渲染出来尺寸也小。如果一个物体的translateZ为正值,说明他凸出了屏幕水平,离观众越近,那么他实际渲染的尺寸会小于设定的尺寸,反正则亦然。perspective的值越大,则实际渲染的尺寸与设定的尺寸相差的越小)

transform-style: preserve-3d;
perspective: 1000px;

rotateX效果

transform:   rotateX(360deg);

rotateY效果

transform:   rotateY(360deg);

rotateZ效果

transform:   rotateZ(360deg);

6.scale与translate共用

  • 注意:如果scale()在前,则实际位移 = 设定的位移 * scale的倍数,建议把translate()写在前面
transform: translate(300px,0) scale(2) ;
//以 容器的中心点来计算,容器位移了300px transform: scale(2) translate(200px,0);
//以 容器的中心点来计算,容器位移了400px
transform: scale(3) translate(100px,0);
//以 容器的中心点来计算,容器位移了300px
transform: scale(0.5) translate(200px,0);
//以 容器的中心点来计算,容器位移了100px

7.translate()和rotate()共用

  • 注意:rotate()写在translate前面的话会改变坐标系,从而改变translate的设定,所以是要是设置多值的话,建议把translate()写在前面

CSS3 transform转换的更多相关文章

  1. CSS3 Transform变形(2D转换)

    Transform:对元素进行变形:Transition:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画.但只有两个关键贞.开始,结束.Animation:对元素某个属性 ...

  2. 【CSS3】 理解CSS3 transform中的Matrix(矩阵)

    理解CSS3 transform中的Matrix(矩阵) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu ...

  3. 理解CSS3 transform中的Matrix(矩阵)

    一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵) ...

  4. css3 2d转换3d转换以及动画的知识点汇总

    css3 2d转换 2d转换的方法: 1.移动 translate(x, y) 可以改变元素的位置,x.y可为负值: 2.缩放 scale(x, y) 可以对元素进行水平和垂直方向的缩放,x.y的取值 ...

  5. 20190404-transition、transform转换、animation、媒体查询

    目录 1.transition过渡 1.1简写:transiton:transition-property | transition-duration | transition-timing-func ...

  6. CSS3 transform 属性

    CSS3 transform 属性 语法: transform: none|transform-functions; 值 描述 none 定义不进行转换. matrix(n,n,n,n,n,n) 定义 ...

  7. 基于css3 transform实现散乱的照片排列

    分享一款基于css3 transform实现散乱的照片排列.这是一款简单零散的css3相册排列特效下载.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class= ...

  8. 理解CSS3 transform中的Matrix(矩阵)——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2427 一.哥,我被你 ...

  9. CSS3 Transform变形理解与应用

    CSS3 Transform变形理解与应用 Transform:对元素进行变形:Transition:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画.但只有两个关键贞.开 ...

  10. css3 transform:scale(x)实现字体的缩放:

    css3 transform:scale(x)字体的缩放: transform:scale(x),针对于整体的缩放,缩放的整体包括宽,高,背景.这自然对于内联元素就无法使用此属性,最好使用无属性的sp ...

随机推荐

  1. 强!推荐一款Python开源自动化脚本工具:AutoKey!

    1.前言 在数字化时代,自动化工具成为了提升工作效率和生产力的重要手段.Python作为一种广泛使用的编程语言,以其强大的功能和易用性受到许多开发者的青睐. 而今天给大家推荐一款开源的自动化脚本工具: ...

  2. Flutter Engage China 开发者常见问题解答 | 下篇

    再次感谢大家对 Flutter Engage China 活动 的关注和积极参与!我们在活动前后收到了很多来自开发者的反馈和问题,Flutter 团队和演讲嘉宾在直播 Q&A 环节中也针对部分 ...

  3. 【赵渝强老师】Kafka的消息持久化

    1.Kafka消息持久性概述 Kakfa依赖文件系统来存储和缓存消息.对于硬盘的传统观念是硬盘总是很慢,基于文件系统的架构能否提供优异的性能?实际上硬盘的快慢完全取决于使用方式.同时 Kafka 基于 ...

  4. 【赵渝强老师】在Hive中使用Load语句加载数据

    一.Hive中load语句的语法说明 Hive Load语句不会在加载数据的时候做任何转换工作,而是纯粹的把数据文件复制/移动到Hive表对应的地址.语法格式如下: LOAD DATA [LOCAL] ...

  5. 使用GrabCut做分割

    主要完成了界面化设计,代码如下 import cv2 as cv import numpy as np import sys from PyQt5.Qt import * class MyWedige ...

  6. js中,什么是数组 , 数组有几种创建方式?

    1. 什么是数组? 数组是可以把一组相关的数据一起存放,并提供方便的访问(存取) 数组是指一组数据的集合,其中每个数据被称作元素(数组单元),数组单元可以是任意类型的数据,数组是一种将一组数据存储在单 ...

  7. 全局和局部混入 mixins

    使用 mixins 混入 的目的 :复用代码,维护代码 : 局部混入: 全局混入 + 按钮权限控制 : ps:定义一个方法 ,checkPermission (str) str 是按钮的权限标识 , ...

  8. Exchange限制邮箱用户每天/每分钟的发送邮件数量和速率

    Exchange限制邮箱用户每天/每分钟的发送邮件数量和速率 近期遇到部分Exchange客服反馈内部邮箱账号密码被盗,给内部其他同事和外部邮箱发送大量钓鱼和诈骗邮件:对公司造成很大负面影响和经济损失 ...

  9. 如何使用git上传代码github仓库

    本文对于Windows系统上git的安装及基本使用方法进行简单介绍,并介绍如何使用git将仓库中的项目上传至个人的Github中去. 1.打开git 打开你想上传文件的位置,然后选择git bash ...

  10. 全中国有多少公网IP地址?

    之前为了准备CTF比赛,搞了一个云服务器,顺便申请了一个公网IP. 看着申请到的IP地址,我突然想到了一个问题:不是早就说IP地址已经耗尽了吗,为什么我随便就能申请到,是谁在负责IP地址的管理分配,咱 ...