html中图片响应式怎么写,如何使用 HTML5 的picture元素处理响应式图片

图片在响应式网页设计中是出了名的最具挑战性的方面之一。今天我们就来看看如何使用元素来处理响应式图片.

让我们先了解一下问题

固定宽度,像素完美的网站设计已经离我们远去了。在宽屏显示器,互联网电视,多尺寸的平板电脑和智能手机的今天,我们的设计必须应付一切可能,将宽由320px向7680px转变。

伴随这种多分辨率风景而至的,是需要拉伸或收缩图像,以适应这些不同的要求。这可以被理解为如下问题,矢量图形出现异常时,绝大多数具有特定像素的图像宽度并不改变。

所以,我们应该怎么做呢?

目前最常见的解决方案

作为一般规则,你会在任何响应式网站中发现以下CSS样式:

img {

max-width: 100%;

height: auto;

}

此代码使用max-width:100%的设置,以确保图像永远不会超越其父容器的宽度。如果父容器的宽度收缩小于图像的宽度,图像将随之缩小。height:auto的设置可以确保当有这种情况发生时,图像将以自身的宽高比保留。

563cac73d3f9c5d95e5eca8dc65c10fc.png

这解决了一方面的问题,使我们能够在许多不同的情况下显示相同的图像。不过,这并不能让我们对不同的情况指定不同的图像。

新的解决方案:

是HTML5一个新的元素。

如果元素与当前的和元素协同合作将大大增强响应式图像的工作进程。它允许你放置多个source标签,以指定不同的图像文件名,进而根据不同的条件进行加载。

它可以让你根据以下条件加载完全不同的图像:

媒体特性结果如:视口的当前高度(viewport height),宽度(width),方向(orientation)。

像素密度

反过来这也意味着您可以:

加载适当大小图像的文件,使可用带宽得到充分利用。

加载不同裁剪并具有不同纵横比的图像,以适合于不同宽度的布局变化。

加载更高的像素密度,显示更高分辨率的图像。

95d56334c13034a7ec4e2110427900e7.png

的工作原理

基本工作步骤如下:

创建标签。

在这些标签内创建一个你想用来执行任何一个特性的元素。

添加一个media属性,用来包含你想要的特性,如视口的当前高度(viewport height),宽度(width),方向(orientation)等。

添加一个srcset属性与相应的图像文件名相匹配,进行加载。如果你想提供不同的像素密度,例如Retina显示屏,你可以添加额外的文件名到你的srcset属性中,

添加一个回退的元素。

这里有一个简单的基本的例子,用来检查视口是否小于768px,如果小于的话就加载一个较小的图像:

你可能会注意到,在media属性使用的语法与创建CSS媒体特性中使用的语法一样。您可以使用相同的特性,这意味着你可以查询max-width,min-width,max-height,min-height,orientation等属性。

同时,您也可以使用这些特性判断设备的方向,从而加载横向或纵向版本的图像,同时您也可以进行大小特性的混合。例如:

上面的代码实现了可以在一个小的景观设备上加载小的,景观裁剪图像的版本。在大的景观设备上加载大的相同的图像版本。

这样,在小尺寸的小型设备上,或在大尺寸的大型设备上,该设备可以自主进行图像主导从而加载不同图像剪裁的版本。

如果您想为更高密度的显示器提供不同分辨率的图像版本,可以通过在srcset属性中添加额外的文件名来实现。例如,让我们来看看屏幕像素密度为2x的Retina 代码处理片断:

元素现在的使用情况

现在,Chrome,Firefox和Opera浏览器都已经实现了对元素的支持。在不久的将来,在其他浏览器也将得到广泛的支持。但现在这一时刻还没有来临。

与此同时,如果你现在就想使用元素可能还需要等待。你也可以使用Picturefill2.0;Filament 成员提供的一个polyfill。

7e7b5bc15d325d0996549a05247b68de.png

通过下载并添加picturefill.js文件到您项目的头部就可以实现:

还有你可以通过异步加载脚本来增加效率,你可以参考Picturefill的文档。

有了这个脚本加载,除了少数的限制,元素将如我所讲的运行。

Picturefill的限制

IE9

Picturefill在其他的IE版本都可以正常工作,但是IE9却不能识别被包裹在picture标签中的source元素。为了解决这个问题,在video标签内包住你的源元素,这就会使他们在IE9中被识别,例如:

Android 2.3

