当前位置: 首页 > news >正文

H5 + C3基础(六)(2D转换transform 位移 旋转 缩放)

2D转换transform &

    • 2D转换transform
      • 平移
        • 利用平移百分比优化盒子水平垂直居中
      • 旋转
        • 指定2d变换的中心点 transform-origin
      • 缩放
      • 2d转换简写

2D转换transform

所谓2D转换,就是在二维坐标系内进行各种操作,包括平移,转动,缩放等等;

平移

语法:

transform:translate(x, y);
transform:translateX(x);
transform:translateY(y);

x和y都是相对于屏幕左上角而言,左上为负值,右下为正值;与传统数学坐标系注意区分

要实现盒子的平移,目前有多种方式

  • margin
  • 定位
  • translate
  • 父盒子的 padding

注意点:

  1. translate不影响其他元素位置,和相对定位类似,不脱离文档流。
  2. translate 使用百分比时,是相对自身宽高而言,而不是相对父盒子的宽高
  3. 位移只针对行内块和块级元素有效;行内元素不适用
  4. 位移覆盖显示优先级
    • 有位移的覆盖无位移的
    • 都有位移时,后面定义的元素覆盖前面的元素

利用平移百分比优化盒子水平垂直居中

之前是定位之后,往回平移盒子的尺寸的一半,实现;如下

position: absolute;
width: 100px;
height: 100px;
top: 50%;
left: 50%;
background-color: #ee20ee;
margin-left: -50px;
margin-top: -50px;

如果盒子尺寸一旦变化,margin的值也要跟着改动,如果使用平移 50% 实现,就无需改动。

position: absolute;
width: 100px;
height: 100px;
top: 50%;
left: 50%;
background-color: #ee20ee;
transform: translate(-50%, -50%);

旋转

绕着哪个轴旋转
语法:
transform:rotate(45deg); // 默认相当于 rotateZ
transform:rotateX(45deg);
transform:rotateY(45deg);
transform:rotateZ(45deg);
transform:rotate3d(x, y, z, 180deg); // 从3维原点到指定3维坐标点(x,y,z)连接的线旋转 180度。

旋转几度,默认旋转点为盒子中心点

transform:rotate(45deg);

同样,旋转也只对块级元素行内块有效

指定2d变换的中心点 transform-origin

旋转点坐标 中间是空格不是逗号
包括 缩放和旋转的中心点都可以通过这个属性设置
语法:
transform-origin: x y; // 指定Z轴旋转(2d旋转)中心点
除了给定像素值,还可以指定方位:top,bottom,left,right,center

transform-origin: 10px 10px;

示例

.c1 {background-color: #e6393c;transition: all 0.5s;transform-origin: left bottom;
}.c1:hover {transform: rotate(45deg);
}

缩放

设置盒子的尺寸在指定方向上缩放指定倍数(整数小数均可)
语法:
transform:scale(x, y); # 分别设置x,y轴方向尺寸
transform: scale(a); # 统一设置设置x,y轴方向尺寸为同一个值
transform:scaleX(x); # 设置x轴方向尺寸
transform:scaleY(y); # 设置y轴方向尺寸
transform:scaleZ(z); # 设置z轴方向尺寸

transform: scale3d(2, 2, 2); 分别设置 xyz 三个方向的上的扩缩比

# 以下三者等价
transform: scale(2);
transform: scaleX(2) scaleY(2);
transform: scale(2, 2);

2d转换简写

先后顺序为:位移 → 旋转 → 缩放

transform: translate() rotate() scale() 

由于位移会影响坐标,因此需将位移放在最前面。

http://www.lryc.cn/news/151672.html

相关文章:

  • 2023最新 Electron.js 桌面应用开发教程(基础篇)更新中
  • 【ES】笔记-Set集合实践
  • 缺陷或负样本难以收集怎么办?使用生成式模型自动生成训练样本,image-to-image Stable diffusion
  • ZMTP协议
  • ubuntu18安装中文环境
  • 怎么提取视频中的音乐保存到本地?其实方法很简单
  • 线性代数的学习和整理18:矩阵的秩的各种定理, 秩和维度(未完成)
  • UVa11374 Airport Express(Dijkstra)
  • hadoop的hdfs中避免因节点掉线产生网络风暴
  • 2023年高教社杯 国赛数学建模思路 - 案例:最短时间生产计划安排
  • Spring MVC介绍
  • 5年测试在职经验之谈:2年功能测试、3年自动化测试,从入门到不可自拔...
  • 【Python数据分析】数据分析之numpy基础
  • Swift 如何从图片数据(Data)检测原图片类型?
  • 【ES6】 JavaScript 中的Object.assign
  • Redis缓存和持久化
  • OpenCV(六):多通道分离与合并
  • Sql单行数据查询为多行
  • 网络协议分析-http/https/tcp/udp
  • 基于aarch64分析kernel源码 四:printk 内核打印
  • 机器人中的数值优化(六)—— 线搜索最速下降法
  • postman调试注意事项
  • 【C#】泛型
  • CLIP:连接文本-图像
  • MFC网络编程简单例程
  • 云原生简介 (Cloud Native)
  • 【SpringBoot系列】 测试框架之@SpringBootTest的使用
  • 【数据结构与算法篇】手撕八大排序算法之交换排序
  • ArcGIS Pro实践技术应用、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合
  • uniapp 项目实践总结(一)uniapp 框架知识总结