data类型的Url的格式

一、data类型的简介

所谓"data"类型的Url格式,是在RFC2397中提出的,目的对于一些“小”的数据,可以在网页中直接嵌入,而不是从外部文件载入。例如对于img这个Tag,哪怕

这个图片非常非常的小,小到只有一个点,也是要从另外一个外部的图片文件例如gif文件中读入的,如果浏览器实现了data类型的Url格式,这个文件就可以

直接从页面文件内部读入了。

二、入门实例

下面这个html代码可以在支持data类型Url的浏览器中运行,运行后会看到一条蓝色渐变底色的标题。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<style type="text/css">
.title {background-image:url(data:image/gif;base64,R0lGODlhAQAcALMAAMXh96HR97XZ98Hf98Xg97DX97nb98Lf97vc98Tg973d96rU97ba97%2Fe96XS9wAAACH5BAAAAAAALAAAAAABABwAAAQVMLhVBDNItXESAURyDI2CGIxQLE4EADs%3D);background-repeat:repeat-x;height:28px;line-height: 28px;text-align:center;
}
</style>
</head>
<body>
<div class="title">Hello, world!</div>
</body>
</html>

直接嵌入到html或css文件还是很合适的。

data格式的Url最直接的好处是,这些Url原本会引起一个新的网络访问,因为那里是一个网页的地址,现在不会有新的网络访问了,因为现在这里是网页的内

容。这样做,会减少服务器的负载,当然同时也增加了当前网页的大小。所以对“小”数据特别有好处。

三、data类型Url的形式

既然是Url,当然也可以直接在浏览器的地址栏中输入。

data:text/html,<html><body><p><b>Hello, world!</b></p></body></html>

在浏览器中输入以上的Url,会得到一个加粗的"Hello, world!"。也就是说,data:后面的数据直接用做网页的内容,而不是网页的地址。

data:text/plain;charset=UTF-8;base64,5L2g5aW977yM5Lit5paH77yB

这个例子会显示出"你好,中文!"。如果吧charset部分去掉,就会显示乱码,因为我用的是UTF-8编码。

简单的说,data类型的Url大致有下面几种形式。

data:,<文本数据>data:text/plain,<文本数据>data:text/html,<html代码>data:text/html;base64,<base64编码的html代码>data:text/css,<css代码>data:text/css;base64,<base64编码的css代码>data:text/javascript,<javascript代码>data:text/javascript;base64,<base64编码的javascript代码>data:image/gif;base64,base64编码的gif图片数据data:image/png;base64,base64编码的png图片数据data:image/jpeg;base64,base64编码的jpeg图片数据data:image/x-icon;base64,base64编码的icon图片数据
四、data类型Url的形式举例

因为Url是一种基于文本的协议,所以gif/png/jpeg这种二进制属于需要用base64进行编码。换句话说,引入base64以后,就可以支持任意形式的数据格式。下

面是个png图片的例子,会在浏览器中显示一个Mozilla的图标:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==

data格式Url的种种应用举例

可以在Html的Img对象中使用,例如

<img src="data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAF..." />

可以在Css的background-image属性中使用,例如

div.image {
width:100px;
height:100px;
background-image:url(data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAF...);
}

可以在Html的Css链接处使用,例如

<link rel="stylesheet" type="text/css" href="data:text/css;base64,LyogKioqKiogVGVtcGxhdGUgKioq..." />

可以在Html的Javascript链接处使用,例如

<link rel="stylesheet" type="text/css" href="data:text/css;base64,LyogKioqKiogVGVtcGxhdGUgKioq..." />

完整的语法定义

在RFC中,完整的语法定义如下。

urlchar指的就是一般url中允许的字符,有些字符需要转义,例如"="要转义为"%3D",不过我测试下来,至少在Firefox里面,不转义也是可以的。

parameter可以对mediatype进行属性的扩展,常见的是charset,用来定义编码格式,在多语言情况下需要用到。例如下面的例子。

五、base64数据转换工具

把二进制数据转换成为Base64不是什么难事,比如Total Commander就有这样的功能。还有一些在线资源,

http://www.greywyvern.com/code/php/binary2base64

http://www.kawa.net/works/js/data-scheme/base64-e.html

有些在线转换把base64里面的“=”转换成为%3D,这个在Url中和“=”是一样的,不转换也没什么问题。

