CSS3 transform-origin 属性

实例

设置旋转元素的基点位置:

  1. div
  2. {
  3. transform: rotate(45deg);
  4. transform-origin:20% 40%;
  5.  
  6. -ms-transform: rotate(45deg); /* IE 9 */
  7. -ms-transform-origin:20% 40%; /* IE 9 */
  8.  
  9. -webkit-transform: rotate(45deg); /* Safari 和 Chrome */
  10. -webkit-transform-origin:20% 40%; /* Safari 和 Chrome */
  11.  
  12. -moz-transform: rotate(45deg); /* Firefox */
  13. -moz-transform-origin:20% 40%; /* Firefox */
  14.  
  15. -o-transform: rotate(45deg); /* Opera */
  16. -o-transform-origin:20% 40%; /* Opera */
  17. }

页面底部有更多实例。

浏览器支持


IE Firefox Chrome Safari Opera
ie firefox chrome safari opera

Internet Explorer 10、Firefox、Opera 支持 transform-origin 属性。

Internet Explorer 9 支持替代的 -ms-transform-origin 属性(仅适用于 2D 转换)。

Safari 和 Chrome 支持替代的 -webkit-transform-origin 属性(3D 和 2D 转换)。

Opera 只支持 2D 转换。

定义和用法

transform-origin 属性允许您改变被转换元素的位置。

2D 转换元素能够改变元素 x 和 y 轴。3D 转换元素还能改变其 Z 轴。

为了更好地理解 transform-origin 属性,请看这个实例

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. h1
  6. {
  7. font-family:'微软雅黑';
  8. }
  9. p {
  10. font-size:14px;
  11. font-family:Verdana, Arial, Helvetica, sans-serif;
  12. }
  13. #div1
  14. {
  15. position: relative;
  16. height: 200px;
  17. width: 200px;
  18. margin: 50px;
  19. padding:10px;
  20. border: 1px solid black;
  21. }
  22. #div2
  23. {
  24. padding:50px;
  25. position: absolute;
  26. border: 1px solid black;
  27. background-color: yellow;
  28. transform: rotate(45deg);
  29. transform-origin:20% 40%;
  30. -ms-transform: rotate(45deg); /* IE 9 */
  31. -ms-transform-origin:20% 40%; /* IE 9 */
  32. -webkit-transform: rotate(45deg); /* Safari and Chrome */
  33. -webkit-transform-origin:20% 40%; /* Safari and Chrome */
  34. -moz-transform: rotate(45deg); /* Firefox */
  35. -moz-transform-origin:20% 40%; /* Firefox */
  36. -o-transform: rotate(45deg); /* Opera */
  37. -o-transform-origin:20% 40%; /* Opera */
  38. }
  39. </style>
  40. <script>
  41. function changeRot(value)
  42. {
  43. document.getElementById('div2').style.transform="rotate(" + value + "deg)";
  44. document.getElementById('div2').style.msTransform="rotate(" + value + "deg)";
  45. document.getElementById('div2').style.webkitTransform="rotate(" + value + "deg)";
  46. document.getElementById('div2').style.MozTransform="rotate(" + value + "deg)";
  47. document.getElementById('div2').style.OTransform="rotate(" + value + "deg)";
  48. document.getElementById('persp').innerHTML=value + "deg";
  49. }
  50. function changeOrg()
  51. {
  52. var x=document.getElementById('ox').value;
  53. var y=document.getElementById('oy').value;
  54. document.getElementById('div2').style.transformOrigin=x + '% ' + y + '%';
  55. document.getElementById('div2').style.msTransformOrigin=x + '% ' + y + '%';
  56. document.getElementById('div2').style.webkitTransformOrigin=x + '% ' + y + '%';
  57. document.getElementById('div2').style.MozTransformOrigin=x + '% ' + y + '%';
  58. document.getElementById('div2').style.OTransformOrigin=x + '% ' + y + '%';
  59. document.getElementById('origin').innerHTML=x + "% " + y + "%";
  60. }
  61. </script>
  62. </head>
  63. <body>
  64. <h1>transform-origin 属性演示</h1>
  65. <p>旋转这个黄色的 div 元素,试着改变 X 轴和 Y 轴的参数:</p>
  66. <div id="div1">
  67. <div id="div2">HELLO</div>
  68. </div>
  69. <p style="margin-bottom:50px;">
  70. 旋转:
  71. <br /><input type="range" min="-360" max="360" value="45" onChange="changeRot(this.value)" /><br />
  72. transform: rotateY:(<span id="persp">45deg</span>);
  73. </p>
  74. <p>
  75. X 轴:
  76. <br /><input type="range" min="-100" max="200" value="20" onChange="changeOrg()" id="ox" /><br />
  77. Y 轴:
  78. <br /><input type="range" min="-100" max="200" value="40" onChange="changeOrg()" id="oy" /><br />
  79. transform-origin: <span id="origin">20% 40%</span>;
  80. </p>
  81. </body>
  82. </html>

