CSS处理几种分辨率的方法,为什么要用css加载不同分辨率图片?这就让你彻底搞懂其中原理!...

前言

图片是前端er经常要处理的,最近发现,我身边很多人不知道手机端的图片为什么是用2倍大,背景定位又是怎么计算的呢?今天就来看下原理。

f17841761f74932922fd7743b0c1b41c.png

高清显示屏显示原理

高清显示屏起源于 retina ,就是鼎鼎大名的乔布斯提出的,这是一种备足够高像素密度而使得人体肉眼无法分辨其中单独像素点的液晶屏。总结有以下两个特点:

一种具备超高像素密度的液晶屏同样大小的屏幕上显示的像素点由1个变为多个,如下图:

79f5b41072324ff29df671d46cb1db1d.png

retina显示屏 只是高清显示屏的一种

随着苹果的 retina显示屏 推出以来,很多厂商也开始推出自己的高清显示屏,如三星手机、小米手机、华为手机等,而目前市场的移动设备大都是高清显示屏了,其实它们的显示原理都是来自苹果的 retina显示屏。

高清显示屏下图片变模糊

了解高清显示屏的原理后,我们可以想象有同一张图片在不同的2部手机中,一部是普通显示屏,一部是高清显示屏,在同样大小的屏幕上,高清显示屏中的位图会被放大,图片会变得模糊。

d72ca0f8e4f196c7ffcb8884aa3be6fb.png

常见高清显示屏中位图被放大的比例

我们可以了解到 retina显示屏 中图片被放大的倍数高达 2:1,而其实各种高清显示屏放大的倍数是不同的,有 1.3:1、1.5:1、2:1、3:1 ,目前最多的是 2:1,而 有些手机甚至已经到了图片被放大的倍数高达 3:1。

如何区分普通显示屏和高清显示器

devicePixelRatio,通过它的数值来区分普通显示屏和高清显示器,关于它的详细介绍可以去看张鑫旭大神写的一篇文章《设备像素比devicePixelRatio简单介绍》,写的非常好。实际上它就是设备上物理像素和设备独立像素( device-independent pixels (dips) )的比例,即 devicePixelRatio = 屏幕物理像素/设备独立像素 。

那么,通过计算 devicePixelRatio 的值,是可以区分普通显示屏和高清显示器,当devicePixelRatio值等于1时(也就是最小值),那么它普通显示屏,当devicePixelRatio值大于1(通常是1.5、2.0),那么它就是高清显示屏。

如何设计高清背景图

为了更好的提升用户体验,节省移动端的流量,针对不同的显示屏,我们可以采取不用的方案,保证图片在不同显示屏幕下正常展现,这个方法跟设计原生APP中针对不同分辨率采用使用不同图片的原理相似。

利用媒体查询结合 devicePixelRatio 可以区分普通显示屏和高清显示屏,来加载不同尺寸的图片:

针对普通显示屏(devicePixelRatio = 1.0、1.3),加载一张1倍的图片针对高清显示屏(devicePixelRatio >= 1.5、2.0、3.0),加载一张2倍大的图片

基于现在大部分手机都是高清显示屏(大部分还是2倍屏),所以一般设计稿给的尺寸也都是2倍的,完了也可以通过上边说的判断去制作3倍图进行加载保证用户体验。

举报/反馈

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue和H5项目中,使用`location.href`进行页面跳转时,首次跳转需要很久的可能原因是因为页面资源(例如CSS、JavaScript、图片等)的加载和解析所花费的时间较长。 要解决这个问题,可以尝试以下几种方法: 1. 使用Vue Router进行页面跳转:Vue Router是Vue.js官方的路由管理器,它可以帮助你实现SPA(单页应用)的页面跳转,而无需刷新整个页面。相比于`location.href`方式,使用Vue Router进行页面跳转可以提供更好的用户体验和性能。 2. 使用异步加载(懒加载):将页面资源按需加载,而不是一次性加载所有资源。这可以通过Webpack等构建工具提供的代码分割(code splitting)功能来实现。通过异步加载,可以减少首次加载的资源量,加快页面加载速度。 3. 优化资源加载:对于较大的资源文件(如图片、视频等),可以进行压缩处理或使用较低分辨率的版本。同时,确保资源文件的缓存设置正确,以便在后续访问时能够从缓存中读取,而不是重新下载。 4. 使用CDN加速:将静态资源部署到全球各地的CDN(内容分发网络)节点上,可以提高资源加载的速度和稳定性。CDN会根据用户的地理位置,从最近的节点提供资源,减少网络延迟。 5. 检查页面的性能瓶颈:使用浏览器开发者工具(如Chrome DevTools)进行性能分析,查看是否有其他因素导致页面加载缓慢,如网络请求过多、JavaScript执行时间过长等。针对具体问题进行优化。 通过以上方法,你可以尝试解决首次跳转页面加载缓慢的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值