vue 长方体组件

前言:UI设计用一个长方体的高度来显示数据比率,记录一下实现的组件,方便日后的需要。

        设置长方体的某一个点坐标位置不变,长宽高从这个点出发形成一个长方体。如下图

长方体定点设计图

        将p0的位置设置为不随长方体的长宽高改变而改变,正面看到的一面设置为front,front左边的页面是left,front右边的页面是right,front的对面是back,长方体,的上方是top,下方是bottom。
        对于left和right面的大小,长为high,宽为wide,left面与p0的位置相差为translateX(-high px),translateZ(long / 2 px),而right面,translateX(-high px),translateZ(- long / 2 px)。
        对于top和bottom,长为long,宽为high,top面与p0的位置,需要延Y轴翻转,rotateY(270deg),translateZ(long / 2 + high * Math.cos(90 * Math.PI) px),这个值是自己做了很久的尝试得到的值,也不知道原理是什么。而对于bottom的translateZ的值为long / 2就可以了。
        对于front和back,长为high,宽为long,front面与p0的位置,需要延X轴翻转,rotateX(90deg),translateX的值与left一样,translateZ(long / 2 - wide* Math.cos(270 * Math.PI) px)跟据top的值尝试得到值,back的translateZ的值为- long / 2。
        使用'document.getElementsByTagName("body")[0].style.setProperty("--width", "20px")'方式修改scss的变量,变量的运算将无效,如'var (--width / 2)'。该方式会修改所有同变量名,最后的一次修改会覆盖前面的修改,对于需要不同值展示,这种方法并不合适。
        使用'document.getElementsByClassName("box")[0].style.setProperty("--width", "20px")',可以一个个设置,但是对于多个class,需要自己弄清需要修改的class所属于的index。
        可以使用ref来设置scss的变量,"this.$refs.box.style.setProperty('--width', '20px')"。

html内容
css内容
用到的变量
位置的计算
引起重新计算的监听

参考:html+css3实现长方体效果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言: 最近玩了玩用css来构建3D效果,写了几个demo,所以博客总结一下。 在阅读这篇博客之前,请先自行了解一...
    强哥科技兴阅读 5,840评论 0 0
  • 实现的效果 可复制代码 <!DOCTYPE html> Document * { margin: 0...
    yuanzhuang阅读 4,821评论 0 4
  • *{ margin:0; padding:0; list-s...
    Dr_b355阅读 1,417评论 0 0
  • 最近在研究一些css3的动态效果 在网上看到一个还算挺酷炫的纯css3效果 下面直接贴图 CSS代码 /* 外部容...
    阿明是张小六阅读 3,587评论 0 0
  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 5,843评论 0 4