CSS3 transform-origin 属性 | CSS3教程:CSS3 3D转换

返回到:CSS3 3D转换 | CSS3教程

属性定义及使用说明

transform-Origin属性允许您更改转换元素的位置。

2D转换元素可以改变元素的X和Y轴。 3D转换元素,还可以更改元素的Z轴。

为了更好地理解Transform-Origin属性,请查看:

<!DOCTYPE html>
<html>
<head>
	<title>Web176教程网(web176.com)</title> 
<style>
#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: red;
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>

<p>Rotate the red div element, try changing its X-axis and Y-axis:</p>

<div id="div1">
  <div id="div2">HELLO</div>
</div>

Rotate:
<input type="range" min="-360" max="360" value="45" onchange="changeRot(this.value)" />
transform: rotateY:(<span id="persp">45deg</span>);
<br><br>
X-axis:<input type="range" min="-100" max="200" value="20" onchange="changeOrg()" id="ox" /><br>
Y-axis:<input type="range" min="-100" max="200" value="40" onchange="changeOrg()" id="oy" />
transform-origin: <span id="origin">20% 40%</span>;
 
</body>
</html>

注意: 使用此属性必须先使用 transform 属性。

Tip:Safari/Chrome用户:为了更好地理解3D 转换属性,请查看:

<!DOCTYPE html>
<html>
<head>
	<title>Web176教程网(web176.com)</title> 
<style>
#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: red;
transform: rotateY(70deg);
transform-origin:50% 50% 100px;
-webkit-transform: rotateY(70deg); /* Safari and Chrome */
-webkit-transform-origin:50% 50% 100px; /* Safari and Chrome */
}
</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>
<p><b>Note:</b> Internet Explorer 9 and earlier do not support 3D-transforms.</p>
<p>Rotate the red div element, try changing its X-, Y-, and Z-axis:</p>

<div id="div1">
  <div id="div2">HELLO</div>
</div>

Rotate:<br>
<input type="range" min="-360" max="360" value="70" onchange="changeRot(this.value)" /><br>
-webkit-transform: rotateY:(<span id="persp">70deg</span>);
<br>
X-axis:<input type="range" min="-100" max="200" value="50" onchange="changeOrg()" id="ox" /><br>
Y-axis:<input type="range" min="-100" max="200" value="50" onchange="changeOrg()" id="oy" /><br>
Z-axis:<input type="range" min="-100" max="200" value="100" onchange="changeOrg()" id="oz" /><br>
-webkit-transform-origin: <span id="origin">50% 50% 100px</span>;
</body>
</html>
默认值:50% 50% 0
继承:no
版本:CSS3
JavaScript 语法:object.style.transformOrigin=”20% 40%”

语法

transform-origin: x-axis y-axis z-axis;
描述
x-axis定义视图被置于 X 轴的何处。可能的值:leftcenterrightlength%
y-axis定义视图被置于 Y 轴的何处。可能的值:topcenterbottomlength%
z-axis定义视图被置于 Z 轴的何处。可能的值:length

浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性谷歌IE火狐苹果opera
transform-origin
(two-value syntax)
36.0
4.0 -webkit-
10.0
9.0 -ms-
16.0
3.5 -moz-
9.0
3.2 -webkit-
23.0
15.0 -webkit-
10.5 -o-
transform-origin
(three-value syntax)
36.0
12.0 -webkit-
10.016.0
10.0 -moz-
9.0
4.0 -webkit-
23.0
15.0 -webkit-

实例

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

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>Web176教程网(web176.com)</title> 
<style>
#div1
{
	position: relative;
	height: 200px;
	width: 200px;
	margin: 100px;
	padding:10px;
	border: 1px solid black;
}

#div2
{
	padding:50px;
	position: absolute;
	border: 1px solid black;
	background-color: red;
	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 */
}
</style>
</head>

<body>

<div id="div1">
  <div id="div2">HELLO</div>
</div>

</body>
</html>

作者:terry,如若转载,请注明出处:https://www.web176.com/css3transform/5119.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2022年1月14日 下午4:08
下一篇 2022年1月14日 下午4:17

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注