好用的几种经常使用的响应式设计让图片自适应的办法

本文转载于:猿2048网站好用的几种经常使用的响应式设计让图片自适应的办法php

Ethan Marcotte曾经在A List Apart上发表过一篇名为“Responsive Web Design”的文章,他当时就提出了响应式架构的概念(很多混迹技术圈的确定看过这篇文章,这里就再也不赘述了)。随着终端设备的日益丰富,没法针对设备类型、尺寸或浏览器进行自适应调整的图像会严重减慢网站的访问速度,最终致使用户流失。html

一,谈到图片自适应,不少前端开发人员会不假思索的来一句“宽度100%”前端

例如:web

 1 <html>
 2   <head>
 3     <style>
 4       html,body{width:100%;height:100%;margin:auto 0px;padding:auto 0px;text-align:center;}
 5       .imgBox, .imgBox img{width:100%;height:100%;}
 6     </style>
 7   </head>
 8 <body>
 9   <div class="imgBox">
10     <img src="1.jpg" />
11   </div>
12 </body>
13 </html>

<html>
  <head>
    <style>
      html,body{width:100%;height:100%;margin:auto 0px;padding:auto 0px;text-align:center;}
      .imgBox, .imgBox img{width:100%;height:100%;}
    </style>
  </head>
<body>
  <div class="imgBox">
    <img src="1.jpg" />
  </div>
</body>
</html>canvas


精髓能够是这样一行CSS代码:浏览器

1 img{ width:100%;height:auto;max-width:100%;display:block;}

img{ width:100%;height:auto;max-width:100%;display:block;}架构

若是背景图片,就用background-size,例如:
为canvas标签增长自定义背景:布局

1 #myCanvas {
2   background-image: url(${webRoot }/webpage/weixin/images/agency.jpg);
3   background-size: 100%;
4 }

 

#myCanvas {
  background-image: url(${webRoot }/webpage/weixin/images/agency.jpg);
  background-size: 100%;
}
注:url中是图片的路径,你们需自行修改。网站

没错,就是这么一行简短的代码!部分前端开发者认为这行代码既简洁又高效,很好地解决了图片自适应问题,但有部分前端开发者认为这种方法没法解决分辨率问题,没法保证图片不失真,这个问题到底应该如何解决呢?url

一个图像版本显然是不够的,为了确保各个屏幕尺寸之间的平滑过渡,设计师必须以不变应万变。也就是说,必须采起静态的方式使图像适应性更强。对于灵活的布局大小和屏幕密度的多样性都有相同的解决方案:提供可变分辨率的图像。图片分为背景图片和经过img标签引入的图片,咱们是应该使用高分辨率图像来利用高分辨率硬件,仍是使用小图像以便在低分辨环境中快速加载?

经过提供同一图像的不一样版本(大小和分辨率),能够向须要的网站访问者发送高分辨率版本,为不具备此功能的网站提供较低分辨率的版本。要了解须要多少不一样版本,能够采起如下步骤:

创建尺寸和分辨率范围的极限,并记录各类尺寸和分辨率。
使用新的响应式图像标记来标记备用版本,以便浏览器能够加载最适合用户屏幕分辨率和窗口大小的版本。
具体到代码级,前端开发应该怎么作呢?


面对格式问题,咱们能够尽可能让浏览器替咱们决定。过去,实际上只有四种图像格式具有通用接受性:GIF,JPEG,PNG或SVG。然而,今天的响应式,太多可变格式的图像容许开发者使用新的技术,以即可以在支持的浏览器中使用其余更新更好的格式,在不支持的浏览器中继续使用旧格式。

<img src="800px.png" srcset="400px.png 400w, 800px.png 800w, 1600px.png 1600w, 2400px.png 2400w, 3200px.png 3200w" sizes="80vw">

<img src="800px.png" srcset="400px.png 400w, 800px.png 800w, 1600px.png 1600w, 2400px.png 2400w, 3200px.png 3200w" sizes="80vw">

 

综述

网站加载时间延迟一秒就可能会致使网站转化率降低7%,建立响应式Web环境是棘手的,它须要微妙的平衡。可是,在不一样屏幕尺寸和设备功能的世界中,创建这种图片自适应是必要的。总结下来基本是两种方法:若是不在意分辨率,开发者能够沿用宽度100%的方法,这种方法是最简便的;若是须要考虑分辨率,就须要查询清楚不一样设备的分辨率,而后采用第三方服务或在代码层自主进行设置。

相关文章
相关标签/搜索