CSS Sprite精灵图如何缩放大小

在 移动端项目当中,如果要使用精灵图的话,因为我做了px自动转换vw单位,所以在使用的时候,position位置正常写单位是px,但是转化成vw后就找不到对应的图片了

"postcss-px-to-viewport": { 
viewportWidth: 750, // 视窗的宽度,对应的是我们设计稿的宽度,一般是750 
viewportHeight: 1334, // 视窗的高度,根据750设备的宽度来指定,一般指定1334,也可以不配置 unitPrecision: 3, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除) 
viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw 
selectorBlackList: ['.ignore', '.hairlines'], // 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名 
minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值 
mediaQuery: false // 允许在媒体查询中转换`px` }著作权归作者所有。

在设置的时候因为我设置了ignore和 hairlines这两个类名不会自动转换,所以需要在标签中使用这两个类名来设置background-position。

然后再移动端中,因为缩放的比例问题,px单位太大。

可以用两个方法解决:

  • transform:scale( x ): 
    语法为:transform: scale(x,y). 同时有scaleX, scaleY专门的x, y方向的控制。 
    例如:transform: scale(0.5) 缩小为原来的一半 
    和zoom不同,scale并不支持百分比值和normal关键字,只能是数值。而且,还能是负数,没错,负数。而zoom不能是负值!
  • zoom:x 
    例如:zoom:0.5 也是缩小为原来的一半

zoom和transform:scale的差别是:、

1:在文档流中zoom加在任意一个元素上都会引起一整个页面的重新渲染,而scale只是在当前的元素上重绘。意思是,当你给一个div固定宽高时,scale变化的时候,其原本的宽高还是不变的,你给div height200px,width:200px, scale(0.5)即为缩小为原来的一半时,他的height和width还是200px, 只不过里面的元素缩小了而已。因此,就没有layout的重计算。

2:但是zoom牵一发动全身,zoom:0.5后 ,width和height就变成了100px。

你可能感兴趣的:(CSS Sprite精灵图如何缩放大小)