SVG制箱,VUE渲染扩展数量

SVG绘制平面箱,非3D绘制来保证能扩展数量。

立方体绘制需要设计6个面,此处为3面互相连接

HTML:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="blue-cube"
     viewBox="68 30 180 220">
    <defs>
        <g id="cube" style="fill-opacity: .9;stroke-miterlimit: 0;">
            <rect width="21" height="24" fill="#fff" stroke="#0079ad"
                  transform="skewY(30)" />
            <rect width="21" height="24" fill="#fff" stroke="#0079ad"
                  transform="skewY(-30) translate(21 24.3)" />
            <rect width="21" height="21" fill="#fff" stroke="#0079ad"
                  transform="scale(1.41,.81) rotate(45) translate(0 -21)" />
        </g>
    </defs>
    <defs>
        <g id="exceptionCube" style="fill-opacity: .9;stroke-miterlimit: 0;">
            <rect width="21" height="24" :fill="color" stroke="#0079ad"
                  transform="skewY(30)" />
            <rect width="21" height="24" :fill="color" stroke="#0079ad"
                  transform="skewY(-30) translate(21 24.3)" />
            <rect width="21" height="21" :fill="color" stroke="#0079ad"
                  transform="scale(1.41,.81) rotate(45) translate(0 -21)" />
        </g>
    </defs>
    <use v-for="box in boxes" xlink:href="#cube" :x="box.x" :y="box.y" />
</svg>

配合VUE,设定两个箱子第二个箱子填充颜色来提供标记
v-for循环渲染

VUE:
new Vue({
       el:"#container",
       data:{
       		boxes:[],
       		color:"red",
    	},
    	mounted() {
    		//初始化渲染
    		this._renderingBox(2,4);
		},
		methods:{
			/*渲染料箱格口
			* row :行数  column:列数 x,y起始横纵坐标,width,height箱子与扩展大小,与svg内设定相关
			*/
                _renderingBox(row, column, x=79, y=72, width=21, height=12){
                    let boxes = [];
                    for (let i=0;i<column;i++){
                        for (let j=row-1;j>=0;j--){
                            boxes.push({x:((i+j)*width)+x,y:(y+(i*height))-(j*height)});
                        }
                    }
                    this.boxes = boxes;
                },
		},
});
效果

在这里插入图片描述
更换行列试试:
在这里插入图片描述
修改原代码增加一个属性来标记颜色
在这里插入图片描述
在这里插入图片描述
效果:在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值