参考这个博客做了网格线:
http://t.csdnimg.cn/y20vM
把网格颜色,宽高和透明度做成可配置项。
<e-collapse title="网格线" :expand="false"><t-form-item label="颜色"><el-color-picker v-model="formData.grid.color"></el-color-picker></t-form-item><t-form-item label="宽度"><t-input v-model="formData.grid.width" /></t-form-item><t-form-item label="高度"><t-input v-model="formData.grid.height" /></t-form-item><t-form-item label="透明度"><t-slider v-model="formData.grid.opacity" :min="0" :max="1" :step="0.1" label/></t-form-item></e-collapse>
在css里绑定变量:
上面的html和下面的css不在同一个vue文件里,虽然变量名不同,一个是formData,一个是designData,所指向的对象是相同的。
注意:style里不要写lang="scss" 不然会一直报错。
<style scoped>.webContainer::after {position: fixed;top: 0;left: 0;content: '';width: 100%;height: 100%;background-image: linear-gradient(0deg,v-bind(designData.grid.color) 0px,v-bind(designData.grid.color) 1px,transparent 1px,transparent 100px),linear-gradient(90deg,v-bind(designData.grid.color) 0px,v-bind(designData.grid.color) 1px,transparent 1px,transparent 100px);background-size: v-bind(designData.grid.width) v-bind(designData.grid.height);opacity: v-bind(designData.grid.opacity);z-index: -1;}
</style>
唯一的遗憾是,宽度和高度本来想设置为数字类型,通过input-number输入,然后在css里拼上‘px’,像下面这种写法,会报错,所以只能把px单位放在输入框里。
另外还有一个小小的问题,页面缩放的时候,网格线会消失。
background-size: v-bind(designData.grid.width)+'px' v-bind(designData.grid.height)+'px';
最终效果: