CSS3 transform-origin 属性
实例
设置旋转元素的基点位置:
- div
- {
- transform: rotate(45deg);
- transform-origin:20% 40%;
- -ms-transform: rotate(45deg); /* IE 9 */
- -ms-transform-origin:20% 40%; /* IE 9 */
- -webkit-transform: rotate(45deg); /* Safari 和 Chrome */
- -webkit-transform-origin:20% 40%; /* Safari 和 Chrome */
- -moz-transform: rotate(45deg); /* Firefox */
- -moz-transform-origin:20% 40%; /* Firefox */
- -o-transform: rotate(45deg); /* Opera */
- -o-transform-origin:20% 40%; /* 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 属性,请看这个实例。
<!DOCTYPE html>
<html>
<head>
<style>
h1
{
font-family:'微软雅黑';
}
p {
font-size:14px;
font-family:Verdana, Arial, Helvetica, sans-serif;
}
#div1
{
position: relative;
height: 200px;
width: 200px;
margin: 50px;
padding:10px;
border: 1px solid black;
}
#div2
{
padding:50px;
position: absolute;
border: 1px solid black;
background-color: yellow;
transform: rotate(45deg);
transform-origin:20% 40%;
-ms-transform: rotate(45deg); /* IE 9 */
-ms-transform-origin:20% 40%; /* IE 9 */
-webkit-transform: rotate(45deg); /* Safari and Chrome */
-webkit-transform-origin:20% 40%; /* Safari and Chrome */
-moz-transform: rotate(45deg); /* Firefox */
-moz-transform-origin:20% 40%; /* Firefox */
-o-transform: rotate(45deg); /* Opera */
-o-transform-origin:20% 40%; /* Opera */
}
</style>
<script>
function changeRot(value)
{
document.getElementById('div2').style.transform="rotate(" + value + "deg)";
document.getElementById('div2').style.msTransform="rotate(" + value + "deg)";
document.getElementById('div2').style.webkitTransform="rotate(" + value + "deg)";
document.getElementById('div2').style.MozTransform="rotate(" + value + "deg)";
document.getElementById('div2').style.OTransform="rotate(" + value + "deg)";
document.getElementById('persp').innerHTML=value + "deg";
}
function changeOrg()
{
var x=document.getElementById('ox').value;
var y=document.getElementById('oy').value;
document.getElementById('div2').style.transformOrigin=x + '% ' + y + '%';
document.getElementById('div2').style.msTransformOrigin=x + '% ' + y + '%';
document.getElementById('div2').style.webkitTransformOrigin=x + '% ' + y + '%';
document.getElementById('div2').style.MozTransformOrigin=x + '% ' + y + '%';
document.getElementById('div2').style.OTransformOrigin=x + '% ' + y + '%';
document.getElementById('origin').innerHTML=x + "% " + y + "%";
}
</script>
</head>
<body>
<h1>transform-origin 属性演示</h1>
<p>旋转这个黄色的 div 元素,试着改变 X 轴和 Y 轴的参数:</p>
<div id="div1">
<div id="div2">HELLO</div>
</div>
<p style="margin-bottom:50px;">
旋转:
<br /><input type="range" min="-360" max="360" value="45" onChange="changeRot(this.value)" /><br />
transform: rotateY:(<span id="persp">45deg</span>);
</p>
<p>
X 轴:
<br /><input type="range" min="-100" max="200" value="20" onChange="changeOrg()" id="ox" /><br />
Y 轴:
<br /><input type="range" min="-100" max="200" value="40" onChange="changeOrg()" id="oy" /><br />
transform-origin: <span id="origin">20% 40%</span>;
</p>
</body>
</html>
Safari/Chrome 用户:为了更好地理解 transform-origin 属性用于 3D 转换的情况,请看这个实例。
<!DOCTYPE html>
<html>
<head>
<style>
h1
{
font-family:'微软雅黑';
}
p {
font-size:14px;
font-family:Verdana, Arial, Helvetica, sans-serif;
}
#div1
{
position: relative;
height: 200px;
width: 200px;
margin: 50px;
padding:10px;
border: 1px solid black;
}
#div2
{
padding:50px;
position: absolute;
border: 1px solid black;
background-color: yellow;
transform: rotateY(70deg);
transform-origin:50% 50% 100px;
-webkit-transform: rotateY(70deg); /* Safari and Chrome */
-webkit-transform-origin:50% 50% 100px; /* Safari and Chrome */
-moz-transform: rotateY(70deg); /* Firefox */
-moz-transform-origin:50% 50% 100px; /* Firefox */
-o-transform: rotateY(70deg); /* Opera */
-o-transform-origin:50% 50% 100px; /* Opera */
}
</style>
<script>
function changeRot(value)
{
document.getElementById('div2').style.transform="rotateY(" + value + "deg)";
document.getElementById('div2').style.webkitTransform="rotateY(" + value + "deg)";
document.getElementById('div2').style.MozTransform="rotateY(" + value + "deg)";
document.getElementById('div2').style.OTransform="rotateY(" + value + "deg)";
document.getElementById('persp').innerHTML=value + "deg";
}
function changeOrg()
{
var x=document.getElementById('ox').value;
var y=document.getElementById('oy').value;
var z=document.getElementById('oz').value;
document.getElementById('div2').style.transformOrigin=x + '% ' + y + '% ' + z + 'px';
document.getElementById('div2').style.webkitTransformOrigin=x + '% ' + y + '% ' + z + 'px';
document.getElementById('div2').style.MozTransformOrigin=x + '% ' + y + '% ' + z + 'px';
document.getElementById('div2').style.OTransformOrigin=x + '% ' + y + '% ' + z + 'px';
document.getElementById('origin').innerHTML=x + "% " + y + "% " + z + "px";
}
</script>
</head>
<body>
<h1>transform-origin 属性演示(适用于 Safari/Chrome)</h1>
<p>旋转这个黄色的 div 元素,试着改变 X 轴、Y 轴和 Z 轴的参数:</p>
<div id="div1">
<div id="div2">HELLO</div>
</div>
<p>
旋转:
<br /><input type="range" min="-360" max="360" value="70" onChange="changeRot(this.value)" /><br />
-webkit-transform: rotateY:(<span id="persp">70deg</span>);
</p>
<p>
X 轴:
<br /><input type="range" min="-100" max="200" value="50" onChange="changeOrg()" id="ox" /><br />
Y 轴:
<br /><input type="range" min="-100" max="200" value="50" onChange="changeOrg()" id="oy" /><br />
Z 轴:
<br /><input type="range" min="-100" max="200" value="100" onChange="changeOrg()" id="oz" /><br />
-webkit-transform-origin: <span id="origin">50% 50% 100px</span>;
</p>
</body>
</html>
注释:该属性必须与 transform 属性一同使用。
为了更好地理解 transform 属性,请看这个实例。
<!DOCTYPE html>
<html>
<head>
<style>
p {
font-size:14px;
font-family:Verdana, Arial, Helvetica, sans-serif;
}
#div1
{
width:120px;
height:100px;
background-color:yellow;
border:1px solid black;
-ms-transform:rotate(7deg); /* Firefox */
-moz-transform:rotate(7deg); /* Firefox */
-webkit-transform:rotate(7deg); /* Safari and Chrome */
-o-transform:rotate(7deg); /* Safari and Chrome */
transform:rotate(7deg);
}
</style>
<script>
function rotate(value)
{
document.getElementById('div1').style.webkitTransform="rotate(" + value + "deg)";
document.getElementById('div1').style.msTransform="rotate(" + value + "deg)";
document.getElementById('div1').style.MozTransform="rotate(" + value + "deg)";
document.getElementById('div1').style.OTransform="rotate(" + value + "deg)";
document.getElementById('div1').style.transform="rotate(" + value + "deg)";
document.getElementById('span1').innerHTML=value + "deg";
}
</script>
</head>
<body>
<p>请旋转这个黄色的 div 元素:</p>
<div id="div1">HELLO</div>
<p>
旋转:
<br /><input type="range" min="-360" max="360" value="7" onchange="rotate(this.value)" /><br />
transform: rotate(<span id="span1">7deg</span>);
</p>
</body>
</html>
默认值: | 50% 50% 0 |
---|---|
继承性: | no |
版本: | CSS3 |
JavaScript 语法: | object.style.transformOrigin="20% 40%" |
语法
- 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 转换