Safari/Chrome 用户:为了更好地理解 transform-origin 属性用于 3D 转换的情况,请看这个实例

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. h1
  6. {
  7. font-family:'微软雅黑';
  8. }
  9. p {
  10. font-size:14px;
  11. font-family:Verdana, Arial, Helvetica, sans-serif;
  12. }
  13. #div1
  14. {
  15. position: relative;
  16. height: 200px;
  17. width: 200px;
  18. margin: 50px;
  19. padding:10px;
  20. border: 1px solid black;
  21. }
  22. #div2
  23. {
  24. padding:50px;
  25. position: absolute;
  26. border: 1px solid black;
  27. background-color: yellow;
  28. transform: rotateY(70deg);
  29. transform-origin:50% 50% 100px;
  30. -webkit-transform: rotateY(70deg); /* Safari and Chrome */
  31. -webkit-transform-origin:50% 50% 100px; /* Safari and Chrome */
  32. -moz-transform: rotateY(70deg); /* Firefox */
  33. -moz-transform-origin:50% 50% 100px; /* Firefox */
  34. -o-transform: rotateY(70deg); /* Opera */
  35. -o-transform-origin:50% 50% 100px; /* Opera */
  36. }
  37. </style>
  38. <script>
  39. function changeRot(value)
  40. {
  41. document.getElementById('div2').style.transform="rotateY(" + value + "deg)";
  42. document.getElementById('div2').style.webkitTransform="rotateY(" + value + "deg)";
  43. document.getElementById('div2').style.MozTransform="rotateY(" + value + "deg)";
  44. document.getElementById('div2').style.OTransform="rotateY(" + value + "deg)";
  45. document.getElementById('persp').innerHTML=value + "deg";
  46. }
  47. function changeOrg()
  48. {
  49. var x=document.getElementById('ox').value;
  50. var y=document.getElementById('oy').value;
  51. var z=document.getElementById('oz').value;
  52. document.getElementById('div2').style.transformOrigin=x + '% ' + y + '% ' + z + 'px';
  53. document.getElementById('div2').style.webkitTransformOrigin=x + '% ' + y + '% ' + z + 'px';
  54. document.getElementById('div2').style.MozTransformOrigin=x + '% ' + y + '% ' + z + 'px';
  55. document.getElementById('div2').style.OTransformOrigin=x + '% ' + y + '% ' + z + 'px';
  56. document.getElementById('origin').innerHTML=x + "% " + y + "% " + z + "px";
  57. }
  58. </script>
  59. </head>
  60. <body>
  61. <h1>transform-origin 属性演示(适用于 Safari/Chrome)</h1>
  62. <p>旋转这个黄色的 div 元素,试着改变 X 轴、Y 轴和 Z 轴的参数:</p>
  63. <div id="div1">
  64. <div id="div2">HELLO</div>
  65. </div>
  66. <p>
  67. 旋转:
  68. <br /><input type="range" min="-360" max="360" value="70" onChange="changeRot(this.value)" /><br />
  69. -webkit-transform: rotateY:(<span id="persp">70deg</span>);
  70. </p>
  71. <p>
  72. X 轴:
  73. <br /><input type="range" min="-100" max="200" value="50" onChange="changeOrg()" id="ox" /><br />
  74. Y 轴:
  75. <br /><input type="range" min="-100" max="200" value="50" onChange="changeOrg()" id="oy" /><br />
  76. Z 轴:
  77. <br /><input type="range" min="-100" max="200" value="100" onChange="changeOrg()" id="oz" /><br />
  78. -webkit-transform-origin: <span id="origin">50% 50% 100px</span>;
  79. </p>
  80. </body>
  81. </html>

注释:该属性必须与 transform 属性一同使用。

为了更好地理解 transform 属性,请看这个实例

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. p {
  6. font-size:14px;
  7. font-family:Verdana, Arial, Helvetica, sans-serif;
  8. }
  9. #div1
  10. {
  11. width:120px;
  12. height:100px;
  13. background-color:yellow;
  14. border:1px solid black;
  15. -ms-transform:rotate(7deg); /* Firefox */
  16. -moz-transform:rotate(7deg); /* Firefox */
  17. -webkit-transform:rotate(7deg); /* Safari and Chrome */
  18. -o-transform:rotate(7deg); /* Safari and Chrome */
  19. transform:rotate(7deg);
  20. }
  21. </style>
  22. <script>
  23. function rotate(value)
  24. {
  25. document.getElementById('div1').style.webkitTransform="rotate(" + value + "deg)";
  26. document.getElementById('div1').style.msTransform="rotate(" + value + "deg)";
  27. document.getElementById('div1').style.MozTransform="rotate(" + value + "deg)";
  28. document.getElementById('div1').style.OTransform="rotate(" + value + "deg)";
  29. document.getElementById('div1').style.transform="rotate(" + value + "deg)";
  30. document.getElementById('span1').innerHTML=value + "deg";
  31. }
  32. </script>
  33. </head>
  34. <body>
  35. <p>请旋转这个黄色的 div 元素:</p>
  36. <div id="div1">HELLO</div>
  37. <p>
  38. 旋转:
  39. <br /><input type="range" min="-360" max="360" value="7" onchange="rotate(this.value)" /><br />
  40. transform: rotate(<span id="span1">7deg</span>);
  41. </p>
  42. </body>
  43. </html>
默认值: 50% 50% 0
继承性: no
版本: CSS3
JavaScript 语法: object.style.transformOrigin="20% 40%"

语法

  1. transform-origin: x-axis y-axis z-axis;
描述
x-axis 定义视图被置于 X 轴的何处。可能的值: left
center
right
length
%
y-axis 定义视图被置于 Y 轴的何处。可能的值: top
center
bottom
length
%
z-axis 定义视图被置于 Z 轴的何处。可能的值: - length

相关页面

CSS3 教程:CSS3 2D 转换

CSS3 教程:CSS3 3D 转换