童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

web图像的常见应用策略与技巧

11月11日 先锋客投稿
  本文介绍一些关于响应式图像的适配应用策略,回退原理,SVG的换色技巧,雪碧图的百分比定位计算公式等相关的一些小知识点,目的在于帮助一部分同学快速的理清图像应用思路,以及一些web图像的应用技巧。
  1。响应式图像的应用与回退
  特点:应用简单,上手容易,性能表现良好
  难点:lazyload实现
  根据不同设备,不同分辨率,不同像素比使用的响应式图像,常用的有两种场景:
  1。1固定尺寸图像
  基于设备像素比选择,很多网站logo就是固定宽度图像的一个例子,不管viewport的宽度如何,始终保持相同的宽度。
  在dom里图像与在css里的图像写法如下面的例子
  1。2不固定尺寸图像
  与内容相关的图片,在需要响应式的时候,它们的大小往往并不是不变的,会随viewport改变,对于这类图像,也有两种常用的处理方式
  1。2。1我们使用srcset搭配w描述符以及sizes属性
  w描述符告诉浏览器列表中的每个图象的质量。sizes属性是一个包含两个值的,由逗号分隔的列表。根据最新规范,如果srcset中任何图像使用了w描述符,那么必须要设置sizes属性。
  sizes属性有两个值:第一个是媒体条件;第二个是源图尺寸值,在特定媒体条件下,此值决定了图片的宽度。
  比如:
  我们来逐条读这一个img标签的信息:
  srcset,我们给浏览器准备了四个质量的图像,分别为36076812001920
  sizes,我们来告诉浏览器,在不同的环境下图像的宽度
  当视口不大于360的时候,图像显示宽度为100vw,当视口不大于768的时候,图像显示宽度为90vw,以此类推。
  最后一个src作为默认图像url引入,并且是天然的回退方案,当浏览器不认识以上属性的时候,直接读取src渲染。
  这样说不够直观,我们看个demo:
  在iphone4(320)下,图像宽度和我们设置的100vw一致,但是为什么浏览器选择了768的图像而没有选择360的?因为4的dpr是2呀,浏览器很智能的选择了质量最合适的768。
  再看一下6p(414),很听话的按照我们的设置,显示了90vw。因为他的dpr更高,浏览器聪明的选择了1200质量的图像。
  这里我们可以欺骗一下浏览器:
  我们把360的图像,骗浏览器说这是1200的,然后把原本1200的扔天上去
  浏览器果然上当了,他把360的图当成1200的来用了。这里可能有些疑问,图像的宽度为什么不是90vw了哪?因为浏览器被骗了但是自己却不知道,他依然按照1200的图像,去适配dpr。41490(3601200)约等于111。7。这种方式很智能,浏览器去根据你的sizes,从w列表里选择最适合的图像来调用显示。正因为他太智能了,在实际操作中可控性较差,有些我们想精确控制的图像显示,有时候并不能如意。而且在做lazyload的时候要处理的东西也比较复杂。
  这个时候可以考虑另外一种方式。
  1。2。2。picture元素,可精确把控
  picture元素就像是图像和其源的容器。浏览器仍然需要img元素,用来表明需要加载图片,如果没有img,那么什么都不会渲染。source为浏览器提供了要显示图像的供选版本。
  适用场景为:在一个精确特定的转效点(breakpoint)需要显示一个特定的图像时。使用picture元素选择图像,不会有歧义,理解起来也更直观。
  在本例中,当viewport大于960像素时,会加载图像960的图像。当viewport宽度大于768像素时,浏览器会加载768的。而当宽度小于768像素时,加载默认图像360。
  而且这个写法的懒加载非常好处理,只需要在传统的lazyload策略上稍加改进
  datasrc
  datasrcset
  在加载到的时候更换为
  src
  srcset
  就轻松解决了。
  http:snghr。tencent。里面使用较多
  他也不需要去特意做回退处理,当浏览器不支持的时候就直接读取img标签。对于懒加载的回退我选择判断IE78直接塞url给他。。
  2。特殊格式的图像应用与回退
  特点:体积优化效果显著
  难点:兼容性掌控
  上面picture元素还可以提供基于图片格式选择。
  有一些图像格式在较小的文件大小情况下保证了较好的图片质量。听起来还不错,但残酷的事实是没有一个新格式被所有浏览器支持。谷歌的WebP表现不错,但只有Chrome和Opera原声支持。JPEGXR,最初被称为高清照片,是微软发布的一个专有图像格式,仅InternetExplorer支持。
  source的type属性用来指定每个图像的MIME类型,浏览器会选择第一个含有其支持的MIME类型的源。源的顺序是至关重要的,如果浏览器无法识别所有的图象类型,它会回退至原来的img元素。
  但是目前这些格式的支持多数不会直接这么做,因为代码会有些冗余难看,有判断浏览器ua输出不同dom或者样式的,也有服务端直接输出的。服务端直接输出,或者CDN做特殊处理,进行无感知格式切换,同时预留url和拒绝的接口,处理起来更灵活,省时省力,例如我们的:
  服务端根据浏览器的请求头,返回不同的图像格式,对于X5内核还可以支持sharpP。
  3。SVG应用
  难点:变色方案,响应式定位计算。
  上面这个source的type属性还支持另一种我们更常用的图像格式,SVG。
  说起SVG,这是个出现频率比webp更高的图像格式了,他有着比iconfont更多的优点,所以现在web上正在大量的应用。
  优点:
  SVG提供的功能集涵盖了嵌套转换、裁剪路径、Alpha通道、滤镜效果等能力,它还具备了传统图片没有的矢量功能,可适配任何高清屏。
  可读性好,有利于SEO与无障碍
  与iconfont对比:
  (1)渲染方式不同
  无论黑白渲染,灰度渲染,次像素渲染,还是DirectW或GDI渲染,既然iconfont他是一个字体,就难逃出现锯齿的命运,特别是在一倍屏幕下的渲染。
  (2)iconfont只能支持单色
  iconfont做为字体无法支持多色图形,这就对设计造成了许多限制,因此这也成为了iconfont的一个瓶颈。
  (3)iconfont可读性不好
  iconfont主要在页面用Unicode符号调用对应的图标,这种方式不管是浏览器,搜索引擎和对无障碍方面的能力都没有SVG好
  在对比完之前,可能有同学就会问,SVG和iconfont对比有个致命的缺点,就是换色。
  比如hover换色,iconfont只要写个颜色就好了,SVG是不是需要做两个颜色的图?这也是SVG图像应用我们解决的一个难点之一
  SVG换色,最初我试过三个方案:
  (1)maskimage属性
  它的优点是简单粗暴,直接用css来mask这个svg图形来进行换色,缺点很明显就是兼容性了,除去兼容性,还是很好用的。
  demo:
  查看demo
  (2)通过SVG滤镜来实现
  优点是效果更好,缺点除了兼容性,还需要额外的脚本配合。关于滤镜换色的详细说明在我上一篇文章里有详细介绍以及demo
  查看文章
  (3)我们最终选择的底层无感知换色的方案,把修改颜色的脚本集成到了我们的工作流里,我们在写css的时候,遇到svg需要换色的地方,只需要
  加一句换色参数,工作流在底层会自动生成你所需要的svg图片并合并到雪碧图里。
  SVG应用的另一个难点,就是作为背景图响应式渲染,雪碧图的backgroundposition和backgroundsize的计算,这个其实也是其他图像都会存在的一个难点。
  我的导师wenju之前发过这个计算公式相关的文章:
  百分比值()是背景图相对于背景定位区(backgroundpositioningarea)的百分比,可以控制在容器元素内仅显示Sprites图的部分内容。比如下图中,Sprites图是由四张图像拼成的,要想在容器内仅显示第一张图像,backgroundsize的值应该多少呢?
  我们仅需要Sprites图的14显示在容器内,那么Sprites图与容器的比例应该是4:1,计算公式为:backgroundsize:(Spriteswidthimagewidth)(Spritesheightimageheight)
  如何计算backgroundposition
  我们已知的信息如下:
  容器元素的尺寸:elWelH
  单张图片的尺寸:imgWimgH
  Sprites图片的尺寸:spritesWspritesH
  单张图片在Sprites图上的位置:imgPosX,imgPosY
  我们假设:
  点的位置为(x,y)
  容器上的(x,y)点与容器左上角的距离为cX,cY
  Sprites图上的(x,y)点与本张图片左上角的距离为sX,sY
  如果要把某张图片完全显示在容器元素内,我们可以推导出:
  elWimgW,elHimgH
  cXsX,cYsY
  根据上面的信息,我就可以计算出具体的(x,y)值了,下面以x为例:
  cXelWx
  sXspritesWximgPosX
  elWxspritesWximgPosX
  解方程后就得到计算公式了:
  ximgPosX(spritesWelW)imgPosX(spritesWimgW)
  yimgPosY(spritesHelH)imgPosY(spritesHimgH)
  如果你每次都手动计算的话会被累死吧?所以这一步我们还是集成到了工作流里,在所有合并雪碧图的地方用这个公式自动计算出位置。
  而关于SVG的回退方案,已经是老生常谈。
  比如
  svg标签方式,缺点必须指定宽高,没有图片的保持款高比例特性,优点兼容性好,兼容所有主流浏览器
  或者
  在支持的浏览器里使用SVG,在不支持的浏览器里显示PNG,优点是type灵活,可用于SVG,WEBP等,而且保持了img标签的特性,方便做布局操作。缺点兼容性要求高,ios9,安卓5,微软Edge
  当然这个兼容性说的是sourcetype的兼容,并不是SVG本身的兼容。
  对于css里的SVG的应用与回退策略,比较简单,也已经成熟,一般情况下都是这种用法
  利用的技术是CSS3多背景,浏览器只要支持了多背景,几乎无一例外支持SVG
  再或者
  通过imageset来筛选和回退。
  
  作者:练小习
  来源:https:isux。tencent。comcarddesignthinking。html
