Css Sprite 图片等比缩放图片大小(background-size优化Sprites图显示)

在一个项目的开发过程当中用到了css Sprite,有这样一个需求:目标样式大小是32px * 23px大小的图片做为图标。 如图所示:css

图片描述

可是,给个人背景图片是这样的一张图,256px * 46px:url

图片描述

在咱们的实例中,咱们使用底部菜单大小32px * 23px.为了保证普通显屏设备的图像显示,在这个图像的基础上作了一半的缩小。spa

在最初的CSS样式中,background-position的属性值都不须要进行任何设置,由于他们的默认值都是“0”,以下所示:code

.x-navbar [class^='x-icon-'] {
background-image: url(img/icon_navbar_new_year.png);
width: 32px;
height: 23px;
}

所以,最关键的问题是,咱们怎么知道background-size属性值要设置为多少?图片

这里有一个公式:
高分辨率图像宽度 / 目标图像宽度 = X
原始Sprites图像宽度 / x = background-size的宽度值开发

咱们高分辨率下的图标是256px x 46px;
咱们目标图像的宽度是“64px”;
咱们Sprites图像的总宽度是“256px”it

根据前面的公式 能够得知
64/32 = 2
256/2 = 128
最后的一件事情。咱们只计算了背景图像的宽度值,为了确保背景图像缩放比例正常,咱们将“height”值设置为“auto”。固然你也能够设置相的的值(设置background-sizer的宽度为auto,高度为具体值),但我发现设置宽度会比较容易。io

.x-navbar [class^='x-icon-'] {
    background-size: 128px auto;
}

而后就是根据图片的位置坐标进行显示了:class

.x-icon-shouye {background-position: 0 0;}
.x-icon-dingdan {background-position: -32px 0;}
.x-icon-gouwuche {background-position: -64px 0;}
.x-icon-gengduo {background-position: -96px 0;}

这样就实现了图中的效果了!基础

相关文章
相关标签/搜索