和IE9一样,Android 2.3识别不了在picture元素中source元素。然而,在使用常规的img标签时,它就可以识别srcset属性。为了避免在Android 2.3及任何有相同问题的其他浏览器中出现此问题,确保在srcset属性中存在默认用于回退的img元素的文件名。

需要JavaScript和本地媒体特性的支持

有了这个基于JavaScript的解决方案,因此在浏览器中需要支持JavaScript。 Picturefill 2.0不提供“no-js”的解决方法,因为如果这样,当原生浏览器支持元素时,将会出现多个图像。但是,如果“no-js”是你的不二选择,你必须使用Picturefill 1.2。

Picturefill另外一个要求就是需要本地媒体特性的支持,从而使media属性中的特性能够正常工作。所有现代浏览器都支持媒体特性,IE8和以及更低版本的浏览器是剩下的唯一不支持的用户群。

可能存在的额外HTTP请求

在原生支持srcset元素,但不支持picture元素的浏览器中,和回退的img元素中指定的文件名可能会被提前调用,从而会在source元素中确定一个更好的拟合图片。

这只是一个暂时的问题,一旦本地支持picture元素就会自行消失。

更多信息

了解更多关于Picturefill 2.0的信息并在Picturefill网站上下载下来用于您的项目上。

从responsiveimages.org获取关于元素的信息。

今天在您的项目中就尝试使用元素,看看是否实现了预期功能!

2ba64a9f227b987f63a2e1aebad415b3.png

在校学生,本科计算机专业。一个积极进取、爱笑的女生,热爱前端,喜欢与人交流分享。想要通过自己的努力做到心中的那个自己。微博:@静-如秋叶

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓 多条通知_安卓11第一版发布:原生滚动截屏、屏幕录像、抄国内ROM这么多...

自2008年第一部Android智能手机HTC G1发布,安卓手机系统已经走过十几个年头。虽然系统存在一些大家吐槽较多的问题,但安卓一直活跃在智能手机系统前沿,不断发展完善着。昨天谷歌刚刚发布了全新的安卓11新系统,这次的系统更新出一些…

html表格字体格式转换,【转】常用HTML代码速查表

在搏客中比较常用的代码一、美化文字的代码:1.文字间换行:文字内容文字内容2.一个段落:文字内容3.字体加粗:文字内容4.字体加大:文字内容5.文字标题: 从一号标题H1到六号标题H6,逐渐减小文字内容…

70个python毕设项目_56个具有开创性的Python开源项目-开始使用Python

Python正在蓬勃发展,它的Gistub页面也是如此。今年对于Python来说很棒,我们看到了一些非常强大的python开源项目。今天,我们将列出一些最好的python开源项目;尝试至少对其中一个项目做出贡献,这将有助于提高您的Python…

qnetworkreply 获取状态_谈谈Unity Shader中的采样器状态和(Texture Filtering)纹理滤波方式

参考文章:使用采样器状态 - Unity 手册​docs.unity3d.comhttps://blog.csdn.net/chenjinxian_3D/article/details/51816918​blog.csdn.net根据Unity的参考文档,Unity Shader使用采样器状态有三种方式,分别是:耦合的纹理和采样器…

android systemui机制,在AS中开发SystemUI(4):设置项目运行机制

1、期望项目如何运行?普通 App 在 run 之后,会编译出 APK,然后 AS 会自动调用 install 命令进行安装,完成安装后会启动 App 的 Launcher Activity。这些 AS 已经帮你自动完成了。如果你的 App 不像 SystemUI 或 Settings 这样贴近…

手机屏幕厂家信息软件_警惕假个税手机软件蹭热点,千万别被窃取私人信息

新个税法从1月初开始实施。2018年12月31日,国家税务总局推出“个人所得税”APP,方便纳税人线上填报资料进行专项抵扣。几天来,这款APP的下载量和注册量大幅增长。随之而来的是,很多商业公司制作的各类“个税”APP也成为热门。这其…

paramiko执行nohup_记一次使用django+paramiko远程操作时报错无法返回问题

前提:以前能力不足,只能用linux命令行形式写了个线上发布工具。采用的是paramiko来调用远程指令。最近自学了点前端的东西,打算用django写一个web版的发布工具,在做正常异步远程操作时候发现都没有什么问题。但是当调用我们游戏的…

图片动画效果html5,8个实用炫酷的HTML5图片动画应用

原标题:8个实用炫酷的HTML5图片动画应用近期我们发布了不少关于HTML5和jQuery的图片动画应用,很多都比较实用,也有一些效果非常炫酷,比如一些HTML5 3D图片动画特效。本文精选了8个实用而且炫酷的HTML5图片动画应用,希望…

