CSS 剪辑 - 精灵图像

Posted

技术标签:

【中文标题】CSS 剪辑 - 精灵图像【英文标题】:CSS Clip - Sprite Image 【发布时间】:2012-05-19 12:00:30 【问题描述】:

我有一个 sprite 图像,我想在多个 span 元素中显示 128x89px 的部分。

在示例中,我将左剪辑设置为 30px 以突出显示问题,通常这将是 128px 的倍数。当我将左剪辑设置为 30 像素时,似乎添加了 30 像素的左边距。当然,我不需要添加负的左边距来更正它?

我是clip 的新手,因为我从来没有真正需要使用它,但现在有了。我对它的理解就像一张纸剪成正方形一样。调整剪辑值会使纸片四处移动,从而改变查看的图像。

请帮忙。

JSFiddle: http://jsfiddle.net/VgjXr/

CSS:

a   
    border: 1px solid #000;  
    height: 89px;  
    width: 128px;  
    display: block;  

span.image   
    background-image: url('http://i1269.photobucket.com/albums/jj591/mark1979smith/splice.jpg');  
    position: absolute;  
    display: block;  
    width: 128px;  
    height: 89px;  
    clip: rect(0px,158px,89px,30px);  
    clear: both;  

HTML:

<div class="element" id="cheeseOption7">   
    <div id="optional_46">
        <a href="#">                    
            <span class="image"><!--  --></span>
        </a>
    </div>
</div>

【问题讨论】:

【参考方案1】:

我在clip 上找到的最佳解释是at this site,尽管我认为您确实大致正确地掌握了它的工作原理。您没有掌握的是这与您的情况有何关系。 clip 出现在span 的背景图像上。您的 30px 告诉浏览器从左侧剪掉 30px 的图像(这正是您的小提琴示例正在做的事情),但 它不会影响背景的定位

使用精灵,通常不使用clip,而是使用background-position 来切换精灵图像相对于它所显示元素的位置。所以对于你的 128px x 89px 精灵图像,您可以从background-position: 0 0 开始,然后移动到-189px 0 将一张图片向右移动,或者0 -89px 将一张图片向下移动。

我假设因为clip 需要position: absolute 是你使用span 的原因,但事实上,因为你真的应该使用background-position,它可以让你一起消除span,并且直接在a元素的背景上做定位即可。

【讨论】:

太棒了,谢谢!我想是因为我脑子里有使用剪辑的想法(并最终开始使用它)我坚持使用它。现在我知道这不是使用它的正确位置,我已经恢复到良好的旧背景位置。 如果考虑到 ipad3 等高密度像素,则带有剪辑的精灵是常态 @albert--我很想更好地理解你的评论。您能否指出一些文档来说明在这种情况下如何以及为什么使用clip 而不是background-position?我不确定高密度像素有多重要。

以上是关于CSS 剪辑 - 精灵图像的主要内容,如果未能解决你的问题,请参考以下文章

使用 HTML 和 CSS 剪辑图像

CSS精灵图像+背景重复其中的一部分

css 钻石图像 - 通过剪辑路径

如何使用 CSS 在两个图像之间创建剪辑路径 [关闭]

使用 CSS 精灵作为图像类型的输入

CSS:使用带有 css 伪类的图像精灵 :before 和 :after