快捷导航
查看: 4380|回复: 2

[分享] CSS3 perspective-origin

[复制链接]
发表于 2014-4-13 18:34:55 | 显示全部楼层 |阅读模式
CSS3的perspective-origin属性详解:
本章节将通过代码实例介绍一下perspective-origin属性的作用。
关于此属性推荐阅读CSS3 perspective-origin一章节。
在查看本章节之前,建议事先阅读CSS3的perspective属性详解一章节, 下面进入正题。
一基本介绍:
此属性设置perspective属性源点的角度。
语法结构如下:
[CSS] 纯文本查看 复制代码
perspective-origin: x-axis y-axis;

参数解析:
1.x-axis:定义视图在x轴上的位置。默认值:50%。
可能的参数值形式:left、center、right、length和%。
2.y-axis:定义视图在y轴上的位置。默认值:50%。
可能的参数值形式:left、center、right、length和%。
看了上面的介绍可能还是不够清晰,没有能在大脑中形成一个清晰的概念,那么看下面这张图片:
1.jpg
下面对以上图片做一下简单介绍:
1.灰色部分就是我们要看的物体。
2.橘红色部分就是perspective属性设置的查看位置。
3.红色中心点就是默认的perspective-origin属性值所在位置。
往往我们看物体的时候,并非都是从中心点看过去,可能要换个角度,那么就可以沿着x轴或者y轴更换一个角度。
如果上面说的还不够清楚,再来看下面的图:
1.jpg
上面的图片表示默认的观看角度,下面调整一下角度:
2.png
上面的图片向上提高了一下坐标,这样应该比较清晰了吧。
代码实例如下:
[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html> 
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css">
#box{
  position:relative;
  height:200px;
  width:200px;
  margin-top:150px;
  margin-left:150px;
  border:1px solid black;
   
  -webkit-perspective:1000px;
  -moz-perspective:1000px;
  -ms-perspective:1000px;
  perspective:1000px;
   
  -webkit-perspective-origin:50px 50px;
  -moz-perspective-origin:50px 50px;
  -ms-perspective-origin:50px 50px;
  perspective-origin:50px 50px;
}
#inner{
  padding:50px;
  position:absolute;
  border:1px solid black;
  background-color:yellow;
  transform:rotate(45deg);
  transform-origin:40px 40px;
  font-size:12px;
     
  transform:rotateX(45deg);
  -ms-transform:rotateX(45deg);
  -webkit-transform:rotateX(45deg);
  -moz-transform:rotateX(45deg);
  -o-transform:rotateX(45deg);
}
table{
  font-size:12px;
  width:300px;
  margin-left:120px;
}
.left{text-align:right}
</style>
<script type="text/javascript">
function changeRot(value){
  var oinner=document.getElementById('inner');
  var opersp=document.getElementById('persp');
  oinner.style.transform="rotateX(" + value + "deg)";
  oinner.style.msTransform="rotateX(" + value + "deg)";
  oinner.style.webkitTransform="rotateX(" + value + "deg)";
  oinner.style.MozTransform="rotateX(" + value + "deg)";
  oinner.style.OTransform="rotateX(" + value + "deg)";
  opersp.innerHTML=value + "deg";
}
   
function changeOrg(){
  var ox=document.getElementById('ox');
  var oy=document.getElementById('oy');
  var obox=document.getElementById('box');
  var origin=document.getElementById('origin');
     
  var x=ox.value;
  var y=oy.value;
     
  obox.style.perspectiveOrigin=x + 'px' + y + 'px';
  obox.style.msPerspectiveOrigin=x + 'px ' + y + 'px';
  obox.style.webkitPerspectiveOrigin=x + 'px ' + y + 'px';
  obox.style.MozPerspectiveOrigin=x + 'px ' + y + 'px';
  obox.style.OPerspectiveOrigin=x + 'px ' + y + 'px';
   
  origin.innerHTML=x + "px " + y + "px";            
}
window.onload = function () {
  xuanzhuan.onmousemove = function () {
    changeRot(this.value);
  }
  ox.onmousemove = function () {
    changeOrg();
  }
  oy.onmousemove = function () {
    changeOrg();
  }
}
</script>
</head>   
<body>
<div id="box">
  <div id="inner">蚂蚁部落</div>
</div>
<table>
  <tr>
    <td class="left">旋转:</td>
    <td><input type="range" min="-360" id="xuanzhuan" max="360" value="45"/></td>
  </tr>
  <tr>
    <td class="left">rotateX:</td>
    <td>(<span id="persp">45deg</span>)</td>
  </tr>
  <tr>
    <td class="left">X轴:</td>
    <td><input type="range" min="-100" max="200" value="50" id="ox"/></td>
  </tr>
  <tr>
    <td class="left">Y轴:</td>
    <td><input type="range" min="-100" max="200" value="50" id="oy"/></td>
  </tr>
  <tr>
    <td class="left">origin:</td>
    <td><span id="origin">50px 50px</span></td>
  </tr>
</table>
</body>
</html>
发表于 2017-7-4 11:39:16 | 显示全部楼层
可以,这很直观
发表于 2017-7-4 11:54:07 | 显示全部楼层

http://www.softwhy.com/article-919-1.html
您好,CSS3教程统一搬到这个版块了,右侧栏引导,非常的直观

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们|手机版|小黑屋| 蚂蚁部落 ( 鲁ICP备10022556号-3 )

GMT+8, 2017-7-24 16:52 , Processed in 0.125392 second(s), 22 queries .

Powered by Discuz! X3.2 Licensed

Copyright © 2012-2017 Design: 蚂蚁部落

快速回复返回顶部 返回列表