转载 | SVG向下兼容优雅降级方法

本文引自:http://www.zhangxinxu.com/wordpress/2013/09/svg-fallbacks/

1.svg image标签降级技术

<svg width="96" height="96">
  <image xlink:href="svg.svg" src="svg.png" width="96" height="96" />
</svg>

如果浏览器支持SVG,则SVG显示;对于不支持的浏览器,例如IE8浏览器,会忽略svg标签的存在,直接渲染image,在其看来,这就是个img标签,于是,图像就以svg.png的形式显示了。

2.SVG作为background-image
Modernizr有一个SVG测试,可以判定设备是否支持SVG,于是,我们就可以通过在HTML元素上添加特定的类名(eg. no-svg),做不同的样式控制

.my-element {
  background-image: url(image.svg);
}
.no-svg .my-element {
  background-image: url(image.png);
}

另一个方法

.my-element {
  background-image: url(fallback.png);
  background-image: url(image.svg), none;
}

其利用的技术是CSS3多背景,这是一个经验式技术,我们通过各种观察或者积累发现,浏览器只要支持了多背景,几乎无一例外支持SVG. 于是,浏览器认识url(image.svg), none这个多背景声明,就使用SVG,否则,降级使用上面的png背景。

3.SVG作为<img>

喜欢这么做:

<img src="image.svg" onerror="this.src=image.png">

HTML混杂行为,如果你是个具有分离癖好的人,上面的方法可能会让你揪心,你可以直接Modernizr的JS API,在脚本中判断处理,类似下面:

if (!Modernizr.svg) {
  $("img[src$=‘.svg‘]").attr("src", fallback);
}

如果上面代码中的fallback是个URL字符串,你可以把这个字符串放在data-fallback中,然后,你就可以根据你的实际需要,例如,根据后缀做智能判断加载等。

原文地址:https://www.cnblogs.com/One-sprite/p/8503582.html

时间: 2024-10-10 10:48:39

转载 | SVG向下兼容优雅降级方法的相关文章

一些SVG 图片向下兼容优雅降级技术

转自:http://www.zhangxinxu.com/wordpress/?p=3678 一.SVG前言 再一次拿可缩放矢量图形SVG(Scalable Vector Graphics)说事,对SVG有所关注的同行应该都知道,IE8-以及Android 2.3默认浏览器是不支持SVG的,实际项目,这些浏览器,至少IE8浏览器还没有到不管不问的时候,因此,在使用视网膜显示友好的SVG同时,我们还要做一点优雅降级,使IE8等考古价值浏览器也能手染余香. 本文内容参考自CSS-tricks SVG

杂谈:渐进增强与优雅降级

作为一名前端开发人员,最头疼的莫过于浏览器兼容.远古时期万恶的IE6,到现在CSS3不兼容的IE7/8.为了保证不同版本浏览器都有共同或更优化的用户体验,前端搬砖的我们不得不与浏览器兼容顽强斗争.而渐进增强和优雅降级两种不同的开发流程,也是在我们项目初期做调研选型时会考虑的一个点. 渐进增强(Progressive Enhancement) 一开始就针对低版本浏览器进行构建页面,完成基本的功能,然后再针对高级浏览器进行效果.交互.追加功能达到更好的体验. 优雅降级(graceful degrad

客户端考试之渐进增强与优雅降级

优雅降级(graceful degradation):一开始就构建站点的完整功能,然后针对浏览器测试和修复. 渐进增强(progressive enhancement):一开始只构建站点的最少特性,然后不断针对各浏览器追加功能.优雅降级:使用优雅降级方案,Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作.由于IE独特的盒模型布局问题,绝大多数Web设计师和开发者都通过专门的样式表或针对不同版本的IE的hack实践过优雅降级了: 使用优雅降

网页设计时的渐进增强和优雅降级原则

渐进增强和优雅降级是两种不同的网页设计思想,是两种相反的思路达到同样的效果. 优雅降级:设计网页时,首先满足主流浏览器和最新版本浏览器的所有效果和互动.然后在此基础上,对非主流浏览器 和较低版本的浏览器进行效果删减来兼容,最终完成所有浏览器均能适用的方法.一般在学习过程中,均采用 该方法. 渐进增强:顾名思义,是在网页制作过程中,首先满足能适应由低到高,非主流到主流所有浏览器都能适用的网页,再针对高版本 浏览器和主流浏览器来添加高级效果和互动,最终让网页能适应所有浏览器的方法. 两种方法各有优劣

渐进增强,优雅降级?

渐进增强(Progressive Enhancement)与优雅降级(Graceful Degradation) 2017-05-19 在以前,有一个说法:向上兼容.向下兼容.现在的渐进增强就相当于向上兼容,优雅降级相当于向下兼容.无论是增强还是降级都与兼容相关,所以二者都是为提升兼容性而提出的. 其意是: 确定目标群体客户: 满足基本的功能,逐渐增强功能交互效果等: 保证基本功能的同时,逐渐向低版本兼容. 写法 eg: 参考资料:如何选择渐进增强,优雅降级.需警惕css3属性的书写顺序

《javascript dom编程艺术》笔记(一)——优雅降级、向后兼容、多个函数绑定onload函数

刚刚开始自学前端,如果不对请指正:欢迎各位技术大牛指点. 开始学习<javascript dom编程艺术>,整理一下学习到的知识.今天刚刚看到第六章,记下get到的几个知识点. 优雅降级 看到版本翻译为预留退路,刚刚看到个名词,我觉得很奇怪,以前没有听说过啊.不过看到英文注释就知道了Graceful degradation不就是优雅降级么,听说过! 书中举了个例子,点击一个链接,弹出一个窗口的方法. function popUp(WinURL){ window.open(WinURL,&quo

优雅降级和渐进增强的理解:

优雅降级和渐进增强的理解:渐进增强 :针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果.交互等 改进和追加功能达到更好的用户体验.优雅降级 :一开始就构建完整的功能,然后再针对低版本浏览器进行兼容.区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的 ,能够起作用的版本开始,并不断扩充,以适应未来环境的需要.降级(功能衰减)意味着往回看; 而渐进增强则意味着朝前看,同时保证其根基处于安全地带. 我觉得类似于软件的向上兼容和向下兼容

web前端入门到实战:css动画优雅降级的简单总结

CSS动画优雅降级的简单总结 CSS动画相关属性 transition:兼容性 transform 3D:兼容性 transform 2D:兼容性 animation: 可以看到动画在IE8(这里主要讨论IE)及以下完全不支持,IE9由于只支持transform(非transform3d) 优雅降级 <div class="a"></div> CSS: web前端开发学习Q-q-u-n: ××× ,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习方法(

渐进坚强、优雅降级

你能描述一下渐进增强和优雅降级之间的不同吗? 优雅降级和渐进增强印象中是随着css3流出来的一个概念.由于低级浏览器不支持css3,但css3的效果又太优秀不忍放弃,所以在高级浏览中使用css3而低级浏览器只保证最基本的功能.咋一看两个概念差不多,都是在关注不同浏览器下的不同体验,关键的区别是他们所侧重的内容,以及这种不同造成的工作流程的差异. 举个例子: a{    display: block;    width: 200px;    height: 100px;    background