css - 多次加载 Sprite,而不是像我期望的那样缓存

标签 css asset-pipeline compass-sass sass

我正在尝试创建一个基于 compass sprite mixins for SCSS 的 sprite mixin .

问题是图片加载了多次。一个用于图像的每个唯一调用(因此每个引用 Sprite 的新类名)

这是我正在使用的 SCSS。首先我们调用 compass mixins:

$sprite-default-size:29px;
@import "compass/utilities/sprites/sprite-img";

然后我创建自己的 mixin,旨在接受一列图像,每幅图像的右侧都有悬停状态:

$icons: "/assets/icons/socialMediaSprite.png";    
@mixin verticalHoverSprite($row){
        @include sprite-img("/assets/icons/socialMediaSprite.png",1,$row);
        &:hover{
            @include sprite-img($icons,2, $row);
        }
    }

我将 mixins 应用于每个必需的类:

 .socialMediaLink{


        @include verticalHoverSprite(1);

        &.facebook{
                @include verticalHoverSprite(2);
        }
        &.twitter{
                @include verticalHoverSprite(3);
        }

    }

这是我将图像附加到的 HTML:

<span class="socialMediaLink"></span>
<span class="facebook socialMediaLink"></span>
<span class="twitter socialMediaLink"></span>

Chrome 网络面板的屏幕截图,显示图像加载了三次:

Screen shot from Chrome network panel

最佳答案

检查您的浏览器是否禁用了缓存(大约从 v17 开始可以禁用)。

另一个想法是您只包含一次图像:

background: url(yourimage.png) no-repeat;

然后只用 CSS 改变它的位置而不再次包含图像:

background-position: 0px 100px;

我猜你正在尝试这样做我只是建议不要为每个类都包含图像,只改变位置。

关于css - 多次加载 Sprite,而不是像我期望的那样缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10614831/

相关文章:

jquery - 在我的页面中放置一些带有图像的 div 的提示

javascript - 外部 gem 的 Assets 管道编码问题(UTF-8 与 ASCII-8BIT)

ruby-on-rails-3.1 - Rails 3.1 Assets 管道外观

ruby - 如何调试 Ruby gem? ( compass )

css - 如何在不取消选择器中的其他转换的情况下转换 1 个属性?

html - CSS 两个类使用具有多个设置的一个属性

javascript - 将字体大小与 iframe 大小成比例

javascript - slice() 不能与 jQuery 一起正常工作?

ruby-on-rails - 在 Rails 中的资源管道中渲染部分

CSS 固定/绝对定位 <div>