高清屏解决方案

 发表于 2019-04-04

Retina屏图片适配

如果屏幕的dpr(device pixel ratio)大于1,则屏幕是高清屏,每一个css像素所对应的物理像素不止一个,比如:

  1. dpr:2,一个css像素对应4个物理像素
  2. dpr:3,一个css像素对应9个物理像素

那么如果想针对不同dpr的屏幕提供不同的图片,可以使用如下方案:

Media query(只能用于背景图片)

12345678
.css{/* 普通显示屏(设备像素比例小于等于1.3)使用1倍的图 */     background-image: url(img_1x.png);}@media only screen and (-webkit-min-device-pixel-ratio:1.5){.css{/* 高清显示屏(设备像素比例大于等于1.5)使用2倍图 */ background-image: url(img_2x.png); }}

Javascript

1234567891011
$(document).ready(function(){ if (window.devicePixelRatio > 1) { var lowresImages = $('img');

 images.each(function(i) { var lowres = $(this).attr('src'); var highres = lowres.replace(".", "@2x."); $(this).attr('src', highres); }); }});

Retina屏下0.5px边框问题

因为2倍屏下,1px是由两个物理像素点组成的,所以较1倍屏1px线看起来会粗一点。通常解决办法是在2倍屏下使用0.5px作为边框宽度。比如对于iphone5(dpr=2),添加如下的meta标签,设置viewport(scale 0.5):

1
<meta name="viewport" content="width=640,initial-scale=0.5,maximum-scale=0.5, minimum-scale=0.5,user-scalable=no">

然而,页面scale,必然会带来一些问题:

  1. 字体大小会被缩放
  2. 页面布局会被缩放(如: div的宽高等等

我们也可以使用css3,transform scale来进行元素的缩放,不影响其他元素,或者针对被缩小的元素再进行一次放大,比如

123
[data-dpr=2] div{    font-size: 32px;}

rem方案

某些情况下我们希望不同屏幕下的元素大小表现能够适应屏幕,比如一个大标题,在ip6 plus下大一点,ip5下就小一点,我们就可以利用rem的特性来解决。

1234567891011121314151617
var currClientWidth, fontValue, originWidth//originWidth用来设置设计稿原型的屏幕宽度(这里是以 Iphone 6为原型的设计稿)originWidth = 375__resize()

//注册 resize事件window.addEventListener('resize', __resize, false)

function __resize() { currClientWidth = document.documentElement.clientWidth //这里是设置屏幕的最大和最小值时候给一个默认值 if (currClientWidth > 640) currClientWidth = 640 if (currClientWidth < 320) currClientWidth = 320

 fontValue = ((16 * currClientWidth) / originWidth).toFixed(2) document.documentElement.style.fontSize = fontValue + 'px'}

这样,当我们使用rem作为单位时,不同宽度屏幕下元素的大小表现是不一样的。

转载于:https://www.cnblogs.com/guochongbin/p/10762695.html

Retina屏图片适配相关推荐

  1. 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...

  2. Android 广告图片 全屏图片适配方案的思路

    场景: 在启动页加载一个全屏广告图片,要适配不同的机型. 问题: 如何适配不同的机型? 解决方法: 不要做满屏的图片,最好图片内容居中,周围留上纯色,就可以适配所有屏幕.可以参考淘宝.京东等.

  3. 移动端Retina屏幕图片适配

    第一个方法 ;(function(win, lib) {var doc = win.document;var docEl = doc.documentElement;var metaEl = doc. ...

  4. 移动端采用Flexible将PX转换REM适配及开发中Retina屏1px边框的两种解决方案

    移动端采用Flexible将PX转换REM适配及开发中Retina屏1px边框的两种解决方案 说明:两个方案均基于Webpack构建. 方案一: 搭建环境及相关配置 webpack 3,需要loade ...

  5. 【iOS-Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏...

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2d/463.html ...

  6. iOS 实现启动屏动画(Swift实现,包含图片适配)

    代码地址如下: http://www.demodashi.com/demo/12090.html 准备工作 首先我们需要确定作为宣传的图片的宽高比,这个一般是与 UI 确定的.一般启动屏展示会有上下两 ...

  7. android引导页图片全屏适配,关于图片适配不同尺寸的image View(实战)

    分享人:广州华软佐罗 一. 前言 在前端开发过程中,设计稿中往往只提供一张图片,但是app内需要用到的尺寸各种各样. 同时图片不仅是信息的直接表达,也会为网站起到美观点缀的作用,图片的变形.过分裁切会 ...

  8. php手机图片怎么适配,详解如何使用image-set适配移动端高清屏图片

    一.注意注意注意! 什么dpr.css像素.设备像素,这里是没有的,网上太多讲解了,都很好,这里不废话,建议是先查找相关资料了解再看本文章. 该图片适配方案是基于vw单位适配方案的,具体如何用vw进行 ...

  9. Photoshop CS6 MAC 中文版破解版 支持Retina屏

    Photoshop CS6 MAC 中文版破解版 支持Retina屏 目前世界上"最好的化妆品"是一款叫做PhotoShop的产品,它可以帮你去除所有你不满意的地方.上周末,这款最 ...

  10. 屏幕适配入门-了解基本概念-图片适配

    google  点击打开链接 看不懂google的看这个启蒙篇 点击打开链接 鸿洋给出的建议:点击打开链接 主要是通过设置百分比的方式达到适配的目的. 就是在项目中针对你所需要适配的手机屏幕的分辨率各 ...

最新文章

  1. 20个精美图表,教你玩转 Pyecharts 可视化
  2. Error running query: MetaException(message:Got exception: java.net.ConnectException Call From XXXX
  3. java中utilities类_servletutilities属于哪个java包
  4. 【皇甫】☀一本好书 你值得浏览
  5. urlrewrite 地址重写
  6. CSS3实现Loading动画特效
  7. mmap、munmap函数
  8. python3 在线工具_Curl转python在线工具
  9. JS对cookie进行操作
  10. docker php安装gd扩展_php安装redis扩展
  11. 计算机的实现的理论基础
  12. 舒尔特表-遮罩层-计时排序点击 js
  13. 英特尔服务器主板型号参数对照表,intel主板_目前市场上intel主板芯片组型号对应cpu针脚数量?...
  14. I2C设备调试及波形分析
  15. 5.VM虚拟机网络设置---桥接模式
  16. mpu6050 motion_driver_6.12官方驱动下载
  17. 什么轴的机械键盘声音小
  18. android快速填表,Android 11将自动填表功能整合到键盘输入建议中
  19. java多线程实现动态效果_java多线程实现礼花绽放的效果,
  20. JVM垃圾回收算法与原理详解

热门文章

  1. C语言:下载并安装编译器(MinGW-W64 GCC)win10环境
  2. Win7系统C盘空间太小怎么扩容【系统天地】
  3. C9高校,博士生一作发Nature!
  4. netty服务器怎么推送消息,我来学Netty之推送消息给客户端
  5. mac插网线不能上网_苹果笔记本连接网线不能上网怎么回事
  6. Openssl win8 用法
  7. 《Objective-C 程序设计(第4版)》图书信息(二)
  8. 欢迎加入可一科技,见证区块链技术的力量
  9. 一页中关村 · 当百度碰见丧尸
  10. CNVD-2020-10487(Tomcat AJP)漏洞