pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

如何使用HTML5的picture元素處理響應(yīng)式圖片

固定寬度,像素完美的網(wǎng)站設(shè)計已離我們遠去。寬屏顯示器,互聯(lián)網(wǎng)電視,多尺寸的平板電腦和智能手機,要求設(shè)計必須應(yīng)付一切可能,將寬由320px向7680px轉(zhuǎn)變。圖片響應(yīng)是網(wǎng)頁設(shè)計的一

  圖片是響應(yīng)式網(wǎng)頁設(shè)計最具挑戰(zhàn)性的一大問題。今天我們就來看看如何使用<picture>元素來處理響應(yīng)式圖片.

 

  讓我們先了解一下問題

 

  固定寬度,像素完美的網(wǎng)站設(shè)計已經(jīng)離我們遠去了。在寬屏顯示器,互聯(lián)網(wǎng)電視,多尺寸的平板電腦和智能手機的今天,我們的設(shè)計必須應(yīng)付一切可能,將寬由320px向7680px轉(zhuǎn)變。

 

  伴隨這種多分辨率風(fēng)景而至的,是需要拉伸或收縮圖像,以適應(yīng)這些不同的要求。這可以被理解為如下問題,矢量圖形出現(xiàn)異常時,絕大多數(shù)具有特定像素的圖像寬度并不改變。

 

  所以,我們應(yīng)該怎么做呢?

 

  目前最常見的解決方案

 

  作為一般規(guī)則,你會在任何響應(yīng)式網(wǎng)站中發(fā)現(xiàn)以下CSS樣式:

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


  此代碼使用max-width:100%的設(shè)置,以確保圖像永遠不會超越其父容器的寬度。如果父容器的寬度收縮小于圖像的寬度,圖像將隨之縮小。height:auto的設(shè)置可以確保當(dāng)有這種情況發(fā)生時,圖像將以自身的寬高比保留。

 

  這解決了一方面的問題,使我們能夠在許多不同的情況下顯示相同的圖像。不過,這并不能讓我們對不同的情況指定不同的圖像。

 

  新的解決方案:<picture>

 

  <picture>是HTML5一個新的元素。

 

  如果<picture>元素與當(dāng)前的<audio>和<video>元素協(xié)同合作將大大增強響應(yīng)式圖像的工作進程。它允許你放置多個source標(biāo)簽,以指定不同的圖像文件名,進而根據(jù)不同的條件進行加載。

 

  它可以讓你根據(jù)以下條件加載完全不同的圖像:

  •   媒體特性結(jié)果如:視口的當(dāng)前高度(viewport height),寬度(width),方向(orientation)。
  •   像素密度

 

  反過來這也意味著您可以:

  •   加載適當(dāng)大小圖像的文件,使可用帶寬得到充分利用。
  •   加載不同裁剪并具有不同縱橫比的圖像,以適合于不同寬度的布局變化。
  •   加載更高的像素密度,顯示更高分辨率的圖像。

 

  <picture>的工作原理

 

  <picture>基本工作步驟如下:

  •   創(chuàng)建<picture></picture>標(biāo)簽。
  •   在這些標(biāo)簽內(nèi)創(chuàng)建一個你想用來執(zhí)行任何一個特性的<source>元素。
  •   添加一個media屬性,用來包含你想要的特性,如視口的當(dāng)前高度(viewport height),寬度(width),方向(orientation)等。
  •   添加一個srcset屬性與相應(yīng)的圖像文件名相匹配,進行加載。如果你想提供不同的像素密度,例如Retina顯示屏,你可以添加額外的文件名到你的srcset屬性中,
  •   添加一個回退的<img>元素。

 

  這里有一個簡單的基本的例子,用來檢查視口是否小于768px,如果小于的話就加載一個較小的圖像:

<picture>
    <source srcset="smaller.jpg" media="(max-width: 768px)">
    <source srcset="default.jpg">
    <img srcset="default.jpg" alt="My default image">
