【CSS小例】像素ICON续(js版)

上篇使用Sass实现了像素ICON,为了方便以后实现更灵活的功能,本篇文章使用js实现。

实现效果

别问,我也不知道画的这是啥...

设计思路

仍然是利用box-shadow属性,将一个元素变成一个像素画的画板。

创建一个二维数组,用数组存放颜色的标记,将二维数组转换成元素的box-shadow样式。

再次开动!!!

代码实现

Html
<div class="pixel" :style="{ 'box-shadow': boxShadow }"></div>
Sass
$pixelSize: 5px;
.pixel {
  width: $pixelSize;
  height: $pixelSize;
}
尺寸

这里跟元素样式设置的尺寸一样

const pixelSize = 5
颜色数组
const colors = ['', '#f7f7f7', '#f96000']
像素点矩阵
const data_p_icon = [
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0],
  [0, 0, 2, 2, 1, 2, 1, 2, 2, 2, 0, 0],
  [0, 0, 2, 2, 2, 1, 2, 1, 2, 2, 0, 0],
  [0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0],
  [0, 0, 2, 2, 1, 1, 1, 1, 2, 2, 0, 0],
  [0, 0, 2, 1, 1, 1, 1, 1, 1, 2, 0, 0],
  [0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
]
计算方法
const boxShadow = ref('')
const setPixel = () => {
  const res = []
  for (let y = 0; y < data_p_icon.length; y++) {
    for (let x = 0; x < data_p_icon.length; x++) {
      if (data_p_icon[y][x] > 0) {
        res.push(`${x * pixelSize}px ${y * pixelSize}px 0 ${colors[data_p_icon[y][x]]}`)
      }
    }
  }
  boxShadow.value = res.join(', ')
}
setPixel()

至此,我们完成js版的像素画,后续会利用这些代码实现更多有意思的功能。

完结散花

如发现文章内容有任何问题,请提出您的宝贵意见予以指正,感谢您的阅读。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值