CSS3实例学习教程:data类型的Url

文章简介:小例子:下面这个html代码可以在支持data类型Url的浏览器中运行,例如Firefox。

所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些“小”的数据,可以在网页中直接嵌入,而不是从外部文件载入。例如对于img这个Tag,哪怕这个图片非常非常的小,小到只有一个 点,也是要从另外一个外部的图片文件例如gif文件中读入的,如果浏览器实现了data类型的Url格式,这个文件就可以直接从页面文件内部读入了。

data类型的Url格式早在1998年就提出了,时至今日,Firfox、Opera、Safari和Konqueror这些浏览器都已经支持,但是IE直到7.0版本都还没有支持,IE不支持的东西太多了,也不差这一个。:(

小例子:下面这个html代码可以在支持data类型Url的浏览器中运行,例如Firefox。

运行后会看到一条蓝色渐变底色的标题。

01 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

02 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

03 <html xmlns="http://www.w3.org/1999/xhtml" >

04 <head>

05 <style type="text/css">

06 .title {

07 background-image:url(data:image/gif;base64,R0lGODlhAQAcALMAAMXh96HR97XZ98Hf98Xg97DX97nb98Lf97vc98Tg973d96rU97ba97%2Fe96XS9wAAACH5BAAAAAAALAAAAAABABwAAAQVMLhVBDNItXESAURyDI2CGIxQLE4EADs%3D);

08 background-repeat:repeat-x;

09 height:28px;

10 line-height: 28px;

11 text-align:center;

12 }

13 </style>

14 </head>

15 <body>

16 <div class="title">Hello, world!</div>

17 </body>

18 </html>

这个渐变的蓝色底色实际上是用一个1x28的小图片通过横行重复(repeat-x)形成的。

这个图片很小,不过104个字节,直接嵌入到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类型的Url大致有下面几种形式。

01 data:,<文本数据>

02 data:text/plain,<文本数据>

03 data:text/html,<HTML代码>

04 data:text/html;base64,<base64编码的HTML代码>

05 data:text/css,<CSS代码>

06 data:text/css;base64,<base64编码的CSS代码>

07 data:text/javascript,<Javascript代码>

08 data:text/javascript;base64,<base64编码的Javascript代码>

09 data:image/gif;base64,base64编码的gif图片数据

10 data:image/png;base64,base64编码的png图片数据

11 data:image/jpeg;base64,base64编码的jpeg图片数据

12 data:image/x-icon;base64,base64编码的icon图片数据

因为Url是一种基于文本的协议,所以gif/png/jpeg这种二进制属于需要用base64进行编码。

换句话说,引入base64以后,就可以支持任意形式的数据格式。

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

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

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

1 div.image {

2 width:100px;

3 height:100px;

4 background-image:url(data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAF...);

5 }

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

<link rel="stylesheet" type="text/css"

href="data:text/css;base64,LyogKioqKiogVGVtcGxhdGUgKioq..." />

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

<script type="text/javascript"

href="data:text/javascript;base64,dmFyIHNjT2JqMSA9IG5ldyBzY3Jv..."></script>完整的语法定义

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

dataurl := "data:" [ mediatype ] [ ";base64" ] "," data

mediatype := [ type "/" subtype ] *( ";" parameter )

data := *urlchar

parameter := attribute "=" value

urlchar指的就是一般url中允许的字符,有些字符需要转义,

例如"="要转义为"%3D",不过我测试下来,至少在Firefox里面,不转义也是可以的。

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

例如下面的例子。

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

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

Firefox有一个data类型Url的测试页面,列出了各种格式的data类型Url的测试Url,和测试结果说明。

base64编码和内容的隐秘

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

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

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

当然,这种Url还有一种隐秘的好处,就是将一些道貌岸然者不喜欢的东西,堂而皇之的放在页面上。

时间: 2024-11-05 18:47:01

CSS3实例学习教程:data类型的Url的相关文章

ios-iOS 开发,socket 传输的都是data 类型,怎么知道这个data 的原始类型是图片还是

问题描述 iOS 开发,socket 传输的都是data 类型,怎么知道这个data 的原始类型是图片还是 iOS 开发,socket 传输的都是data 类型,怎么知道这个data 的原始类型是图片还是字符串类型.数据传输用的GCDAsynSocket 解决方案 只有解析了之后才能知道是什么类型,按照规定的格式的话,就不需要这个判断,传输和监听的都规定好了传送的格式. 解决方案二: 你可以查阅下某种图片的格式定义, 例如jpg, 其原始数据中, 有类型标识 解决方案三: Data类型的Url

网站速度优化新招数:使用data类型图片

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 随着搜索引擎的不断进步,外链在SEO优化当中的占的比重呈下滑趋势,而其他影响到用户体验的因素慢慢走近SEOer的视野.通过百度推出的一些产品(百度站长平台.百度统计)我们可以看到,网站的加载速度已经成为影响排名的因素之一了.并且,网页尽可能快地加载还能影响到用户体验,从而影响到用户在网站停留的时间以及跳出率.那么,优化网站的加载速度就是非常必

CSS3实例教程代码:简单制作遨游浏览器LOGO

文章简介:CSS3实例教程代码:简单制作遨游浏览器LOGO. <!DOCTYPE HTML> <html> <head> <title>LOGO</title> <style type="text/css"> * {margin:0; padding:0} .main {width:800px; margin:50px auto 0}  .main_wrapper {width:240px; height:240p

CSS3实例教程:hover、active和:focus伪选择器

文章简介:CSS3实例教程:hover.active和:focus伪选择器. CSS3的伪类选择器就是多,今天我们来学习新的伪类选择器--UL状态伪类选择器.这些选择器都有一个共同的特征名那就是定义的样式只有当元素处于某种状态下时才起作用,在默认状态下无效. 今天我们先来接触:hover.active和:focus这三种状态伪类选择器. :hover选择器.:active选择器和:focus选择器 :hover选择器:当鼠标悬停在所指定的元素上时所使用的样式: :active选择器:当所指定的元

CSS3实例教程:盒模型添加阴影属性box

文章简介:我们要对盒模型添加阴影怎么办呢?其实它的用法与text-shadow用法一样,只不过属性名称是box-shadow. 我们要对盒模型添加阴影怎么办呢?其实它的用法与text-shadow用法一样,只不过属性名称是box-shadow. 相关文章:CSS3教程:网页文字阴影属性text-shadow box-shadow: 此属性与text-shadow一样有4个值,前两个值分别表示水平方向位移距离和垂直方向的位移距离,第三个值表示阴影的模糊半径(包含0及以下的值均表示无模糊),最后一个

CSS3技巧教程:css3的颜色取值方法

文章简介:CSS3技巧教程:css3的颜色取值方法. css颜色取值,大家对于css2版本以下颜色名称.十六进制技法.rgb记法.以上取值记法大家都和你熟悉,css3又有什么更另类的取值方法呢?RGBA.HSL.HSLA这三位大侠就是我们拭目以待的css3的颜色取值方法. RGBA即在css2版本中RGB记法增加了支持透明度的元素,语法也是相当容易理解:RGBA(255,0,0,0.5),这里的透明度,取值方范围在0-1. HSL玩过PS的童鞋应该对于这个HSL应该是很熟悉的,依次表达的意思是:

HTML5 CSS3简明教程

Web 设计师可以使用HTML4和CSS2.1完成一些很酷的东西.我们可以在不使用陈旧的基于table布局的基础上完成文档逻辑结构并创建内容丰富的网站.我们可以在不使用内联<font>和<br>标签的基础上对网站添加漂亮而细腻的风格样式.事实上,我们目前的设计能力已经让我们远离了那个可怕的浏览器战争时代.专有协议和那些充满闪动.滚动和闪烁的丑陋网页. 虽然我们现在已经普遍使用了HTML4和CSS2.1,但是我们还可以做得更好!我们可以重组我们代码的结构并能让我们的页面代码更富有语义

判断data类型为空-求指点,前端页面的问题

问题描述 求指点,前端页面的问题 图片中的dealTime是data类型,从后台获取的,现在怎么判断dealTime是否为空?? 解决方案 不知道什么语言,可以试试看 == null 解决方案二: 同问,这个是啥语言?看起来你不是已经判断非空了嘛? 解决方案三: 前端页面遇到的问题adblock 页面前端问题----------------------

47款超酷超实用的CSS3技巧教程

日期:2012-10-20  来源:GBin1.com 如果你已经足够精通CSS3的话呢,那么它带给你的惊喜和乐趣已经不言而喻了吧,它不仅可以帮助你创建出最优美的设计,还可以大大提高你的工作效率.今天我们给大家推荐的这47套CSS3教程无疑可以带给大家巨大的帮助,不光是专业开发人员,即使初学者也同样适用.在这套CSS3教程中,我们收集了足够多的小技巧可以更巧妙的运用在你的网站设计中,你可以用它们更好的优化你的网站.还等什么呢?快来试试吧. 相关阅读:推荐20款最新的超棒CSS技术教程 1. Sw