CSS动态三维旋转木马,z轴定位
CSS Dynamic 3D carousel, z-axis positioning
我正在使用CSS和javascript创建一个3D旋转木马。为了测试和开发,我已经在这个页面上上传了迄今为止我所拥有的:http://dev.rushfivedesigns.com/
当你进入页面时,请点击"初始化"按钮将其转换为3D空间。默认情况下,它将使用5个面板进行初始化,并且可以使用控件进行更改。
我想解决的问题是:当我增加面板的数量时,与原点的距离会增加,因此面板的可感知尺寸会增加(它们会被炸开)。我希望无论有多少面板,前面板都能保持相同的尺寸。
因此,我不希望将每个面板向外推x距离,而是希望前面板保持在3D空间中的静态位置,然后将其他所有东西都推到它后面(希望这有意义)。
我已经使用angular实现了这一点,但也可以使用普通的javascript轻松实现。这是相关代码:
HTML
<div id="musicPlayer">
<section class="container">
<div id="carousel">
<figure class="something" ng-repeat="item in items">item {{item.someKey}}</figure>
</div>
</section>
</div>
CSS
.container {
width:300px;
height:300px;
position:relative;
perspective: 1000px;
margin-left: 400px;
margin-top:100px;
}
#carousel {
width: 100%;
height: 100%;
position: absolute;
transform-style: preserve-3d;
}
#carousel figure {
display: block;
position: absolute;
left: 10px;
top: 10px;
border: 2px solid black;
width: 276px;
height: 276px;
}
Javascript
$scope.items = [];
for (var i = 0; i < 5; i++) {
var filler = {
someKey: i
};
$scope.items.push(filler);
};
$scope.initializeCarousel = function () {
var carousel = document.getElementById('carousel');
var numPanels = $scope.items.length;
var theta = 360 / numPanels; // rotation between each panel in 3D space
var radius = Math.round(150 / Math.tan(Math.PI / numPanels)); // how far in Z-axis the panels are pushed out
//rotate panels by theta
for (var i = 0; i < $scope.items.length; i++) {
var panel = carousel.children[i];
var angle = theta * i;
panel.style.transform = 'rotateY(' + angle + 'deg) translateZ(' + radius + 'px)';
};
};
每次按下"initialize"按钮时,都会调用$scope.initializeCarousel函数,使用所选面板的数量。
我有一种感觉,这可能只是与CSS编码有关,不一定与javascript有关,但我真的不确定。我对CSS动画完全陌生。
任何关于这方面的指导都将是伟大的。谢谢S.O。!
我的猜测是,你需要计算出"球体"的半径,并将所有面板沿z方向向前移动至少该距离。更好的方法是将相机移动到远离对象的位置。
相关文章:
- 知道为什么我的旋转木马不会自动更改图片吗
- 禁用旋转木马中的下一个按钮和上一个按钮
- 如何在容器中定位旋转的图像
- 旋转木马;启用内容安全策略时无法工作
- 在引导程序旋转木马中显示下一个图像
- 猫头鹰旋转木马2罐头't使渐变动画工作
- 猫头鹰旋转木马宽度计算错误
- 猫头鹰旋转木马动画未在Chrome中应用
- 猫头鹰旋转木马:无法读取属性'visibleItems'的未定义
- 在Javascript中设置多个小图像(如旋转木马)
- 如何使引导旋转木马保持图像纵横比
- 使用旋转木马在元素上切换类
- 将图像传递到Angular UI引导旋转木马
- 当ons惰性重复检测到更改时,如何使用ons旋转木马刷新列表
- 猫头鹰旋转木马2-拖动方向
- 带有JQuery和CSS的3D旋转木马-渲染不正确
- 如何在猫头鹰旋转木马中滑动所有可见项目,而不是使用上一个/下一个按钮
- Bootstrap 3旋转木马/滑块IE9支持
- CSS动态三维旋转木马,z轴定位
- 猫头鹰旋转木马定位潜水