ado execute open区别_二极管IN4148和IN4007的应用区别

二极管IN4148和IN4007的定义1N4148 是开关二极管,耐压100V,电流150mA,反向恢复速度快。1N4007 是普通整流二极管,耐压1000V,电流1A ,反向恢复时间在ms级别,只能用于低频电路中。二极管IN4148和I…

html列目录带图片,根据目录下的图片的个数,往html文件填充对应数量的img标签,请问有没有实现这种需求的工具?...

这直接JS就能实现了,实现方式分为【预加载】和【延迟加载】下面是个预加载的例子:首先来一个空的HTML页面和最基本的CSS初始化样式Document* {margin: 0;padding: 0;}.imgwrap li {list-style-type: none;}img {vertical-align: top;}然后我们要往标签里…

input maxlength 汉字_汉字原来这么好玩 第A15版:亲子悦读 20201104期 都市女报

山东师范大学附属小学三年级二班马荃 指导教师:范新瑞《汉字好好玩》是我非常喜欢的一套书,它的作者是台湾女作家张宏如,她毕业于台湾大学历史系,是台湾以哲学的角度研究汉字的第一人。这套书一共有5本。第一本有汉字脸谱、日月星…

将类似html数据打印机,机器人和3D打印机的架构有哪些相似之处

工业4.0参考架构模型(RAMI 4.0)以一个三维模型展示了制造业涉及的所有关键要素,在这个模型的等级层次维度(右侧水平轴)描述了一个7层的自动化层级,如图1所示,从下到上依次是:产品,现场设备,控制设备&#x…

access inner join 数据类型不匹配_用Access开发生产管理系统

刚接触Excel,自以为已经对数据的处理掌握到炉火纯青的地步了,殊不知,山外有山人外有人,自从学习了Access,才发现,原来,数据的处理还真不是我们日常工作中所遇到的那么简单。下面,我就…

html文件打开是搜索导航,GitHub - bituplink/OneHtmlNav: 单文件html的网络导航页面,简约并不简单...

OneHtmlNav这是基于小呆导航的超级精简版本,之所以投入了不少精力折腾这个导航,是之前自己网站的导航有点功能不足,看到了小呆导航有我需要的功能,但是确是基于CMS的,有点复杂我又不想再搭建一个平台,所以就…

matlab中结束脚本运行_MATLAB脱单指南

之前发过一篇文章,是关于2019年的小目标,“打浦桥锦鲤”。有留言说,发paper的……有留言说,学习python的……居然还有好多人留言说,要!脱!单!公众号的关注者,女生比例只有…

安卓手机可以改鸿蒙吗,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪

在华为开发者大会上,华为消费业务CEO 余承东,正式发布鸿蒙OS2.0,并宣布华为鸿蒙OS将全面启用全场景生态,并将于2020年12月发布手机版。余承东还表示,明年,华为的智能手机将全面升级,以支持鸿蒙操…

怎样把电脑恢复出厂设置_数据蛙:苹果恢复出厂设置,彻底释放手机内存

点击蓝字关注我们苹果手机有时候用久了出现卡顿的现象,这个时候我们可以通过苹果恢复出厂设置,以让手机彻底释放内存。恢复出厂设置在哪里?恢复出厂设置后会怎样?如果您还不知道的话,在本文中数据蛙就告诉您答案&#…

html图片怎么设置行高,html行高怎么设置

html设置行高的方法:首先创建一个HTML示例文件;然后在body中通过p标签创建几行文本内容;最后通过给文本添加“line-height:20px;”样式来设置行高即可。本文操作环境:windows7系统、HTML5&&CSS3版,DELL G3电脑…

怎么从某个div跳转到另一个_另一个伊甸伊丝卡怎么样 伊丝卡使用攻略_

另一个伊甸中,伊丝卡是游戏中的四星角色之一,那么伊丝卡怎么样,下面一起来看看伊丝卡使用攻略吧。 【人物攻略】伊丝卡 LV1 - 【团队合作很重要呢】 给予敌方全体力量下降10%智慧下降10%(1回合) LV2 - 【让我来稳定战局】 给予敌方全体力量下…

html如何添加文档,如何在HTML中添加行

如何在HTML中添加行在HTML中,我们可以使用以下不同方式轻松地在文档中添加横线:使用HTML标签使用内部CSS使用HTML如果要使用Html标签在Html文档中添加水平线,则必须遵循以下步骤。使用这些步骤,我们可以轻松地添加以下行&#xff…