【发布时间】:2019-07-24 23:02:25
【问题描述】:
我有一个div,宽度和高度约为300px。这个div的背景应该用一个8px宽和8px高的小图像反复填充。这个较小的图像被嵌入到一个较大的精灵图像中。怎么只能用这个8x8像素瓦来铺背景呢?
到目前为止我已经尝试过:
.world {
width: 300px;
height: 300px;
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4wcYFjsX3EPV0QAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAxklEQVQ4y+2UsQ3CMBBF/0VImYDKFWNQZB28AwOwQ7KOC8agomKCVJ8ituU7GwkhVxFXWT+nF8nvy0JSRFAMye0wqRghxrheTmV+Wx4A9G7BmlpfAi0lswZ0mj2DsiNjLbBx09lRw1oN+m0OAKB7hIQWvFSM43ZY5V7mI88AhB+KZCiZZSiZ9e/RN6BaP1k6MtY2Ry1rPXv01D1yET3qR2ZF+qXX+zMBDJaSuGP1VMXEV/te9q6/G8hV+h2VI2NtrvZn9uzRGzl9Uzsn2uDrAAAAAElFTkSuQmCC') 0 -16px repeat;
}
<div class="world"></div>
在这个示例代码中,shritesheet 的宽度和高度分别为24px。它包含 9 个不同颜色的点,每个点的直径为7px。
我希望只有一个点被重复用作 div 的背景。但是,在这段代码中,整个图片是从第三行点开始重复的。
注意,这个示例精灵表只是一个示例。实际的 spritesheet 稍微复杂一些。更换精灵表 使用 CSS 代码不是解决方案。
【问题讨论】:
-
没有简单的解决方案可以做到这一点,但既然它们是简单的彩色点,为什么不使用你重复的径向渐变?
-
不幸的是,实际的 spritesheet 比点要复杂一些。这些只是一个例子。因此
radial-gradient无法解决实际问题。 -
基本上你不能,CSS不允许你剪切图像并将其作为模式重复,除非我们考虑一些黑客来近似这个
-
好的,我明白了。谢谢。因此,我只需要为仅包含 8x8 像素正方形的背景使用专用 spritesheet。
-
您对 SVG 持开放态度吗?我想这是可行的
标签: css web-component css-sprites background-position