data类型的Url的格式相关推荐

  1. data类型的Url格式及Base64编码:把小数据直接嵌入到Url中

    所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些"小"的数据,可以在网页中直接嵌入,而不是从外部文件载入.例如对于img这个Tag, ...

  2. Bootstrap data类型的Url格式--url(data:image/gif;base64,AAAA):把小数据直接嵌入到Url中

    原文链接http://shiyun1013.blog.163.com/blog/static/1077403620111113234714/ 所谓"data"类型的Url格式,是在 ...

  3. “background-image:url(data:image”data类型的Url格式简介

    所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些"小"的数据,可以在网页中直接嵌入,而不是从外部文件载入.例如对于img这个Tag, ...

  4. 浏览器中的data类型的Url格式,data:image/png,data:image/jpeg!

    所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些"小"的数据,可以在网页中直接嵌入,而不是从外部文件载入.例如对于img这个Tag, ...

  5. data类型的Url格式--url(data:image/gif;base64,AAAA):把小数据直接嵌入到Url中

    所谓"data"类型的Url格式,是在RFC2397中提出的,目的对于一些"小"的数据,可以在网页中直接嵌入,而不是从外部文件载入.例如对于img这个Tag,哪 ...

  6. background 互联网图片_“background-image:url(data:image”data类型的Url格式简介

    所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些"小"的数据,可以在网页中直接嵌入,而不是从外部文件载入.例如对于img这个Tag, ...

  7. data类型的Url格式:把小数据直接嵌入到Url中

    原文地址: data类型的Url格式:把小数据直接嵌入到Url中 所谓"data"类型的Url格式,是在RFC2397中提出的,目的对于一些"小"的数据,可以在 ...

  8. Background中data类型的Url格式url(data:image/gif;base64,AAAA)把小数据直接嵌入到Url中

    原文地址:http://blog.csdn.net/zuo_hy/article/details/38866935 所谓"data"类型的Url格式,是在RFC2397中提出的,目 ...

  9. 浏览器中的data类型的Url格式,data:image/png,data:image/jpeg! 收藏 苏生不惑 发表于 4年前 阅读 3943 收藏 3 点赞 0 评论 0 腾讯云·

    浏览器中的data类型的Url格式,data:image/png,data:image/jpeg! 收藏 苏生不惑 发表于 4年前 阅读 3943 收藏 3 点赞 0 评论 0 腾讯云·云上实验室:开 ...

最新文章

  1. Python中使用数据库SQLite和MySQL
  2. sed实例(持续更新)
  3. springboot创建项目
  4. QT 应用程序关闭某个窗口时,关闭打开的所有其他窗口并退出程序 【转】
  5. Java性能分析点滴
  6. 机器人操作系统ROS微信群, 欢迎加我微信: Jdrobots 技术相互学习交流(加我请备注ROS,谢谢!) 。
  7. 深入分析之Cluster层
  8. 纽约部署免费千兆Wi-Fi 30秒可下一部电影
  9. 大家有用 hackerrank 刷过题吗,这家公司出了一个题来让大家测测自己有多牛
  10. hdu 1421 搬寝室
  11. ▶GODOT 101
  12. explicit 为什么禁止隐式类型转换
  13. Google退出内地市场
  14. ARM_kafka搭建
  15. #ifndef #define #endif的作用
  16. 人事管理系统如何做好员工考勤管理?
  17. 【龙印】用龙芯1c实现3D打印机的总体思路
  18. 星际争霸,FF反作弊对战平台
  19. 感恩美文:生命中总有一些人值得感恩
  20. PWA(Progressive Web App)入门系列:(一)PWA简介

热门文章

  1. 有关技术管理的一些思考
  2. FreeBSD 下的 MySQL 备份方案
  3. 基于C#的计时管理器
  4. GitHub Universe 2021|MS Reactor 邀你共聚年度盛会
  5. 要来吗,不错的WPF技术交流群!(大批干货今日自取)
  6. String是一个奇怪的引用类型
  7. 推荐一个集录屏、截图、音频于一体的软件给大家
  8. 开源、免费、企业级的SiteServer CMS .NET CORE 7.0 预览版发布
  9. 求助:现在有一个可以进体制“养老”的坑,我该不该跳?
  10. .NET加水印/验证码的NuGet包