Category Archives: html

开放搜索草案简介

晚上小逛了下淘宝,犯了点职业病,按了 option + command + i
看了下代码,看到有条新的没见过的代码:


查了下资料,发现是一种微格式。
通过添加这段代码,可以让支持这种微格式的高级浏览器将网站的自定义的搜索方式加入到浏览器的搜索引擎列表中,如火狐浏览器是右上角的搜索框,
谷歌浏览器是添加进地址栏。
再来看看provider.xml里有什么:



    GB2312
    淘宝购物
    淘宝购物搜索 - 只有你想不到,没有你淘不到
    http://pics.taobao.com/favicon.ico
    

第一行为文旦类型和编码格式。这个不用说大家都懂的。
第二行包含了一个OpenSerarchDescription的开放搜索描述的标签,和一个命名空间
在有些网站里还看到有添加另外的 xmlns:moz="http://www.mozilla.org/2006/browser/search/" 命名空间,还没考证过这几个命名空间的具体用法
下面还定义了搜索字段的编码格式
短名称(别名?缩略名?)
描述及favicon和最重要的一条
搜索方式对应的Url
这里简单说下这个Url的用处,举个栗子吧:
你在自己的网站中添加好开放搜索的微格式,其中 url 部分如下:

http://www.google.com/search?q={searchTerms}+site%3example.com&hl=en"

那么如果有人用了你的网站给浏览器添加的搜索引擎搜索关键词,那么搜索界面页面将会是谷歌页面,搜索词为
关键词 site:example.com
也就是用谷歌搜索你站内对应的关键词。
基础的就这样,具体内容,有兴趣的同学可以自己看文档啦。
reference:
http://en.wikipedia.org/wiki/OpenSearch
http://www.opensearch.org/Home
http://www.opensearch.org/Specifications/OpenSearch/1.1/Draft_5
http://opensearchdescription-xml.mime-application.com/
http://www.xml.com/lpt/a/1708
http://stackoverflow.com/questions/10302629/suggest-add-the-search-engine-to-firefox-when-user-is-in-site
http://aaronparecki.com/articles/2011/07/11/1/how-to-let-google-power-opensearch-on-your-website

让国内那些主流的双核浏览器以急速模式请求你的网站

今天收到封网站页面在360浏览器下轻微变形的bug邮件。
嘿,网站在 webkit 下一点问题都没有,双核下出了问题,肯定是以 IE 的渲染模式运行了啊。
赶紧查了下,看看是不是有方法可以让自己的网站默认能以急速的方式运行。
看了下还是有很多人有同样地疑问的,从浏览器厂商的论坛上了解到,浏览器选择以哪种模式渲染网页基本是靠查询一个含有域名库的文件来实现的。
域名库由厂商人员手动维护。
这不坑爹啊,继续查。终于还是找到了个方法。
是360提供的:
在网页的head标签中添加下面这行一行代码:

    

content的取值为webkit, ie-comp, ie-stand之一,区分大小写,分别代表用webkit内核,IE兼容内核,IE标准内核。
如果页面需默认用极速核,增加标签:
如果页面需默认用ie兼容内核,增加标签:
如果页面需默认用ie标准内核,增加标签:
360 还希望这个 meta 标签能成为国内双核浏览器渲染模式选择的行内标准。
不管怎样,页面的问题解决啦。
等待设计师重新设计界面后再把出问题的地方重构一下。
reference:
http://se.360.cn/v6/help/meta.html

一个来自一淘的简单面试题

interview etao

一个简单的面试题


很久前的yisi在微博上发的一淘面试题,整理文件的时候挖出来的。

比较简单的一道题目,考察点主要有负边距,position定位,z-index层级,layout等。
看代码:
dom结构:

    

考虑性能的话还要加上类名,通过tags来解析样式速度慢,因为这里不涉及到具体的业务,就不做处理了。
关于类名命名方式之类的,虽然也很重要,但这里也不说,非要说点什么的话,那就是和公司或者社区的尽量保持一致性。

css:

    ul {
      width: 150px;
      list-style-type: none;
    }
    ul li {
      float: left;
    }
    ul a {
      position: relative;
      float: left;
      margin: 0 -5px -5px 0;
      border: 5px solid blue;
      width: 40px;
      height: 40px;
      text-align: center;
      line-height: 40px;
    }
    ul a:hover {
      border-color: red;
      z-index: 99;
    }
    虽然效果写出来了,但是代码中其实还是有两处不清楚的地方,有人知道的话麻烦告知一下:

  • 1.用 list-style-type: none; 好,还是用 list-style: none; 好,都能达到效果,但是 list-style 里还包括了除type外的其他属性。不知道哪个性能好,或者有其他优势。这就像用 background 时一样,有人直接用background加个颜色,而有人用 background-color, 虽然写的时候没什么问题,但是重构的时候可能因为用了 background 而把其他叠加的 background 其他样式覆盖掉。但是这里的属性值是 none, 就不存在覆盖不覆盖的问题了。个人倾向于使用具体一点的list-style-type.
  • 2.list-style-type 或者 list-style 写在 ul 中还是写在 li 中好,在支付宝的前端 ui 框架爱丽丝中知道 ul 的list-style-type 是可以继承的,写在两个地方都能实现相同的效果。不知道哪种好。爱丽丝中是写在 ul,我个人也倾向于写在 ul 中,我喜欢能写在模块外层上的样式尽量写在外层。

