css - 你能为 webkit-mask-box-image 使用 CSS sprite(或剪辑它吗?)

标签 css sprite css-mask

我正在使用 -webkit-mask-box-image css 属性。

<div style="
    background-color: red;
    -webkit-mask-box-image: url('images/cards/set1.png');
"></div>

这很好用。我最终得到了蒙版图像形状的红色元素。

唯一的问题是我需要大约 25 张不同的图像。我可以只加载 25 个不同的蒙版图像,但如果我可以只加载一个图像,然后像 CSS Sprite 一样使用它,我可以重新定位或剪辑它,那就太好了。

但我想不出使用 mask 属性来实现这一点的好方法。可行吗?

我想出的一个解决方案是使用类似于此的标记:

<div style="
    width: 100px; 
    height: 100px; 
    overflow: hidden; 
    position: relative;">
    <div style="
        background-color: red;
        -webkit-mask-box-image: url('images/cards/set1.png');
        position: absolute;
        top: -400px
    "></div>
</div>

我没有像使用 Sprite 图那样使用背景图像并将其定位,而是使用 DIV 并将其定位在对其进行裁剪的父 div 中。我认为这是一个不错的选择,但想知道是否已经有专门为此设计的以 webkit 为中心的 CSS 属性。

最佳答案

我开始深入研究 webkit 掩码,因为我对你的问题很感兴趣 - 我不确定我是否正确理解了 -webkit-mask-image-webkit- 之间的区别mask-box-image - 但对我来说主要区别在于 -webkit-mask-box-image 可以拉伸(stretch)以适合容器,即使掩码图像大小不同也是如此。

因为你有一个固定大小的容器,我会尝试使用 -webkit-mask-position 来移动 mask 图像(注意它只能与 -webkit-mask-image 一起使用)。

样本:http://jsfiddle.net/easwee/pChvL/68/

代码:

<div class="image mask">
    <img src="image.jpg" />
</div>
<br />
<div class="image mask2">
    <img src="image.jpg" />
</div>


.image {width:200px;height:200px;}
.mask {
    border:1px solid green;
    -webkit-mask-image: url('mask.gif');
    -webkit-mask-repeat:no-repeat;
    -webkit-mask-position:0 0;
}
.mask2 {
    border:1px solid green;
    -webkit-mask-image: url('mask.gif');
    -webkit-mask-repeat:no-repeat;
    -webkit-mask-position:0 -200px;
}

不确定这是否适合您,但至少我在挖掘过程中玩得很开心。

关于css - 你能为 webkit-mask-box-image 使用 CSS sprite(或剪辑它吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6576113/

相关文章:

html - 请求移动网站的代码示例

CSS Sprite 是压缩而不是裁剪

html - 以正确的顺序绘制一系列等距敌人或处理脏矩形?

css - 使用 CSS 动态 mask

jquery - 在 Internet Explorer 9 中使用 jQuery 为子项设置动画时父 div 投影错误

javascript - 在我的目录中显示图像时,如何向其添加返回(或后退)按钮?

css - 如何在 div 上使用 sprite 作为背景,将 sprite 的一部分定位到 div 的右侧

html - 使用 CSS 屏蔽图像

css - mask 图像,从多个渐变创建矩形

html - 图片应该是响应式的,并且应该填满整个屏幕