@
hzlzh 复用 CSS 也只是多打一些字符,即使没有 gzip 也不会对速度造成的影响。按照分离职责的原则,HTML 是内容,CSS 是呈现,不应该用内容来「折衷」,在实际场景上也可能很不妥:
现在大部分浏览器都会在悬停时显示链接的 href,我个人挺讨厌「
http://www.v2ex.com/t/48511#;」这样的 href,因为一看就知道是 JS,不是实际 href,除了浪费感情之外,也无从知道想要的信息,比如 comment ID。
然后来看看移动设备,没有了悬停效果,自然不会知道这个看上去像链接的东西到底是不是链接。
在各种未知影响下,有可能 JS 加载或执行失败了,此时点击「看上去像链接」的链接时,因为是假 href,自然不能达到用户的预期效果,给用户带来很大的困扰。
再从另一方面来看,以 Twitter timeline 为例,假设 JS 是可以正常加载和正常执行,但是呢,网速很慢或者优化不足或者请求数过多(iOS 并发数不多),JS 加载时间很慢,如果此时 HTML 加载好了,并且我看到了我想要看的一个用户的名字,如果是真实 href 的话,我可以直接点名字就跳过去了,不必等 JS 加载好再点再等加载。
结合上面两个场景,再由于 href="###" 实际上会造成页面刷新,在移动设备上点击了一个 href="###" 后又没有 JS 来 preventDefault(),我的话,很可能直接关掉页面。