使用compass生成能适配retina屏的sprites

原文:https://github.com/Gaya/Retina-Sprites-for-Compass

在compass中增加retina变体可以允许你使用sprites(图片精灵)。就像正常的sprites helpers一样工作,而且用mixins已经完成的更佳容易了。

看看这个示例来看一下结果。

问题

你想让你的网站用retina图片对高清屏起作用,而不是非高清屏。compass的混合的解决方案使你用sprite技术变的非常容易,他将让compass生成两种不同尺寸的映射。

因为我们必须开发我们的网站让他对高清图片和背景图片精灵和背景图片方法起作用,但是这可能把我们的css弄的乱七八糟的。只用一个调用,这个混合将知道把哪个图片放到浏览器中,而且还会调整显示,就像你的正常图片尺寸一样。

怎样用

第一件事情就是你需要下载这个混合,并且把他们放到你本地的scss或者sass文件中。注意这个文件名开头的下划线,这个是阻止compass把他编译成css文件的。

1、在你的scss或者sass文件中包含这个混合:@import "retina-sprites";

2、在你的compass项目的图片文件夹里面创建两个子文件夹,默认名字为 icons 和 icons-2x 。

3、把图片精灵保存在这个文件夹中,正常大小的放到  ./icons  文件夹中,放大的放到  ./icons-2x 文件夹中。一定要保证这些图片的名字一样。

4、在你的.scss或者.sass文件中使用这个:@include use-sprite(<sprite-name>)  注意没有图片的格式,这个是不必要的。

使用bower安装

bower安装命令:bower install Retina-sprites-for-Compass

(如果你的项目有通过bower来管理那就可以使用命令来安装那个混合)

它做什么

compass会从你放到文件夹里的图片生成非常好的图片精灵,一定要确保只使用.png格式的图片以得到最好的结果。

仅使用文件名,compass将知道这个图片将从这巨大的精灵图片中哪里生成。如果这个浏览器运行在2倍像素比例的环境中,这个混合也将使用高清变体。

下面是从这个示例中生成的css:

.scss

.sprite2 {
    @include use-sprite("sprite2");
}

.css

.sprite2 {
    background-image: url(‘../images/icons-s44ec97e90e.png‘);
    background-position: 0 -25px;
    background-repeat: no-repeat;
    overflow: hidden;
    display: block;
    height: 25px;
    width: 25px;
}
@media (-webkit-min-device-pixel-ratio: 2), (-o-min-device-pixel-ratio: 3 / 2), (min--moz-device-pixel-ratio: 2), (min-device-pixel-ratio: 2), (min-resolution: 144dppx) {
    .sprite2 {
        background-image: url(‘../images/icons-2x-s93dce01c9d.png‘);
        background-position: 0 -25px;
        background-size: 45px 95px;
        height: 25px;
        width: 25px;
    }
}

高清背景图

使用sprites相同的原则,我创建了一个可以设置背景图和高清版本的混合。

怎样使用

1、在你的scss/sass文件中使用这个语句来包含这个混合:

  @import "retina-background-image";

2、把一倍像素比例版本和高清版本的放到图片文件夹中的任何地方。

3、使用如下语句来运用这个样式:

  @include background-retina(<filename.png>, <filename-retina.png>);

下面的代码将会生成如下css:

scss:

.background {
    @include background-retina("background.gif", "background-2x.gif");
}

css:

.background {
    background-image: url(‘../images/background.gif‘);
}
@media (-webkit-min-device-pixel-ratio: 2), (-o-min-device-pixel-ratio: 3 / 2), (min--moz-device-pixel-ratio: 2), (min-device-pixel-ratio: 2), (min-resolution: 144dppx) {
    .background {
        background-image: url(‘../images/background-2x.gif‘);
        background-size: 25px 25px;
    }
}

初次翻译,如有错误或者翻译不正确的地方麻烦指点一下,谢谢!!!

时间: 2024-08-29 00:33:18

使用compass生成能适配retina屏的sprites的相关文章

移动端,多屏幕尺寸高清屏retina屏适配的解决方案

移动端高清.多屏适配方案 背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 首先,选取一款手机的屏幕宽高作为基准(以前是iphone4的320×480,现在更多的是iphone6的375×667). 对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对i

