开始了解响应式图片

  响应式,根据屏幕尺寸和分辨率的设备上都能良好工作以及其他特性的图片,接下来考虑怎样创建自适应得图片,专注于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. Vue中ajax返回的结果赋值

    这是第二次在项目中遇到此问题,ajax请求成功后在success函数中为Vue实例data里的变量赋值,却失败了 new Vue({ el:'#app', data:{ msg:'' }, creat ...

  2. JustSoso笔记

    当时想了大半天,想着到底要怎么绕过MD5呢,结果还是没做出来,即使问了学长,自己还是漏了一个步骤,file=hint.php,特此笔记,又学到了个引用变量的知识 学习自 https://www.ctf ...

  3. Shiro权限管理

    1.简介 Apache Shiro是Java的一个安全框架,对比Spring Security,没有Spring Security功能强大,但在实际工作时可能并不需要那么复杂,所以使用小而简单的Shi ...

  4. cadence学习二----->Allegro基本概念

    Class与Subclass 同一根线在不同的Subclass里的含义不一样,下面介绍常用Class和Subclass的含义 1.Etch 包括TOP和BOTTOM,用于走线和覆铜 2.Package ...

  5. 使用chrome开发者工具中的performance面板解决性能瓶颈

    前面的话 使用Chrome DevTools的performance面板可以记录和分析页面在运行时的所有活动.本文将详细介绍如何使用performance面板解决性能瓶颈 准备 [匿名模式] 匿名模式 ...

  6. patindex

    功能:返回模式在字符串中第一次出现的位置 解释:patindex('%pattern%',expression) pattern:要查找的模式 expression:被找的字符串 例子:select ...

  7. Qt-c++桌面编程报错:qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "",已解决

    语言:c++ 编译库:Qt GUI,qt5.12.1 软件类型:Qt application,qt桌面软件 运行平台:window 10 ?按照[https://www.devbean.net/201 ...

  8. UltraEdit注册机 及使用方法详解

    转载自:http://www.iyaxi.com/ultraedit-key/ UltraEdit是一款强大的文字编辑器,很多编程的.搞设计的等等都能用到它,具体功能请自行百度.今天为大家带来UE软件 ...

  9. 项目中的Git七步精髓

    项目中Git常用的七步操作: 1.git branch -a  查看所有分支 2.git checkout dev_yxq 如果冲突了,操作回退上一个版本, git status git checko ...

  10. kafka Network

    Kafka network Processor SocketServer.Processor override def run() { startupComplete() try { while (i ...