</picture>

  你可能會注意到,在media屬性使用的語法與創(chuàng)建CSS媒體特性中使用的語法一樣。您可以使用相同的特性,這意味著你可以查詢max-width,min-width,max-height,min-height,orientation等屬性。

 

  同時,您也可以使用這些特性判斷設(shè)備的方向,從而加載橫向或縱向版本的圖像,同時您也可以進行大小特性的混合。例如:

<picture>
    <source srcset="smaller_landscape.jpg" media="(max-width: 40em) and (orientation: landscape)">
    <source srcset="smaller_portrait.jpg" media="(max-width: 40em) and (orientation: portrait)">
    <source srcset="default_landscape.jpg" media="(min-width: 40em) and (orientation: landscape)">
    <source srcset="default_portrait.jpg" media="(min-width: 40em) and (orientation: portrait)">
    <img srcset="default_landscape.jpg" alt="My default image">
</picture>

  上面的代碼實現(xiàn)了可以在一個小的景觀設(shè)備上加載小的,景觀裁剪圖像的版本。在大的景觀設(shè)備上加載大的相同的圖像版本。

 

  這樣,在小尺寸的小型設(shè)備上,或在大尺寸的大型設(shè)備上,該設(shè)備可以自主進行圖像主導(dǎo)從而加載不同圖像剪裁的版本。

 

  如果您想為更高密度的顯示器提供不同分辨率的圖像版本,可以通過在srcset屬性中添加額外的文件名來實現(xiàn)。例如,讓我們來看看屏幕像素密度為2x的Retina 代碼處理片斷:

<picture>
    <source srcset="smaller.jpg, smaller_retina.jpg 2x" media="(max-width: 768px)">
    <source srcset="default.jpg, default_retina.jpg 2x">
    <img srcset="default.jpg, default_retina.jpg 2x" alt="My default image">
</picture>


  <picture>元素現(xiàn)在的使用情況

 

  現(xiàn)在,Chrome,F(xiàn)irefox和Opera瀏覽器都已經(jīng)實現(xiàn)了對<picture>元素的支持。在不久的將來,在其他瀏覽器也將得到廣泛的支持。但現(xiàn)在這一時刻還沒有來臨。

 

  與此同時,如果你現(xiàn)在就想使用<picture>元素可能還需要等待。你也可以使用Picturefill2.0;Filament 成員提供的一個polyfill。

  通過下載并添加picturefill.js文件到您項目的頭部就可以實現(xiàn):

<script src="picturefill.js"></script>

  還有你可以通過異步加載腳本來增加效率,你可以參考Picturefill的文檔。

 

  有了這個腳本加載,除了少數(shù)的限制,<picture>元素將如我所講的運行。

 

  Picturefill的限制

 

  IE9

  Picturefill在其他的IE版本都可以正常工作,但是IE9卻不能識別被包裹在picture標(biāo)簽中的source元素。為了解決這個問題,在video標(biāo)簽內(nèi)包住你的源元素,這就會使他們在IE9中被識別,例如:

<picture>
    <!--[if IE 9]><video style="display: none;"><![endif]-->
    <source srcset="smaller.jpg" media="(max-width: 768px)">
    <source srcset="default.jpg">
    <!--[if IE 9]></video><![endif]-->
    <img srcset="default.jpg" alt="My default image">