【转】Retina 屏幕下,网页图片的显示兼容

感谢 Apple,带来了 Retina 屏幕的革命,让我们可以在电子显示屏上享受到印刷级的分辨率.由于分辨率的提升,网页中的文字.Flash 和 SVG 内容显示得比原来更加精细,但网页中的图片却变得异常模糊,存在非常严重的分辨率兼容问题.自从 2010年6月,iPhone4 的上市开始,网页图片的显示兼容问题就已出现,经过几年的发展,配备 Retina 屏幕的电子产品越来越多,如今 Apple 又将 Retina 技术应用到了 Macbook Pro 上,网页图片在 Retina 屏幕下的显示

让MyEclipse支持mac的Retina屏解决字体模糊的问题

最近在使用MyEclipse时最让我头疼的问题就是MyEclipse并不能很好的支持苹果的Retina屏幕,看着字体会非常模糊,那叫一个心酸,真白瞎了这块好屏幕.(不知道最新的版本有没有支持,反正我的是MyEclipse10是支持不了,四处查了半天资料,发现网上有的太不详细,有的根本不管用,所以特地来分享一下,我的是10.10.3的系统). 首先,需要找到应用程序里的MyEclipse.app右键显示包内容-->Contents-->Profile-->然后右键MyEclipse显示包内

移动端 Retina屏 各大主流网站1px的解决方案

Retina屏的移动设备如何实现真正1px的线? 在retina屏下面,如果你写了这样的meta <meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> 你将永远无法写出1px宽度的东西,除此之外,inline的SVG等元素,也会按照逻辑像素来渲染,整个页面的清晰度会打折: 先看看  “诸子百家 ”  是如何实

New UI-获取手机屏幕尺寸与分辨率,屏幕适配,横竖屏问题

New UI-获取手机屏幕尺寸与常用分辨率,屏幕适配,横竖屏问题 --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的 力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文 更加的详尽,帮到更多的人,O(∩_∩)O谢谢! 小猪Android开发交流群:小猪Android开发交流群群号:421858269 新Android UI实例大全目录:http:/

Retina屏幕下 canvas显示模糊的问题

一 什么是Retina 所谓“Retina”是一种显示技术,可以将把更多的像素点压缩至一块屏幕里,从而达到更高的分辨率并提高屏幕显示的细腻程度,以MacBook Pro with Retina Display为例,工作时显卡渲染出2880x1800个像素,其中每四个像素一组,输出原来屏幕的一个像素显示的大小区域内的图像.这样一来,用户所看到的图标与文字的大小与原来的1440x900分辨率显示屏相同,但精细度是原来的4倍,但对于特殊元素,如视频与图像,则以一个图片像素对应一个屏幕像素的方式显示.

【转载】Retina屏的移动设备如何实现真正1px的线?

文章转载自 酷勤网 http://www.kuqin.com/ 原文链接:http://www.kuqin.com/shuoit/20150530/346322.html 原文摘要:前些日子总被人问起 iOS Retina 屏,设置 1px 边框,实际显示 2px,如何解决? 最后找到一个还算好用的方法:伪类 + transform 原理是把原先元素的 border 去掉,然后利用:before或者:after重做 border ,并 transform 的 scale 缩小一半,原先的元素相对

Retina屏下1px border

layout tltle tags post ios7下移动web开发的几个坑 webapp 1.Retina屏下1px border 由于高清屏的特性,1px是由2×2个像素点来渲染,那么我们样式上的border:1px在Retina屏下会渲染成2px的边框,一般有以下几种方法: 图片 阴影 缩放 移动版开发采用软图片的方法: .border { background-image:linear-gradient(180deg, red, red 50%, transparent 50%), l

使用 Compass 生成雪碧图

使用 Compass 创建一个项目 要在一个新项目中使用 Compass,可以打开命令行工具并输入如下指令 compass create my-project 如果 my-project 目录不存在,上述命令会创建一个叫做 my-project 的目录,并在其中添加以下文件: 如果你没有为compass create命令传递一个目录参数,它将使用你当前所在的目录. 在config.rb文件中,你可以对Compass的一些配置进行修改,例如资源位置和压缩程度.sass目录包含了一些初始的样式表,你