最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

css3处理sprite背景图压缩来解决H5网页在手机浏览器下图标模糊的问题_html/css

来源:懂视网 责编:小采 时间:2020-11-27 16:06:47
文档

css3处理sprite背景图压缩来解决H5网页在手机浏览器下图标模糊的问题_html/css

css3处理sprite背景图压缩来解决H5网页在手机浏览器下图标模糊的问题_html/css_WEB-ITnose:最近在负责一个微信H5 App项目,遇到一个郁闷的问题,手机浏览器查看网页时图标都是模糊的,有锯齿,电脑浏览器显示则是正常。大概知道是分辨率适配等类型的问题,后来网上查找了一些办法,大部分的解决方案都是设计一套放大1倍的图标,再压缩显示。 我们都知
推荐度:
导读css3处理sprite背景图压缩来解决H5网页在手机浏览器下图标模糊的问题_html/css_WEB-ITnose:最近在负责一个微信H5 App项目,遇到一个郁闷的问题,手机浏览器查看网页时图标都是模糊的,有锯齿,电脑浏览器显示则是正常。大概知道是分辨率适配等类型的问题,后来网上查找了一些办法,大部分的解决方案都是设计一套放大1倍的图标,再压缩显示。 我们都知
最近在负责一个微信H5 App项目,遇到一个郁闷的问题,手机浏览器查看网页时图标都是模糊的,有锯齿,电脑浏览器显示则是正常。大概知道是分辨率适配等类型的问题,后来网上查找了一些办法,大部分的解决方案都是设计一套放大1倍的图标,再压缩显示。

我们都知道标签可以通过固定宽高的方式来压缩大图,从而得到高清的显示效果,而图标一般用背景图来呈现,怎么搞呢?好吧,css3出了一个很牛逼的属性background-size可以直接设置背景图的宽高,直接解决了前者的疑惑。

那么问题来了,我们的网页不可能每个图标都独立一张图片来加载,那样每张图片将会是一个http请求开销,我们一般的做法是把多张小图片拼在一张大图里,然后通过sprite(精灵)background-position定位的方法来解决,只要加载一张大图,就可以完成多个图标的显示,减少http请求开销,提高性能。所以,我们也希望把放大1倍的高清图标也拼在一张大图里,通过background-position来定位到每个对应的图标上,并进行压缩。网上找了很多方法,终于找到了一个靠谱的方案:

1)首先,我们要准备两张排成一行(必须排成一行,下面解释)的图片,一张是原始大小,另一张是放大1倍的大小

(map-icon.png)

(map-icon@2x.png)


2) 最初的写法,主要是在电脑浏览器上显示,我们使用原图map-icon.png即可

/* //网页标签: *//* 装载图标的容器,固定宽高,内距设为0 */.control { display: block; text-decoration: none; padding: 0; width: 30px; height: 30px; }/* 图标标签,宽高自动填充 */.car,.position,.zoom-in,.zoom-out {	display: block; 	width: 100%; 	height: 100%; 	background: url(images/map-icon.png) no-repeat;}.car { background-position: 0 0; }.position { background-position: -30px 0; }.zoom-in { background-position: -60px 0; }.zoom-out { background-position: -90px 0; }


3) 问题是,我们怎么知道background-size属性值要设置为多少? 后来找到有一个公式:
高分辨率图像宽度 / 目标图像宽度 = X原始Sprites图像宽度 / x = background-size的宽度值
好吧,公式的原理我们就不在这里展开了,直接写上去试试:

60 / 30 = 2 即放大倍数

7张60x60的大图总宽度 420

420 / 2 = 210 即background-size的宽

而background-size的高,我们这里设置为auto即可,然后换上@2x的大图进行压缩

还有,我们必须在外层声明一个Media Queries,该Media Queries专门针对Retina屏幕设备显示器

/* 移动端媒体查询像素比 */@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2) {.car,.position,.zoom-in,.zoom-out {	background: url(images/map-icon@2x.png) no-repeat; background-size: 210px auto;}/* 注意这里还是按30像素大小的位置来查找 */.car { background-position: 0 0; }.position { background-position: -30px 0; }.zoom-in { background-position: -60px 0; }.zoom-out { background-position: -90px 0; }}
相反,貌似也可以给定高度的值,宽度取auto自适应,但我尝试过,不太容易成功。我们以后就直接用一行图标排开,给背景图宽赋值就行了!

最后,给出使用此方案的前后效果图:

(处理前)


(处理后)

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

css3处理sprite背景图压缩来解决H5网页在手机浏览器下图标模糊的问题_html/css

css3处理sprite背景图压缩来解决H5网页在手机浏览器下图标模糊的问题_html/css_WEB-ITnose:最近在负责一个微信H5 App项目,遇到一个郁闷的问题,手机浏览器查看网页时图标都是模糊的,有锯齿,电脑浏览器显示则是正常。大概知道是分辨率适配等类型的问题,后来网上查找了一些办法,大部分的解决方案都是设计一套放大1倍的图标,再压缩显示。 我们都知
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top