开始了解响应式图片

  响应式,根据屏幕尺寸和分辨率的设备上都能良好工作以及其他特性的图片,接下来考虑怎样创建自适应得图片,专注于img元素,完成自适应。

  分辨率切换,不同的尺寸

  <img srcset="elva-fairy-320w.jpg 320w,

        elva-fairy-480w,jpg 480w,

        evla-fairy-880w,jpg 800w"

    sizes="(max-width: 320px) 280px,

        (max-width: 480px) 440px,

        800px"

    src="elva-fairy-880w,jpg" alt="elva dressed as a fairy">

其中srcset和sizes属性看起来比较复杂,按照上述样子进行格式化后,就定义好了浏览器选择的图像集以及每个图像的大小,包含一个文件名 一个空格 图像的固有宽度,这里的宽度单位用w表示,表示图像的真是大小,sizes属性定义了一组媒体条件,屏幕宽度知名某些媒体条件为真时,选择什么样的格式,(max-width: 480px)叫媒体条件,当媒体条件为真时填充后面的槽宽度。最后一个没有媒体宽度时默认条件。当浏览器匹配了第一个后续的媒体条件将被忽略。

  对于图片的插入还可以改用picture条件,代码如下:

<picture>
<source media="(max-width: 799px)" srcset="elva-480w-close-portrait.jpg">
<source media="(min-width: 800px)" srcset="elva-800w.jpg">
<img src="elva-800w.jpg" alt="Chris standing up holding his daughter Elva">
</picture>

source包含一个media属性,仅仅你在艺术方向场景下使用media属性。

  浏览器加载一个页面会先下载任意图片也叫预加载(相对应的叫懒加载),发生在主解析器开始加载和解析css.js之前的,所以需要设置srcset,方法监测media如果你用js控制还需要先监测视图宽度如果不合适还需要将原先已经加载好了的替换掉,对响应式理念来说,很糟糕。

  大胆使用现代图像格式。

  新的图片格式webp  ipeg-2000高质量且小,虽然浏览器支持程度不大一致,通过使用picture指定type属性兼容其他不支持的类型;

<picture>
<source type="image/svg+xml" srcset="pyramid.svg">
<source type="image/webp" srcset="pyramid.webp">
<img src="pyramid.png" alt="regular pyramid built from four equilateral triangles">
</picture>

在source元素中只可以引用声明的文件类型。

  小结:艺术方向,为不同的布局裁剪图片,桌面布局完整横向的图片,手机布局显示裁剪过的纵向图片,用picture元素实现;分辨率切换,为窄频提供小图片或者高分辨率提供不同分辨率的图片,通过SVG、srcset、sizes来实现。

HTML入门12的更多相关文章

  1. Cesium入门12 - Camera Modes - 相机模式

    Cesium入门12 - Camera Modes - 相机模式 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ ...

  2. C# 经典入门12章-System.Collections.Generic命名空间

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtUAAAAsCAIAAAAl09PEAAAgAElEQVR4nOx95Vscyd7285cMPrg7Aw ...

  3. C# 经典入门12章-使用泛型-1

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8sAAAK5CAIAAAAHDiuGAAAgAElEQVR4nOyd9V9Uzfv/v3/J0t0N0p

  4. Jmeter入门12 __time函数 jmeter获取当前系统时间

    有的接口要传递当前的日期或时间,可以用__time()函数获取当前时间 ${__time()} 当前时间到计算机元年的毫秒数 ${__time(时间格式)}  以预定的格式显示当前时间  请求示例: ...

  5. SVG 2D入门12 - SVG DOM

    使用脚本可以很方便的完成各种复杂的任务,也是完成动画和交互的一种主流方式.由于SVG是html的元素,所以支持普通的DOM操作,又由于SVG本质上是xml文档,所以也有一种特殊的DOM操作,大多称之为 ...

  6. openresty入门12 openresty php 整合

    利用 openresty 的 drizzle-nginx-module模块 读取数据 传递到  php后端 利用到  openresty 的并发,无阻塞,mysql连接池,memcache|redis ...

  7. C# 经典入门12章-使用泛型类型-2

  8. Linux入门(12)——解决双系统下Ubuntu16.04不能访问Windows分区

    解决办法一: 进入windows系统,关闭快速启动,关机. 解决办法二: 如果办法一不能解决问题,用这个办法. 查看盘符: sudo fdisk -l 需要在查看盘符后记下目标盘符的数字,比如想解除C ...

  9. JAVA入门[12]-JavaBean

    一.什么是JavaBean JavaBean是特殊的Java类,使用Java语言书写,并且遵守规范: 提供一个默认的无参构造函数. 需要被序列化并且实现了Serializable接口. 可能有一系列可 ...

随机推荐

  1. 【Android入门】一个App学会安卓开发

    一.程序项目架构

  2. Pytorch学习笔记(一)Numpy SciPy MatPlotlib Tutorial

    英文原文链接:http://cs231n.github.io/python-numpy-tutorial/ Numpy Numpy是Python中科学计算的核心库.它提供了一个高性能的多维数组对象,以 ...

  3. 通过配置文件新建solr的core

    目录solr-7.5.0\server\solr 1.  新建文件夹 test-core 2. 在文件夹test-core下新建core.properties name=test-core confi ...

  4. 微信商户/H5支付申请 被拒原因:网站存在不实内容或不安全信息

    看到这张图片,申请H5支付的朋友估计是崩溃的,被拒的原因是网站存在不实内容或不安全信息. 解决方法有两种: 针对不安全内容,则是微信支付审核团队认为你的网站存在安全漏洞的,需要修复. 针对不实内容,则 ...

  5. 2018-2019-2-20175235 实验一 《Java开发环境的熟悉》实验报告

    实验一 Java开发环境的熟悉 实验内容及要求: 1.使用JDK编写简单的Java程序 2.使用IDEA编辑编译运行调试测试Java程序 实验内容,步骤与心得: (一).Linux命令行下Java程序 ...

  6. springboot中使用kindeditor富文本编辑器实现博客功能

    kindeditor在之前已经用过,现在在springboot项目中使用.并且也在里面使用了图片上传以及回显等功能. 其实主要的功能是图片的处理:kindeditor对输入的内容会作为html标签处理 ...

  7. 3D Slicer中文教程(五)—三维视图颜色改变

    3D Slicer在分割后三维重建的图像,效果很好,但是存在一定的不足,默认的颜色并不是很合适,这时手动设置三维视图下的需要的颜色就很有必要了.如下图所示,默认的三维重建后的颜色. 这样的颜色显然不是 ...

  8. 【easy】746. Min Cost Climbing Stairs 动态规划

    On a staircase, the i-th step has some non-negative cost cost[i]assigned (0 indexed). Once you pay t ...

  9. leveldb(ssdb)性能、使用场景评估

    最近有个业务场景存储压力很大,写远远大于读,读也集中在最近写入,想想这不很适合采用leveldb存储么.leveldb的话好像用ssdb比较多,花了两天时间就ssdb简单做下测试,以下总结. ssdb ...

  10. python正则表达式--findall、finditer方法

    findall方法 相比其他方法,findall方法有些特殊.它的作用是查找字符串中所有能匹配的字符串,并以结果存于列表中,然后返回该列表 注意: match 和 search 是匹配一次 finda ...