picture标签在响应式前端页面的作用
提起HTML中的图片标签,大家一定都知道img,但是对于<picture>标签可能很多人会觉得很陌生,但是这种前端场景大家一定很熟悉:
我们需要在前端页面上实现轮播图效果,电脑端加载一张较大的图片作为轮播图,移动端,如果还继续使用这种细长的图片的话,且如果继续将宽度设置为100%,那么图片高度会很小;如果我们设置一个固定高度的话,则会丢失图片焦点。一般情况下设计师会为每个终端设计不同的banner图片供前端切图使用,但在前端页面中,我们对于一个区域一般不会写多个img标签。而且即便我们写多个,然后用css媒体查询控制那张图片在哪个终端下显示,也还是会造成资源的浪费,因为浏览器打开时,会默认加载全部的资源,当然,这种写法最大的问题是实在太别扭了。
这个时候,强大的picture标签就派上用场了,<picture>标签可以让前端开发人员在处理响应式前端页面时更加灵活,可以根据不同的情况按需加载指定资源,接下来,我们详细介绍picture标签的使用:
<picture>标签需要嵌套一个<source>标签和一个<img>标签一起使用,<source>标签配合media媒体查询属性和srcset属性,用于告知浏览器选择什么情况下使用那张图片,<img>标签用于接收指定的图片并渲染至浏览器。
一般情况下,<source>标签在<img>标签之前,像上述的前端场景,我们就可以用如下代码很好的解决:
<picture>
<source media="(max-width:768px)" srcset="photo/banner_mobile_01.jpg" />
<source media="(min-width:768px) and (max-width:992px)" srcset="photo/banner_mobile_01.jpg" />
<source media="(min-width:992px)" srcset="photo/banner_01.jpg" />
<img src="photo/banner_mobile_01.jpg" />
</picture>
网上有人提到picture下嵌套的img标签,必须同时具有src属性和alt属性,否则不能正常渲染,实测没有这个要求。我们甚至可以直写一个<img />也可以正常渲染。
另外,很多人担心<picture>标签的支持度,这点其实大可不必担心,基本所有的主流浏览器都支持<picture>标签,甚至IE13也支持。
在使用<picture>标签时,要注意和我们之前讲过的srcset属性进行区分,两者有很多相似的地方,但是实际使用时,还是有很大的差别的。比如srcset在拖动浏览器的过程中,下载过的图片默认会缓存下来,再次满足显示条件时,会直接显示,而picture则会进行再次加载。
- CSS选择器:nth-child()的灵活用法及常见场景示例
CSS选择器中的nth-child()相信大家都比较熟悉,nth-child()和nth-of-type()的区别是:nth-child()不区分类型。大家经常
- 为什么你的logo图模糊不清,移动端图片虚化的解决方案
在传统pc时代的时候,几乎99%的网站都在使用图片格式作为logo,而大部分网站都使用了png透明底的图片来做网站的logo。但是进入移动时代之后,这种习惯还是
- 响应式网站布局的优缺点分析
响应式网站,通俗的讲就是使用CSS媒体查询技术,写一套代码,可以在多个终端上使用。在此之前,前端切图工作者是需要分别针对电脑端、移动端和平板等常见设备专门去写一
- 切图和前端什么关系?为什么前端又被称为切图仔?
很多初从事前端切图这个行业的新人,大多都有一个疑问?为什么要把前端开发人员称为切图仔呢?提起这个问题,我们还要从前端切图行业的发展历程来说起,当然,这个问题对与
- 目前主流的前端框架有哪些?
基本上每种语言都有对应的一些快速框架用于提升开发人员的效率,所谓框架更像是工具箱或者脚手架,在开发时如果能很好的利用框架可以起到事半功倍的效果。简单形象的说,如
- 移动端background-attachment: fixed失效解决方法
在做web前端切图时,我们经常需要做背景图片不跟随内容滚动的效果,这个时候就需要使用到background-attachment: fixed 属性,这个属性及