这题目中还有很多可以写的地方,就不展开来讲了。
题目效果
update:
吃个饭回来,想到为毛这里用 ul 是语义化,于是改成用div了,dom结构瞬间简单了很多。
例子见:
题目效果2

使用 gzip 压缩 js, css 等静态文件,优化网页加载速度

一般情况下,开发一个项目,部署上线前需要对css,js等文件进行压缩合并。这样可以使文件大小变小很多,用户就能更快地获取到文件,加快网页加载速度。
其实除了使用yuicompresser等合并压缩外,还有一个很凶残的东西,gzip。这是 GUN zip 的缩写,通过这个压缩往往能使文件减少40%以上。当然这不绝对,有些情况使文件变大也是有可能的,这另行讨论。
那怎么使用 gzip 呢?一般有3种方式:
1.通过apache等静态服务器提供的功能,只要通过修改服务器配置文件里的设置就可以开启 gzip 压缩。
2.通过jboss,tomcat,php等容器来开启gzip压缩,方法也是修改配置文件啦。
3.通过一些压缩工具直接对文件进行 gzip 压缩。
前两种方式都是在用户访问网站发起请求时,服务器动态地对请求的文件进行压缩,每次请求都会这样重新压缩,非常消耗cpu处理时间,虽然可以进行缓存。
但按照众所周知的预处理原理,我们最好还是提前将文件压缩好。就像less等能预编的绝对不要放到客户端去处理啊。
所以还是推荐第三种方式。这样用户请求 css js 时就能直接返回 gzip 压缩好的文件,当然写点代码设置请求头为 Content-Encoding:gzip 什么的也是必要的。
大多数情况下只要开启对 html(包括动态生成的页面), css 和 js 的压缩就可以了,因为想 jps, png, pdf 等二进制文件 gzip 基本是不起作用的,反倒压缩需要消耗很多的cpu,得不偿失。
再说说前面提到的gzip压缩可能会使文件变大的问题。其实这个问题也不用怎么考虑,知道下原理就可以了。我们知道 gzip 压缩是根据文件内容的冗余度来处理的,当一个文件内存在很多相似的代码片段或者字符串的话就能得到很好的压缩,而文件内容很少重复的话,压缩可能就没什么效果。
基于这点里有,我们写代码的时候就要注意一些问题,比如引入css文件的写法: 注意几个属性书写的前后位置顺序提交冗余度,这样可以得到更好的压缩率,同样其他多属性的标签也应该保持这种书写的一致性,如input等。有兴趣的可以看看下面google的参考链接,里面做了点介绍,当然要想深入的话RTFM
以上提到的具体的配置方法和 gzip 算法等内容参阅相关文档哈。
写这篇文章主要是因为前些日子给一个网站做性能调优,发现坑爹的根本没有开启 gzip 压缩,有点郁闷,我嚼得好歹 gzip 应该是标配吧。因为也没有什么服务器控制的权限,所以报告了项目经理,让他处理处理,但是没想到啊,办公室里的两个项目经理都说不知道 gzip 这东西,都说之前没听说过。。
纳尼,这不是计算机网络课程里最基本的东西咩。结果一问办公室里的其他人,没有一个人知道。。
好吧不纠结有没有人知道这问题了。
reference:
https://developers.google.com/speed/articles/gzip
http://badqiu.iteye.com/blog/37176
http://laodaobazi.iteye.com/blog/1404694
http://www.hiadmin.org/blog-seo/wordpress-gzip-css-js
http://www.dboy365.com/archives/707

使用favicon小图标需要注意的地方

看一些第三方的网页模板的时候经常可以看到对favicon调用使用下面的方式:

   
    

当然这对于最终的效果没有什么影响,按GTD的准则来讲,这样就可以了。
但完成事之后我们还可以考虑考虑怎么去 do it better.
先来看一下Favicon 的wiki:http://zh.wikipedia.org/wiki/Favicon
可以看到shortcut 主要是用于不遵守标准的IE的解析,对于多数遵守标准的现代浏览器而言会忽略这个关键字。
所以wiki上推荐含rel="shortcut icon" 的语句写在上面,而只有在当希望为新浏览器提供另一种备用图像如png 等时,才使用rel="icon" 的格式。
另外还要注意type 属性的书写格式,wiki上只说明了出于兼容性原因使用image/x-icon,然而又说最好使用IANA注册的MIME类型。
这样的说辞实在无法让人确定哪种方式比较合理。要深究的话还是要挖挖标准文档啊。
鉴于比较晚了,WP的富文本剪辑器貌似也出了点问题,先将就这样吧。
有兴趣的朋友可以再研究研究。