礼拜一点小想法,写了个半成品,只供试玩,有心思再来优化解析方式,让它支持更多的语法。 试用地址:http://www.ilovejs.net/lab/makeHTML.html
鉴于目前规划部署项目的静态文件管理和制定页面开发规范,整理出了一个符合项目特点的HTML5规范页面,使用了更有语义化的HTML5标签。趁热打铁,遂将本博客也更新到了HTML5,使得博客的信息内容架构使用更有语义化的标签来展示。比如下图就是博客首页的HTML DOM结构图:
对于压缩HTML的好与坏、利与弊,网上也已经谈论的很多,自己也搜集了一下,毕竟自己最近也在做这样的一个工具来压缩HTML代码,提出一下自己的见解以及一些设想。 支持不压缩HTML的原因有这样的一些考虑:去掉换行、多个空白之后可能会对样式有影响;pre标签形式压缩之后会失去原有的意义;IE条件注释不能够删除;只是压缩空白和注释收益不大,特别是在gzip压缩之后;压缩了代码,看源码不方便;性价比低,付出的技术成本跟收到的效果不成正比…。原因很多哎,所以造成了大部分的站点对于HTML都是未压缩的状态发布了。为什么不压缩 HTML 这几天思前想后,HTML压缩的意义在哪里?
2010-8-2 update:经过测试发现,但script的src和link的href属性值为#的时候,也会发生同样的事情:给服务器发送一个HTTP请求,并把当前页面作为返回值。浏览器的异同与下面的结论相同。通过js动态生成的script和link元素也一样。 ————-============————-============———— 有些时候,我们在写HTML页面的过程中,通过script标签来外联外部的js文件,可是不小心给src属性赋值为空,当然有时候也会在link元素中带上了空属性值的href属性,我们想当然的认为这个没多大的影响,浏览器也会按照你认为的方式来解析它们。但是这个想当然估计错误了。先看几个测试页面:《HTML5 Doctype下href=””》,《HTML5 Doctype下src=””》,《XHTML1.0 Doctype下href=””》。 使用firebug来查看DOM节点树的link和script节点,你就会发现怪异的事情发生了:link和script节点的内容居然是当前html页面的内容!!确实不可思议,就连容错机制最好的XHTML1.0的DTD声明也无济于事,这恐怕就是浏览器渲染页面的问题了。script节点src属性为空的时候就更恐怖了,会造成了语法错误。可更不可思议的是,出现这个问题的浏览器居然不是IE。经过多个浏览器的测试,IE和Opera都能很好的处理这个问题,可是Firefox、Chrome、Safari居然出现了。 对于这个初步总结为:当link标签的href属性为空、script标签的src属性为空的时候,浏览器渲染的时候会把当前页面的URL作为它们的属性值,从而把页面的内容加载进来作为它们的值。动态修改它们的href或者src属性值为空的时候,也将会出现这个问题:《动态修改href为空》。 因此,在我们平时写HTML页面,或者动态生成这两个标签的时候,尽量避免陷入了上面出现的陷阱,好好对待浏览器,编写符合规范的HTML标签语法和嵌套规则,多余的就别多此一举去倒弄,它回报给你的将是更少的开发时间和精力。 当某天你测试上面给出的测试样例并没有发现这个问题的时候,那就是浏览器修复了这个bug了。
对@font-face的作用,也是今晚在看这篇博文《@font-face and performance》的时候,才知道使用它可以自定义显示字体。我想在浏览器中加入@font-face的功能是处于一定的情况的,比如使用特殊的字体来显示页面某部分的字体,从而避免采用图片的方式来显示特定字体。出发点是很好的,但是…… 解析@font-face的机制在不同的浏览器下是不同的。 对于@font-face更多的叙述,在上面提到的那篇博文中有了详细的描述。但是对于它提出的说“IE doesn’t render anything in the page until the font file is done downloading if there … 了解更多
昨晚在浏览Delicious网站的时候,又看到了这种样式的导航样式: 之前一直很想做这样的一个导航,可是苦思都不知道良方,还一直认为这需要几个背景图片,着实复杂;还有hover效果,更是会难些,而且有兼容性问题。之后在FF和IE6下测试了下Delicious的兼容性效果,它在ie6下的样式,使用了普通的背景样式,没有上面所看到的折角效果。 之后看了下它的背景图片,一下子豁然开朗了,关键在于使用负margin来实现即可。下面是我实现的样式截图: 而且在兼容性和代码方面都有所改善。在IE6下也可以实现折角的效果,但是没有hover效果。而在Delicious里是在超链接a标签下嵌套了span标签,在a:hover伪类下来处理span的背景变换。而我直接在li标签中使用:hover来处理鼠标hover的背景切换,代码更加简洁了点,并且通过hack来解决ie6下兼容性问题(Updates:因为把:hover写在了li标签上,所以可以直接去掉hack来兼容ie6的css样式,也能做到稳步退化的效果)。 具体的CSS样式和背景图片可以浏览《折角导航栏效果》页面,使用firebug等工具查看页面源码。