高清屏的背景图片适配

news/2024/11/16 9:19:06/

当我们把一个图标做成CSS中的背景图,在视网膜屏上预览时会发现图标是模糊的,所以我们会同时准备一个2倍大小的图标给高清屏,那么问题来了,怎么实现在普通屏下是普通背景图,而在高清屏下是用的高清图呢?


主要有四种实现方式:

1. media query + pixel-ratio 实现

2. img标签引用的不同大小图片,通过retina.js根据设备自动替换图片地址

3. image-set 实现(不兼容微信浏览器)

4. svg 实现


线上效果查看:

PC端: http://danielding.github.io/samples/retina_adapt_image_solution.html

手机端二维码:





================================================================================================================


高清屏的背景图片适配就是要做到响应式背景图片, 自适应各种视网膜(Retina)屏幕的背景图片, 可以通过Media Queries和image-set实现:

Media Queries:


  1. .hd{
  2.    background-image:url(105-160.png);/* 普通屏幕 */
  3. }
  4. /* ------------- Retina ------------- */
  5. @media only screen and (-o-min-device-pixel-ratio: 2/1), /* Opera */
  6.        only screen and (min--moz-device-pixel-ratio: 2), /* Firefox 16 之前 */
  7.        only screen and (-webkit-min-device-pixel-ratio: 2), /* Webkit */
  8.        only screen and (min-resolution: 240dpi), /* 标准 */
  9.        only screen and (min-resolution: 2dppx) /* 标准 */
  10. {
  11.     .hd{
  12.     background-image:url(210-320.png);
  13.     background-size105px 155px;
  14.     }
  15. }


使用“Media Queries”的问题是,CSS 代码的可维护性不高,有一些 hack 的味道。在高分辨率显示器下他没有选择的权利。同时还有另一种解决方案;

CSS[image-set]:


  1. .hd{
  2.     background-imageurl(no-image-set.png);
  3.     /* Retina */
  4.     background-image: -webkit-image-set(url(low-res.png) 1x, url(high-res.png) 2x);
  5.     background-image: -moz-image-set(url(low-res.png) 1x, url(high-res.png) 2x);
  6.     background-image: -o-image-set(url(low-res.png) 1x, url(high-res.png) 2x);
  7.     background-image: -ms-image-set(url(low-res.png) 1x, url(high-res.png) 2x);
  8. }

image-set的好处是,在支持image-set的浏览器会在高分辨下匹配需要的图像,而没有其他额外的功能。为浏览器提供不同的图像选择,这浏览器在不同的分辨下选择正确的图像。不需要告诉浏览器使用什么图像,而是直接提供了图像让浏览器选择。

image-set能让各种不同分辨下的图像都显示在CSS中的同一个地方。而使用media queries显示不同图像时,你可能会隔开很多行代码,难于寻找到对应的图像。




http://www.ppmy.cn/news/440152.html

相关文章

aida64副屏背景图_仅需100元!电脑监控副屏超傻瓜解决方案

【前言】 最近看到很多关于利用AIDA 64软件打造机箱内系统监控副屏的文章,看来灯大灯闪亮已经不能满足追求炫酷感的DIY玩家了。作为装机的老司机,自然免不了跟风想要富有未来科技感的台式机,于是攒了套AMD R9 3900X真香机,里面必然就要加入副屏来彰显个性。 本篇文章将抛开…

android 图片背景模糊,实现图片模糊(背景虚化),实现图片模糊背景

实现图片模糊(背景虚化),实现图片模糊背景 图片模糊效果 背景虚化(模糊)的效果越来越常用,那么如何使用代码来实现呢?在上篇文章中,我们讨论了关于 CoreImage 的知识, 理所当然的,首先尝试使用 CoreImage 解决问题,从上次打印出来的所有支持的滤镜中,在 127种滤镜中,存在 Blu…

背景图片适应屏幕大小的一些方法

背景图片适应屏幕大小的一些方法 想要背景图片适应屏幕的大小,背景图片要足够大,可以铺满常用的所有屏幕,还要图片要高清,不能一拉伸就失真,不能显示局部的时候显得很怪异。 方法一: 运用ul的宽度自适应特…

微信小程序开发:设定背景图片

文章目录 前言:一、原因与解决方法二、其他设置背景图片的方式1、获取网络图片2、将图片转换成base64格式3、使用image标签 前言: 今天在开发小程序的时候用到背景图片设定功能,但请求本地资源的图片时却提示错误,无法加载本地资…

css 图片放大1.2倍,二倍图以及背景图缩放

物理像素与物理像素比 物理像素点指的是屏幕显示的最小颗粒,是物理世界中真实存在的。这是厂商在出厂时就设置好了,比如苹果6是750*1334 而我们开发时用的 px 并不等同于像素,即 1px 不一定等于 1个物理像素点 在pc端页面,1个px等于1个物理像素,但移动端就不尽相同,如 iph…

【python--爬虫】千图网高清背景图片

爬取的网页是:千图网背景图片模块 查看背景图片的网页代码(右键–>【查看元素】/f12 / fn + f12) url链接【www.58pic.com/newpic/33945157.html】 进入了图片的高清大图页面 我们可以通过爬取最开始打开的页面的源代码进入对应的背景图片的详情页面. # 使用的utf-8编码 …

【python--爬虫】千图网高清背景图片爬虫

最近有读者反映想要下载千图网的高清背景图片,但是需要会员才能下载,而且需要的量非常大,问博主有没有办法能免费下载这些图片。 付费,不存在的o( ̄▽ ̄)o!,博主今天讲解如何通过pytho…

5.controller部署nova服务

nova 服务是 OpenStack service 计算服务,负责维护和管理云环境的计算资源; 例如: 接收客户端请求需要的计算资源; 确定实例在哪个物理机上创建; 通过虚机化的方式将实例启动运行等工作。 controller节点 在安装和配…