transform-origin接受两个参数,它们可以是百分比,em,px等具体的值,也可以是left,center,right,或者 top,center,bottom等描述性参数,第一个参数表示X方向,第二个参数表示Y方向,但是,当用 left,right,center 来表示的时候,是不区分先后的!也就是说 left center 和 center left 是一回事。具体见下表:

    - top left | left top 等价于 0 0;
    - top | top center | center top 等价于 50% 0
    - right top | top right 等价于 100% 0
    - left | left center | center left 等价于 0 50%
    - center | center center 等价于 50% 50%(默认值)
    - right | right center | center right 等价于 100% 50%
    - bottom left | left bottom 等价于 0 100%
    - bottom | bottom center | center bottom 等价于 50% 100%
    - bottom right | right bottom 等价于 100% 100%
 
坑啊,今天第一次用CSS3 做3D 立方体,旋转的时候总是出错,后来看到了codepen 上的一个例子,研究了一下,总是不明白 transform-origin 这一点,后来仔细研究了下才发现不用考虑顺序……“左上角”也可以说“上左角”,“东南角”也可以说“南东角”。听着别扭,但意思一样。
codepen 的链接在这里:http://codepen.io/mirceageorgescu/pen/roblc
 
这个例子里还有一点让人困惑,就是 X Y Z 坐标系。之前一直以为坐标系是想三维建模软件里的世界坐标系一样不随着物体改变而改变,折腾了一整天立方体还是转不对。后来仔细研究下,发现坐标系是相对于元素自身的,也就是随着元素的旋转而旋转。X 指向右方,Y 指向下方,Z 指向前方。
 
第三点让人困惑的地方在于transform ,transform 中的属性是有先后顺序的。比如:transform: rotateY(180deg) translateZ(100px),表示,先沿Y轴旋转180度,然后向前(即元素的正面)移动100px;这一句和下面这句是相同效果:transform: translateZ(-100px) rotateY(180deg) ,这个表示,先向后面(元素的背面)移动100px,然后旋转180度。这两句的效果是相同的,但顺序不同让它们的值也不同。

transform-origin 的定位的更多相关文章

  1. CSS3中的transform

    CSS3 转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. transform 在2D里主要是4个方法.除了rotate 其他都是接受x y值 translate skew rotate sca ...

  2. relative 和 absolute 定位关系

    问题: relative 和 absolute 之间的关系是什么?有什么区别? 那,答案呢? relative  相对定位, 以自己没有设置relative 属性之前的位置来定位,占用没有设置rela ...

  3. jquery.transform

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 如何让position fixed不再基于浏览器窗口定位

    position:fixed默认是相对浏览器定位的. 就是将某个元素固定在浏览器的某个确定的位置,不随滚动条的移动而变化: MDN对position: fixed有一个注释: 当元素祖先的 trans ...

  5. css之变形(transform)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 游戏编程模式 Game Programming Patterns (Robert Nystrom 著)

    第1篇 概述 第1章 架构,性能和游戏 (已看) 第2篇 再探设计模式 第2章 命令模式 (已看) 第3章 享元模式 (已看) 第4章 观察者模式 (已看) 第5章 原型模式 (已看) 第6章 单例模 ...

  7. Angular 学习笔记 (动态组件 & Material Overlay & Dialog 分析)

    更新: 2019-11-24  dialog vs router link refer : https://stackoverflow.com/questions/51821766/angular-m ...

  8. 移动Web利器transformjs入门

    简介 在过去的两年,越来越多的同事.朋友和其他不认识的童鞋进行移动web开发的时候,都使用了transformjs,所有必要介绍一下,让更多的人受益,提高编程效率,并享受编程乐趣.(当然transfo ...

  9. git 常用操作

    查看某文件的某些行的变化历史: $ git log --pretty=short -u -L 2003,2005:Executor.cpp http://stackoverflow.com/quest ...

  10. 【转】Styling And Animating SVGs With CSS

    原文转自:http://www.smashingmagazine.com/2014/11/03/styling-and-animating-svgs-with-css/?utm_source=CSS- ...

随机推荐

  1. 极光开发者服务推出统计产品JAnalytics

    极光以提供更加全面的开发者服务为目标,利用极光推送的数据和网络优势结合更丰富的功能,推出了极光统计(英文:JAnalytics).至此,极光开发者服务更加丰富.完善了. 极光统计有独立的统计 SDK, ...

  2. mfc---单文档工程添加消息响应

    写消息映射:.h中些函数头文件afx_mag … .cpp中写函数体 .cpp中写消息映射 给toolbar添加消息: .h中添加头文件afx_msg …. .cpp中添加函数体,消息映射ON_COM ...

  3. 解决springmvc在单纯返回一个字符串对象时所出现的乱码情况(极速版)

    使用springmvc框架开发了这么长时间,之前都是直接返回jsp页面,乱码情况都是通过配置和手动编解码来解决,但是今天突然返回一段单纯的字符串时,发现中文乱码情况解决不了了,下面就给各位分享一下如何 ...

  4. 69个微信小程序常见问题

    本文转自 遇到小程序方面的问题,该去哪里提问呢? 若是能得到微信官方的解答,想必是最叫人安心的.而微信也确实提供了这么一个地方. 在微信公众平台的开发者社区,就置顶了一个「小程序常见问题 FAQ」帖. ...

  5. 一个很逗的东西——Jd

    这个嘛是本人专门为了NOI上面对拍程序写的对拍程序,已经经历了NOI2015的考验:更重要的是——纯Pascal的哦(HansBug:其实是我不会写.sh脚本TT,谁叫用惯了windows的我只会写b ...

  6. Android:百度地图 + 百度导航

    地图SDK 开发指南:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/introduction 导航SDK开发指南:http://lb ...

  7. mysql数据库开启慢查询日志

    修改配置文件 在配置文件my.ini中加上下面两句话 log-slow-queries = C:\xampp\mysql_slow_query.log long_query_time=3 第一句使用来 ...

  8. 存储结构与邻接矩阵,深度优先和广度优先遍历及Java实现

    如果看完本篇博客任有不明白的地方,可以去看一下<大话数据结构>的7.4以及7.5,讲得比较易懂,不过是用C实现 下面内容来自segmentfault 存储结构 要存储一个图,我们知道图既有 ...

  9. Java 中的锁——Lock接口

    Java SE5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能.虽然它少了(通过synchronized块或者方法所提供的)隐式获取释放锁的便捷性,但是却拥有了锁获取与释放的操作性. ...

  10. web从入门开始(3)-----第一个网页

    <meta>:是进行网页格式初始化的命令,确定网页使用的文本格式和编码格式 Background:中的路径,必须为相对路径 l  HTML文本标记 <b>HTM文本</b ...