投诉 评论 转载

案例设置是查看还是修改?本文作者将浅析网站设置和手机设置,且针对“设置是查看还是修改?”的问题提出了她的解决方案,一起来看看~最近做了很多设置相关的工作,期间发现一个矛盾,那就是查看与修改难以取……新手转向资深的必经之路交互文件命名的最详细规范(上)经过一期带团队的体验,阁主发现文件命名有点让人抓狂,实在忍不住更新一篇文章去说说这其中大家约定俗成的规则,不仅包括切图命名规则,还包括文件整理规范。之前楼主有整理过简单的,貌似……案例分析通过配色吸引用户注意力的四点技巧色彩在任何一种设计中都起着很重要的作用,相差不多的色彩却能给用户带来完全不同情感效果。因此,好好利用色彩与生俱来的魅力,就能让你的设计更出彩。互联网和手机的兴起给我们的生……预加载:尝试分析这种自动加载的交互方式网站运营者的目的是为了增加阅读量,用户停留时间。而大部分用户一般是比较迷茫的,他们不知道自己想要读什么。我们在浏览一些以内容为导向的网站(比如一些UGC阅读类和新闻类网站……在APP中,TabBar是固定好还是不固定好?本文作者将来着重谈谈APP中的TabBar是固定好还是不固定好,你觉得呢?国内的现状是绝大部分APP的TabBar不固定,即进入二级界面后TabBar消失。难道TabBa……四个步骤,完成一个APP的LOGO设计需求希望这篇文章,能够在你做LOGO设计时,提供一些方向和思路。大家都知道,LOGO对于一个产品来说,至关重要。成功的LOGO可以让用户在短时间内判断你是谁,做什么的,……web图像的常见应用策略与技巧本文介绍一些关于响应式图像的适配应用策略,回退原理,SVG的换色技巧,雪碧图的百分比定位计算公式等相关的一些小知识点,目的在于帮助一部分同学快速的理清图像应用思路,以及一些we……浅析设计图表色彩的简单方式译者按:对色彩的研究通常要么太过随意缺乏逻辑,要不太过理论化难以理解,这篇文章用非常浅显易懂的方式,讲述了一个专门研究数据可视化的团队探寻图标色彩搭配的历程,给出有力的论证,并……mBack交互方式分析本文作者将对魅族最新研发的交互方式mBack进行分析,从谈论手机操作系统方式与电脑的操作系统方式有着两个较为明显的差异,到分析mBack的缺点,值得一看。2015年6月,……微交互:如何塑造优质的产品细节?本文作者将与大家探讨微交互是如何塑造优质的产品细节的,一起来看看吧“最好的产品通常会做好两件事情:功能和细节。功能能够吸引用户关注这个产品,而细节则能够让关注的用户留下来……在交互设计中,极简设计的四种策略本文将介绍交互设计中的极简设计4策略,帮助产品经理或产品设计人员在进行产品设计时,可以打造一款真正为“用户”设计的产品。产品概念出现之初,产品经理在设计产品时都会以产品能……车载系统交互设计畅想Part1:仪表数据展示智能车载系统的概念变得越来越火热,智能驾驶的理念也越来越普及。现阶段,国内外各大互联网巨头都在联合传统汽车企业一起探索智能汽车的设计研发。可以预见的是,在不久的将来,驾驶员在车……
【人人译客】留白与行宽是如何影响用户阅读的?从头带你认识面包屑导航的前世今生!最抢眼的6个方法!如何让交互过程变得惊喜有趣?(下)最抢眼的6个方法!如何让交互过程变得惊喜有趣?(上)人物肖像图片背景的网页设计欣赏颜色如何从5个方面影响我们的情绪?新手留意中枪!说说设计师最常见的11个设计误区秋高气爽,云也开始有遐想Web设计主题:创建一个古典风格的网站点靓网页的10种导航菜单设计90后分析:在线旅游三足鼎立为网页文字的可读性而设计
花了2。5万亿,为何中国没出现OpenAI?中医偏方吃出挺拔的鼻子和灵巧的耳朵微商如何促成成交方法双肩背包能上飞机吗双肩背包可以上飞机吗挑橘子看皮看脐再看蒂事故频发,理想汽车为何如此不理想?热评聚热点网 学霸作文2022届(新高考)八省八校T8第二次联考作文“承受 我们都是别人家的人美团押注无人机配送,外卖有望15分钟送达,外卖小哥会不会失业唐嫣入秋首次晒自拍,穿长袖戴大金链太土豪,烫羊毛卷形象大变样林心如霍建华搬入过亿新屋,借近亿旧居给舒淇冯德伦暂住中国最大胆的人体艺术照张悠雨大尺度写真走红网络

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界