CSS – Transform
前言
之前写的 W3Schools 学习笔记 (3) – CSS 2D Transforms. 这篇作为整理.
参考:
Youtube – Learn CSS Transform In 15 Minutes
Demo Structure
<div class="frame"></div>
<div class="box">Box1</div>
一个作为框, 这样变化的时候可以对比.
CSS Style
.frame,
.box {
position: absolute;
top: 50px;
left: 50px;
width: 200px;
height: 200px;
}
.frame {
border: 1px solid black;
}
.box {
background-color: pink;
display: flex;
justify-content: center;
align-items: center;
color: blue;
font-size: 2rem;
}
效果

Rotate
旋转 30°
transform: rotate(30deg);
效果

注意它的轴在中心的位置. 这个是可以改变的哦 (下面会说到)
Scale
transform: scale(0.8);
1.0 是原 size, 0.8 (< 1) 是缩小. > 1 是放大.


注意它的轴在中心的位置. 往中心点缩放 (下面会说到).
transform-origin
这个就是控制轴心的. 适用于 rotate 和 scale. translate 就没差 (效果都一样)
transform: rotate(30deg);
transform-origin: top left;
top left 表示方位 vertical horizontal (y, x).

分别是, top left, top center, top right 的效果. 红色圈就是所谓的 origin. 可以看出来不同 origin 旋转的效果就不一样了.
scale 也是同一个逻辑
transform: scale(1.3);
transform-origin: 50px 150px;

做地图缩放通常会用到第 3 个.
Translate
transform: translate(50px, 20px);
horizontal, vertical (x, y)

它和 origin 没有什么关系, 因为不管在那个点移动都是一样的.
use percent
transform: translate(50%, 50%);
它会依据 width 和 height 计算出 percent, 效果:

居中
想实现的效果是 Hello World 在正中间.

HTML 结构
<div class="container">
<img src="./images/tifa2.PNG" />
<h1>Hello World</h1>
</div>
不使用 background-image
img {
width: 100%;
height: 100%;
object-fit: cover;
}
.container {
width: 400px;
height: 250px;
position: relative;
}
h1 {
position: absolute;
top: 50%;
left: 50%;
color: white;
}
让 h1 绝对定位. top:50%, left 50% 这样就去到中间了.

但是过龙了. 通过 translate 把它桥回来.
transform: translate(-50%, -50%);
效果

Single Property
参考: web.dev – Finer grained control over CSS transforms with individual transform properties
由于 transform 是把所有调整放在一个值上, 当我们想要单独调整 transform 中的其中一个时就很麻烦.
目前的 solution 是通过 CSS Variable.
transform: scale(var(--scale)) translateX(var(--translateX))
这样就可以单独修改某个 variable 来达成效果.
但最新的 CSS 语法已经开始支持单独属性了.
modern browser 都支持, 包括 Safari IOS 14.5 (大约 iPhone 7) 就支持了, for 旧的 browser PostCSS 虽然有 plugin 可以做转换, 但这个是 7 years ago 的, 不建议使用了.

