【问题标题】:How can I minify CSS? Shorthand for property [ background-position ]?如何缩小 CSS?属性 [背景位置] 的简写?
【发布时间】:2011-02-24 23:53:32
【问题描述】:

混合 1 查看我网站的源代码和 19 个字节浪费字母 background-position 的字符,用于精灵图标的位置,你会感觉到我对这个长词有点沮丧:

background-position

单独使用它很好,但是当设置数百个精灵图标时,它只是浪费字节。所以我的问题是:有没有更聪明的速记可以代替这个长词?如果是这样,它将节省我一半的页面字节数!

看看下面这张照片的疯狂程度......

干杯,非常感谢!

更新:

请注意,每个图标都有自己独特的图标和独特的背景偏移。


【问题讨论】:

  • 不要使用内联 CSS? :D
  • 这里只是吹毛求疵,background-position 是一个属性,而不是一个选择器 :)
  • @Alex 谢谢!在标题中更正。
  • 一遍又一遍地重复“背景位置” gzip 非常好。通过确保启用 gzip 压缩,您可能会节省更多字节。
  • @Sam:即使您必须为每个图标创建唯一的类,您的.css 文件也会被缓存......而页面不会。按照@Annie 的建议添加gzip encoding,您可以节省大量带宽。

标签: css background minify background-position


【解决方案1】:

一种方法是将背景位置编码到类名中,然后使用 javascript 将其转换为元素样式。

所以

 <p class="mnu" style="background-position: 0 -1690px">

变成

 <p class="mnu bg p$0$-1690">

然后你做类似的事情

$('.bg').each( function() {
  var elem = $(this);
  var classes = elem.attr('class').split(/\s+/);
  $.each(classes, function(index, classname) {
    if(classname.indexOf('p$') != -1) {
      var coords = new Array();
      coords = classname.split('$');

      elem.css('background-position', coords[1]+"px "+coords[2]+"px");
    }
  });
});

实际上,您在那里拥有自己的 deminifier。我并不是说这是最好的方法,但它确实解决了您对 HTML 文件大小的担忧(以渲染时间为代价)。

【讨论】:

  • 只是想到了一个变体:你可以创建一个位置字典,而不是在类名中编码位置,通过动态创建一个关联数组来提供给 de-minifier .然后元素类引用位置字典中的条目。不确定这是否会提高性能或尺寸,但这是一种替代方法,我喜欢 TMTOWTDI
【解决方案2】:

简单地使用background 似乎是overwrite the actual background image,所以看起来background-position 是你唯一的选择。

不过,您可以改用类,例如...

HTML

<div class="sprite-button save">Save</div>

CSS

.sprite-button {
   width: 10px;
   height: 10px;
   background-image: url(sprites.png);
   background-repeat: no-repeat;
   text-indent: -9999px;
}

.save {
   background-position: -30px 0; 
}

不过,除非您是 Google、Facebook 等,否则保存这么多字节可能不值得麻烦(除了我上面的示例)。

【讨论】:

  • 是的,CSS 文件和选择器是要走的路。然而,从 Sam 的标记来看,每个 &lt;li&gt; 都有不同的背景图像,所以他注定要吃字节;)
  • @Nimrod 是的,如果他多次使用单个精灵,这些类将节省字节。尽管如此,在具有正确到期标题的外部样式表中,它将被下载一次。内联样式将根据不同的页面视图下载。
  • @alex,我指的是 Sam 抱怨的所有重复的 background-position: 文本中的字节,而不是图像本身。
  • @Nimrod 这就是我所说的:P
  • @Nimrod,我认为你是对的,I am doomed to eat bytes... 哦,只要这种饮食失调仍然存在于数字领域......
猜你喜欢
  • 2011-03-26
  • 2014-03-29
  • 2013-06-06
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
  • 2018-07-04
  • 2018-11-03
  • 1970-01-01
相关资源
最近更新 更多