</picture>


  Android 2.3

  和IE9一樣,Android 2.3識別不了在picture元素中source元素。然而,在使用常規(guī)的img標(biāo)簽時,它就可以識別srcset屬性。為了避免在Android 2.3及任何有相同問題的其他瀏覽器中出現(xiàn)此問題,確保在srcset屬性中存在默認用于回退的img元素的文件名。

 

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

  有了這個基于JavaScript的解決方案,因此在瀏覽器中需要支持JavaScript。 Picturefill 2.0不提供“no-js”的解決方法,因為如果這樣,當(dāng)原生瀏覽器支持<picture>元素時,將會出現(xiàn)多個圖像。但是,如果“no-js”是你的不二選擇,你必須使用Picturefill 1.2。

 

  Picturefill另外一個要求就是需要本地媒體特性的支持,從而使media屬性中的特性能夠正常工作。所有現(xiàn)代瀏覽器都支持媒體特性,IE8和以及更低版本的瀏覽器是剩下的唯一不支持的用戶群。

 

  可能存在的額外HTTP請求

  在原生支持srcset元素,但不支持picture元素的瀏覽器中,和回退的img元素中指定的文件名可能會被提前調(diào)用,從而會在source元素中確定一個更好的擬合圖片。

 

  這只是一個暫時的問題,一旦本地支持picture元素就會自行消失。

 

  更多信息

  了解更多關(guān)于Picturefill 2.0的信息并在Picturefill網(wǎng)站上下載下來用于您的項目上。

  從responsiveimages.org獲取關(guān)于<picture>元素的信息。

 

  今天在您的項目中就嘗試使用<picture>元素,看看是否實現(xiàn)了預(yù)期功能!

 

   原文:Quick Tip: How to Use HTML5 “picture” for Responsive Images

   譯文:http://www.w3cplus.com/html5/quick-tip-how-to-use-html5-picture-for-responsive-images.html?utm_source=tuicool&utm_medium=referral

   作者:@靜-如秋葉

【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

由于實際運行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標(biāo)簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應(yīng)用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應(yīng)用人性化的操作體驗,特別是原生應(yīng)用與生俱來的豐富的手勢系統(tǒng)。HTML5 沒有提
你想要在自己網(wǎng)站上分享一個產(chǎn)品,或者是一個作品集,又或者僅僅只是一個靈感。在你發(fā)布到網(wǎng)上之前,你想讓它看起來有吸引力,專業(yè),或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設(shè)計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認!這是對我的極大鼓勵!我的
本文主要內(nèi)容有:框架與組件、構(gòu)建生態(tài)、開發(fā)技巧與調(diào)試、html、css與重構(gòu)、native/hybrid/桌面開發(fā)、前端/H5優(yōu)化、全棧/全端開發(fā)、研究實驗、數(shù)據(jù)分析與監(jiān)控、其它軟技能、前端技術(shù)網(wǎng)
主站蜘蛛池模板: 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 海峰资讯 - 专注装饰公司营销型网站建设和网络营销培训 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 合肥触摸一体机_触摸查询机厂家_合肥拼接屏-安徽迅博智能科技 | 颗粒机,颗粒机组,木屑颗粒机-济南劲能机械有限公司 | 304不锈钢无缝管_不锈钢管厂家 - 隆达钢业集团有限公司 | 合肥角钢_合肥槽钢_安徽镀锌管厂家-昆瑟商贸有限公司 | 欧盟ce检测认证_reach检测报告_第三方检测中心-深圳市威腾检验技术有限公司 | 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 | 硬齿面减速机_厂家-山东安吉富传动设备股份有限公司 | 球盟会·(中国)官方网站| 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 质构仪_鱼糜弹性仪-上海腾拔仪器科技有限公司 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 土壤肥料养分速测仪_测土配方施肥仪_土壤养分检测仪-杭州鸣辉科技有限公司 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | 便携式谷丙转氨酶检测仪|华图生物科技百科 | 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 跨境物流_美国卡派_中大件运输_尾程派送_海外仓一件代发 - 广州环至美供应链平台 | 急救箱-应急箱-急救包厂家-北京红立方医疗设备有限公司 | 酒店厨房设计_中央厨房设计_北京商用厨房设计公司-奇能商厨 | 婚博会2024时间表_婚博会门票领取_婚博会地址-婚博会官网 | 定制异形重型钢格栅板/钢格板_定做踏步板/排水沟盖板_钢格栅板批发厂家-河北圣墨金属制品有限公司 | 电销卡 防封电销卡 不封号电销卡 电话销售卡 白名单电销卡 电销系统 外呼系统 | 冷热冲击试验箱_温度冲击试验箱价格_冷热冲击箱排名_林频厂家 | 浙江皓格药业有限公司| COD分析仪|氨氮分析仪|总磷分析仪|总氮分析仪-圣湖Greatlake | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | 兰州UPS电源,兰州山特UPS-兰州万胜商贸 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 |