Single Property vs Transform
参考: How They Fit Together: Transform, Translate, Rotate, Scale, and Offset
Single Property 并不能完全取代 Transform 的功能.
1. Transform 的顺序是依据我们定义的顺序执行的. 但是 Single Property 是固定的 translate > rotate > scale
2. Transform 内可以重复定义, 但是 Single Property 只能定义一次.
总的来说 Transform 是一组有序的操作. 它就挨个挨个执行. 重复也可以
Single Property 则只可以定义 translate, rotate, scale 一次, 然后它按原本的顺序执行一轮.
冷知识 – Transform, Opacity 也会让元素飘起来
CSS – Transform的更多相关文章
- No.3 - CSS transition 和 CSS transform 配合制作动画
课程概述 作业提交截止时间:09-01 任务目的 深度理解掌握 transition-timing-function 以及它的意义 学会配合使用 CSS transform 和CSS transiti ...
- CSS Transform / Transition / Animation 属性的区别
back21 Jun 2011 Category: tech Tags: css 最近想UI的动画转到css3能吃进3d加速的属性上面来以加强动画的连贯性.只是对于css几个新加的属性不太熟悉,常常容 ...
- Html CSS transform matrix3d 3D转场特效
Html CSS transform matrix3d 3D转场特效 透视矩阵 2n/(r-l) 0 (r+l)/(r-l) 0 0 2n/(t-b) (t+b)/(t-b) 0 0 0 (n+f)/ ...
- css: transform导致文字显示模糊
css: transform导致文字显示模糊 有人认为模糊的原因是:"transform时div的宽度或者高度并不是偶数,偏移 50% 之后,像素点不是整数,和显示像素没有对上". ...
- CSS Transform完全指南 #flight.Archives007
Title/ CSS Transform完全指南 #flight.Archives007 序: 第7天了! 终身学习, 坚持创作, 为生活埋下微小的信仰. 我是忘我思考,共同进步! 简介: 一篇最简约 ...
- CSS Transform完全指南(第二版) #flight.Archives007
Title/ CSS Transform完全指南(第二版) #flight.Archives007 序: 第7天了! 终身学习, 坚持创作, 为生活埋下微小的信仰. 我是忘我思考,共同进步! 简介: ...
- CSS Transform让百分比宽高布局元素水平垂直居中
很早以前了解过当元素是固定宽度和高度的时候,水平垂直高居中的方法可以设置margin的负值来使其居中,这个负值是元素的宽和高的一半,比如宽高是100px,那么就用margin-left:-50px;m ...
- CSS Transform Style
As CSS3 developing quickly, the transform style can be written conviently. I find that it is an inte ...
- CSS transform中的rotate的旋转中心怎么设置
transform-origin属性 默认情况,变形的原点在元素的中心点,或者是元素X轴和Y轴的50%处.我们没有使用transform-origin改变元素原点位置的情况下,CSS变形进行的旋转.移 ...
- CSS+transform画动态表情
先给大家看下画完后是什么样子: 代码看这里: html代码: <body> <div class="emoji emoji_like"> <div c ...
随机推荐
- CF-957(D-E)
CF-957 赛时A去写全排列--前三题我的写法都挺丑的,后面改进了再更-- Problem - D - Codeforces 虽然是很简单很经典的线性dp,但也是我第一次自己把这种题写出来ヾ(≧▽≦ ...
- [oeasy]python0095_乔布斯求职_雅达利_atari_breakout_打砖块_布什内尔_游戏机_Jobs
编码进化 回忆上次内容 上次 我们回顾了 电子游戏的历史 从 电子游戏鼻祖 双人网球 到 视频游戏 PingPong 再到 街机游戏 Pong 雅达利 公司 来了 嬉皮士 捣乱? 布什内尔 会如何 应 ...
- 学习笔记--Java中final关键字
Java中final关键字 关于Java语言中的final关键字: final是一个关键字,表示:最终的,不可改变 final修饰的类无法被继承 final修饰的方法无法被覆盖 final修饰的变量一 ...
- odoo 开发入门教程系列-一个新应用
一个新应用 房地产广告模块 假设需要开发一个房地产模块,该模块覆盖未包含在标准模块集中特定业务领域. 以下为包含一些广告的主列表视图 form视图顶层区域概括了房产的重要信息,比如name,Prope ...
- 【数学建模导论】Task01 数据处理与拟合模型
0 前言 感谢 DataWhale 的开源学习课程 intro-mathmodel,项目仓库在这. 现在开始,跟着Task01 进入数据类的学习,实现每一个代码,包括数据预处理.回归分析与分类分析.假 ...
- SourceGenerator 生成db to class代码优化结果记录 二
优化 在上一篇留下的 Dapper AOT 还有什么特别优化点的问题 在仔细阅读生成代码和源码之后,终于得到了答案 个人之前一直以为 Dapper AOT 只用了迭代器去实现,所以理应差不多实现代码却 ...
- MindSpore1.3.0 GPU pip方式安装 —— Ubuntu18.04系统 (最终安装结果为成功)需要管理员权限,sudo安装
官网地址: https://www.mindspore.cn/install =========================================================== 安 ...
- error while loading shared libraries: libxml2.so.2: cannot open shared object file 解决方法
参考: https://blog.csdn.net/qq_39779233/article/details/128215517 ==================================== ...
- springmvc配置文件中配置mybatis-plus日志输出
1.背景 2.配置方式 如果application.properties文件格式: #sql日志logging.level.com.XX.XXX.mapper=debug如果是application. ...
- java获取包下所有的类
1.背景 给一个Java的包名,获取包名下的所有类.. 根据类上的注解,可以展开很多统一操作的业务 2.直接看代码-spring环境下 package com.qxnw.digit.scm.commo ...