资讯专栏INFORMATION COLUMN

css3旋转的盒子

MorePainMoreGain / 1107人阅读

摘要:因为不管你怎么活,明天太阳照样升起。我们能做的,就是尽全力不让自己被这种慢性毒药所蛊惑,努力,努力冲开束缚你的结界。

工作中一直做普通的网页,今天浏览到一篇做3d旋转的盒子的效果,感觉挺好玩,于是跟着教程练了练,在此做个记录
html

1
2
3
4
5
6

camera用来控制景深(perspective)
box包裹立方体六个面
face1-6是立方体的六个面
css

.camera {
    width: 200px;
    height: 200px;
    perspective-origin: center;
    perspective: 200px;
}
.box {
    transform-style:preserve-3d;
    position:relative;
    width:100%;
    height:100%;
    border:1px dashed #000;
}

.face {
    width: 100px;
    height: 100px;
    background: red;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 38px;
    color: white;
    position: absolute;
}
.face1 {
    background: #3498db;
    transform:translateX(50px) translateY(50px) translateZ(50px);
}
.face2 {
    background: #9b59b6;
    transform-origin: 0 0;  //设置transform的基准点
    transform:translateX(150px) translateY(50px) translateZ(50px) rotateY(90deg);
}
//transform是有顺序的,先旋转再平移和先平移再旋转的效果可能不同
.face3 {
    background: #f1c40f;
    transform-origin: 0 0;
    transform:translateX(50px) translateY(50px) translateZ(50px) rotateX(-90deg);
}
.face4 {
    background: #7f8c8d;
    transform-origin: 0 0;
    transform:translateX(50px) translateY(150px) translateZ(50px) rotateX(-90deg);
}
.face5 {
    background: #2ecc71;
    transform-origin: 100% 100%;
    transform: translateX(-50%) translateY(50px) translateZ(50px) rotateY(-90deg);
}
.face6 {
    background: #34495e;
    transform: translateX(50px) translateY(50px)  translateZ(-50px) rotateY(-180deg);
}
//做一个旋转的动画,看看6个面写的是否正确
.box {
    animation: rotate 4s linear infinite ;
}

@keyframes rotate{
     0%{
         -webkit-transform:rotateY(0) rotateX(0);
     }
     50%{
         -webkit-transform:rotateY(-359.9deg) rotateX(0);
     }
     100% {
         -webkit-transform:rotateY(-359.9deg) rotateX(-359.9deg);
     }
}

如果是手机观看的话,增加陀螺仪效果显得更nice
js

var box = document.querySelectorAll(".box");
window.addEventListener("deviceorientation", function(event) {
    var alpha = event.alpha,
        beta = event.beta,
        gamma = event.gamma;

    box[0].style.webkitTransform = "rotateX(" + beta + "deg) rotateY(" + gamma + "deg) rotateZ(" + alpha + "deg)";
    box[0].style.transform = "rotateX(" + beta + "deg) rotateY(" + gamma + "deg) rotateZ(" + alpha + "deg)";
    box[0].style.mozTransform = "rotateX(" + beta + "deg) rotateY(" + gamma + "deg) rotateZ(" + alpha + "deg)";

}, false);

附上作者忠告:
人在一个环境下生活太久,就容易产生惰性。因为不管你怎么活,明天太阳照样升起。
我们能做的,就是尽全力不让自己被这种慢性毒药所蛊惑,努力,努力冲开束缚你的结界。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/111632.html

相关文章

  • H5打造3d场景不完全攻略(二): Amazing CSS3D

    摘要:实现方法可参考这篇文章纯打造的模型渲染器实现全景。天空盒子相信很多打造过或有了解过全景的同行们都知道这个概念。首先将创建好的六个面切割出来,以命名标记位置。柱形柱形全景也不算复杂。 前言 对的,本文就是着重介绍如何使用CSS3中的3D变换打造出H5中的3D效果。灵感来源于造物节团队的3d引擎,因为使用方法比较复杂,也没有开源的API文档,于是想自己另外造个轮子,便开始了相关内容的学习和...

    fancyLuo 评论0 收藏0
  • 不会做动画程序猿不是好动画师(如何用css3动画做动画)

    摘要:一过渡一的作用二的属性二和动画一动画序列书写简例二书写简例常用属性简写属性三完整动画简例代码三转换一转换缩放移动旋转设置元素转换的中心点综合性写法二转换三维坐标系透视呈现位移旋转一过渡一的作用如果你有一个盒子,他的体内也有个小盒子。 ...

    xeblog 评论0 收藏0
  • 带你玩转css33D!

    摘要:透视即是以现实的视角来看屏幕上的事物,从而展现的效果。旋转则不再是平面上的旋转,而是三维坐标系的旋转,就包括轴,轴,轴旋转。必须与属性一同使用,而且只影响转换元素。可自由转载引用,但需署名作者且注明文章出处。 showImg(https://segmentfault.com/img/bVzJoZ); 话不多说,先上demo 酷炫css3走马灯/正方体动画: https://bupt-...

    Panda 评论0 收藏0
  • 带你玩转css33D!

    摘要:透视即是以现实的视角来看屏幕上的事物,从而展现的效果。旋转则不再是平面上的旋转,而是三维坐标系的旋转,就包括轴,轴,轴旋转。必须与属性一同使用,而且只影响转换元素。可自由转载引用,但需署名作者且注明文章出处。 showImg(https://segmentfault.com/img/bVzJoZ); 话不多说,先上demo 酷炫css3走马灯/正方体动画: https://bupt-...

    archieyang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<