- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我会尽量总结一下。我正在开发一个 Web 应用程序,它需要:
目标设备宽度/高度与目标像素比:
对于条件 CSS,我选择了目标像素比,而不是为特定平台和设备创建不同的布局或使用 safari 用户代理。所以我正在使用 @media (-webkit-min-device-pixel-ratio: 2)
加上我所有的响应式样式。
现在我正在尝试决定如何处理图像。
每个背景两张图片 vs 一张背景调整大小的图片
因为我想尽可能减少服务器请求,所以我使用 Sprite (4 或 5 个"template")而不是单独的 png(SVG 讨论是另一回事!)。但是 Background-size
不被 IE8 支持,我的很大一部分用户,所以它需要一个像 jquery.backgroundSize.js 这样的 JS 回退。 .
所以:
Is the combination of sprites, conditional background-size and a JS fallback for IE8 the best option, from a performance and good-practise point of view?
我没有发现关于这个特定(但现在很普遍)场景的其他问题。这不是一个讨论问题,我更想知道是否就如何处理这种情况达成了实际协议(protocol):Retina 显示、 Sprite 、IE 和 JS。
最佳答案
条件background-size
不会是首选选项。如果您选择使用该属性为具有“正常”像素比的客户端使用高分辨率 Sprite ,您最终会得到比预渲染图像更低的图像质量,客户端缩放图形和传输比需要大 4 倍的 Sprite 的额外计算开销。通过依赖 background-size
您最终还会人为地限制您的网站与旧版浏览器的兼容性,而 IE8 JS 回退也可能会引入内容闪烁(无论您的场景是否可接受)。
我会使用每个像素比率的预渲染版本(因此您最终会得到两倍的图像文件)。您将能够为用户提供比 background-size
质量更好的图形。曾经可以。如果您手动构建 sprite(而不是使用自动化工具生成它们和随附的 CSS),这会引入维护开销,但该解决方案总体上更可取。
制作一个高 dpi 版本的 css 文件,例如main-highdpi.css 和 有条件地 将其包含在与 <link rel="stylesheet" media="only screen and (-webkit-min-device-pixel-ratio: 2)" type="text/css" href="main-highdpi.css" />
类似的适当媒体查询中
创建您依赖的 sprite 的高分辨率版本并更新 CSS sprite 引用。我认为首选命名约定尚未达成一致(在资源名称后缀 @2x
似乎很流行,例如 main.png & main@2x.png)
利润!
我会提倡这种方法,因为光栅图像的渲染质量更高(与使用 background-size
缩放相反)、没有兼容性问题和更快的客户端渲染。缺点是传输更大的图像文件,这是在客户端设备上获取高分辨率图像的可接受价格(并且无论如何都会缓存 Sprite )。至少您最终不会以 this article suggests 的形式请求两个副本。 !
请务必牢记各个设备的限制(图像大小和维度等)。
关于html - 响应式设计,强调视网膜显示和桌面。 Sprite 和 JS : what to sacrifice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11821230/
IOS8 的 LaunchImage 大小是多少? 什么是 Retina HD5.5、Retina HD 4.7 和 Retina 4?尺寸? DPI 是多少?? 72 我猜? 苹果文档的链接会很棒,
我不太明白 window.devicePixelRatio 值是什么,以及它如何决定该设备需要什么尺寸的图像(2x、3x 等)。 例如,在 iMac 5K Retina(2015 年末)上,我预计像素
在创建网站/移动应用程序并适应视网膜/高分辨率屏幕(需要两倍大小的图像)时,为什么只包含更大的图像不是一个好主意,并将其大小缩小一半,这样您只有一张图像,在非视网膜图像上,它只会变得更小(图像中的细节
我正在使用以下代码在我的 iPhone 应用程序中设置背景。 [[self view] setBackgroundColor:[UIColor colorWithPatternImage:[UIIma
我有一个应用程序,其中设计师为我提供了两种格式的 Assets 或 png,非视网膜和视网膜,格式正确并用 @2 正确命名。视网膜图像工作正常,但非视网膜图像在它们后面显示出奇怪的白色背景。有人经历过
所以我知道这是一个棘手的问题。我遇到过 Sprite 和高对比度模式的问题,基本上可以用如下代码解决: .icon:before { content: url(icons.png); posi
我的渐变 div 上有一条奇怪的水平线。它只在 Safari 和视网膜显示器上显示,我不明白为什么。还有其他人遇到过这个问题吗? HTML: CSS: .img-gradient2 { po
我正在为视网膜显示器调整我的网页,我正在使用 IrfanView 来加倍我的图像。但是,通常 640 x 427 px 的图像现在变成了 1281 x 855 px。这会按预期工作吗?我也在使用 Re
我为同一个网站制作了两个不同的网页:一个用于手机设备,一个用于桌面设备。主要原因是因为该网页有很多按钮,如果您使用的是手机,则很难触摸这些按钮,因为它们在手机屏幕上看起来很小。所以我制作了一个 jav
我们知道使用@2x 和不使用它时视网膜上的图像是如何工作的。但是电影呢? 对于 Retina 显示器,我是否必须让一部电影的分辨率是另一部电影的两倍?命名约定 @2x 代表电影?只拥有更大的一个并使其
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Detect Retina Display 我们如何通过 Objective-C 代码知道设备是否具有视网膜
我刚刚将 Xcode 从 4.2 升级到 4.3.3。然后我启动 iOS 模拟器(将“硬件 -> 设备”设置为“iPhone(视网膜)”),模拟器现在显得如此之大,以至于应用程序页面实际上需要滚动!
我尝试从视网膜显示屏获取屏幕截图,并在窗口上绘制此图像。 我可以捕获 CGDirectDisplayID displayId = CGMainDisplayID() CGImage imageRef
我有一张 PNG 图片,我应该在我的 iPhone 应用程序中使用它,但首先,我必须为其提供 iPhone 4 视网膜屏幕的尺寸。有谁知道它的尺寸是什么或者如何做到这一点? 最佳答案 iPhone 4
我想编写一个自定义绘图 View ,它应该利用 Retina 显示屏。我使用的是 2019 款 MacBook Pro。为了测试绘图,我只是绘制宽度为 1px 的平行线。但线条在整个 View 中显示
我已经将一些应用程序迁移到 iPhone5,但我无法解决这个问题。我遵循相同的步骤,但现在我没有 xib 布局来设置窗口的自动调整大小,因为 TabBarViewController 以编程方式定义为
我正在为 iPad 开发 iOS 应用程序,我使用的是普通图像而不是 @2x 图像,所以这可以在新 iPad 上使用吗?或者必须包含@2x 图像?如有任何帮助,请提前致谢。 最佳答案 您可以在视网膜屏
我正在更新我的应用程序以使用 iPad 视网膜显示屏,但出于某种原因,我的一个 View 不想缩放到 2 倍。正如您在屏幕截图中看到的那样,左侧按钮上的文本可以正确缩放,而右侧的文本仍然以低分辨率显示
CSS 在视网膜屏幕上将 1px 文本阴影加倍为 2px。我只需要 1px。任何解决方案? 0.5px 无效。 最佳答案 我没有尝试过文本阴影,也没有方便的视网膜屏幕,但是对于框阴影 MDN说对于传播
最近几天我阅读了很多关于这个主题的内容,但我没有找到解决方案。我有两个 sprite 集,一个是低质量的正常显示,另一个是高质量的视网膜显示。 我的问题是,我的网站必须响应,图形应根据浏览器窗口调整大
我是一名优秀的程序员,十分优秀!