css3 transform属性多值的顺序问题
对于transform属性的多值的顺序问题,我自己就被困扰过。后来知道了跟顺序有关,但是不知道为什么。我想应该很多人跟我以前一样,知其然不知其所以然。如果不知道的,也许这篇文章会对大家有所帮助。
先来看一个例子。
html代码:
<div id="red1"></div>
<div id="red2"></div>
css代码:
body {
margin: 0;
}
div {
width:100px;
height:100px;
background:red;
}
#red1 {
transform: rotate(45deg);
}
#red2 {
transform: rotate(45deg) translate(100px, 100px);
}

红框一transform属性只有一个值rotate(45deg),红框二多了一个值translate(100px, 100px),水平和竖直都平移100px,但是从图中可以看到红框2只有竖直方向有位移。这是怎么回事?
其实,当旋转45度后,元素的整个坐标系都旋转了45度,如下图:

图1就是正常的坐标系,图2就是旋转45度后的坐标系。所以红框二就按旋转后的坐标系进行平移。因为我设置的值比较特殊,所以只有在竖直方向有位移。通过计算红框二竖直向下平移了100√2px,也就是红框对角线的长度。
我们再来看一个例子。
html代码:
<div id="red"></div>
<div id="green"></div>
css代码:
body {
margin: 0;
}
div {
width:100px;
height:100px;
position: absolute;
top: 50px;
left: 100px;
}
#red {
background:red;
transform: rotate(45deg) translate(100px, 100px);
}
#green {
background:green;
transform: translate(100px, 100px) rotate(45deg);
}

图中可以看到,值的顺序对元素位置的影响。通过上面的介绍知道,红框先旋转再平移,即先旋转坐标系再平移,而绿框先按正常的坐标系平移,再旋转,所以它们的位置就不同了。
我们可以举一反三,比如3d旋转等都可以按上面的方法去分析。
(完)
css3 transform属性多值的顺序问题的更多相关文章
- CSS3 transform 属性
CSS3 transform 属性 语法: transform: none|transform-functions; 值 描述 none 定义不进行转换. matrix(n,n,n,n,n,n) 定义 ...
- 【CSS3 transform属性和过渡属性详解】
CSS3transform属性详解 transform字面上就是变形,改变的意思. 在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放scale和移动translat ...
- transform 属性之 transform-origin与顺序问题
transform属性之 transform-origin 针对transform中的几种值的先后顺序 transform值的先后顺序: 注意: 当我们在旋转后再进行位移的时候,其实是按照旋转后的坐标 ...
- CSS3 transform 属性(2D,3D旋转)
一.语法 div{ transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg) ...
- CSS3 transform属性
说明: transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行移动(translate).旋转(rotate).缩放(scale)或倾斜(skew) transition属 ...
- CSS3 transform 属性详解(skew, rotate, translate, scale)
写这篇文章是因为在一个前端QQ群里,网友 "小豆豆" (应他要求要出现他的网名......) ,问skew的角度怎么算,因为他看了很多文章还是不能理解skew的原理.于是,我觉得有 ...
- 商品标签例子——CSS3 transform 属性
积累很重要.从此开始记录前端生涯的点滴.... <!DOCTYPE html><html lang="en"><head> <meta c ...
- CSS3 transform 属性 旋转 div 元素
div { transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg); /* ...
- 自己做得一个用于直观观察css3 transform属性中的rotate 3D效果
这段代码还是非常简单,是看了一个老师的视频受的启发,也是调用了很多个函数,所以比较杂乱吧! <!DOCTYPE html><html lang="en">& ...
随机推荐
- C语言偏冷知识点汇总
1.C语言函数声明中参数类型写在右括号后是什么意思?如下代码所示: int add(a, b) int a; int b; { return a + b; } 像这样的声明是什么意思,我测试过在gcc ...
- idea 如何优雅的添加.ignore 忽略不必要提交的文件
最近有点时间然后就跑去搜了下idea热门的插件,一不小心发现了一个.ignore插件.有过在idea使用git都知道.gitignore文件,而这个插件就是能优雅的帮我们做这件事. 首先先讲下安装这个 ...
- sqlite学习笔记8:C语言中使用sqlite之创建表
前面已经说了怎样打开和关闭数据库,这次要说得是怎样运行SQL语句,来创建一张表. 要用的的函数: sqlite3_exec(sqlite3* db, const char *sql, sqlite_c ...
- 【原型图】Mockplus
Mockplus 原型设计工具
- Jumpserver堡垒机搭建
系统: CentOS 7 IP: 192.168.11.199关闭 selinux 和防火墙 # setenforce # 临时关闭,重启后失效 # systemctl stop firewalld. ...
- SuperObject Delphi 的 JSON 属性乱序 - 操作类改造 - 关于属性顺序的问题
Delphi 的 ISuperObject 属性顺序为随机.但是很多时候,是需要按加入顺序进行读取.我也看了网上很多人有类似需求.也有人问过原作者,作者答复为:JSON协议规定为无序.看了我真是无语. ...
- python3爬虫-使用requests爬取起点小说
import requests from lxml import etree from urllib import parse import os, time def get_page_html(ur ...
- R语言爬虫:使用R语言爬取豆瓣电影数据
豆瓣排名前25电影及评价爬取 url <-'http://movie.douban.com/top250?format=text' # 获取网页原代码,以行的形式存放在web 变量中 web & ...
- 用NI的数据采集卡实现简单电子测试之5——压控振荡器的测试
本文从本人的163博客搬迁至此. 为了展示连续信号采集的方法,以其外部触发采集功能.我用运算放大器实现了一个最简单的低频压控振荡器(VCO),作为USB-6009采集的信号源.在LabVIEW下编写的 ...
- 百度地图API和高德地图API资料集锦
[高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行 [高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自 ...