div+css

chesanqi on html5(一)

题目当然是模仿的淘宝UED的那本译作《PPK on Javasrcipt》,可惜我说不了那么深刻,只是摆出来供大家探讨。html5和css3现在是个时髦的话题,时髦到现在才写这个都有点过时了。还好爸爸总对我说这么一句话“只要是你没看过的《故事会》,1999年的也是最新的。”

闲话少说,html5新增的一些特性包括:

  • 新的特殊内容元素,比如 header、section、nav、article、aside、footer
  • 新的表单控件,比如 date、time、email、url、search
  • 用于绘画的 canvas 元素
  • 用于媒介回放的 video 和 audio 元素
  • 对本地离线存储的更好的支持

    一、新增内容元素的出现,是标准向语义化跨出的一大步。以前我们有一些约定俗成的规矩(点击这里),比如说

    1
    2
    3
    4
    5
    6
    7
    
    <div id="header">页面头部</div>
    	<div id="content">
    		<div id="nav">导航区域</div>
    		<div id="main">主内容区</div>
    		<div id="side">侧边栏</div>
    	</div>
    <div id="footer">页面底部</div>

    在html4.01中div是区域划分的最好元素,不夸张的说只用一个div就可以搞定整个页面,所以市面上流行着大量div+css的书,其实div只是html中的一个元素标签,严格来说应该是(x)html+css技术。html5更加强调了标签的语义化,新增header、nav、article、section、footer等内容元素。所以上面的代码片段在html5中比较合理的写法变为:

    1
    2
    3
    4
    5
    6
    7
    
    <header>页面头部</header>
    	<section>
    		<nav>导航区域</nav>
    		<article>主内容区</article>
    		<aside>侧边栏</aside>
    	</section>
    <footer>页面底部</footer>

    好了,现在不用约定俗成了,现在标准规定了,每个符合标准的浏览器都会知道页面中的每一部分代表什么内容,有什么作用。代码简洁漂亮没有多余重复的div,搜索引擎可以更清楚的判断网页的哪部分内容更重要。事情变的简单,工作效率增加。

    但是但是,要注意他们跟h1、P不一样,新增的内容元素不是换了名字有了自己特点的div。尝试这样定义header标签的样式:

    1
    
    <header style="width:300px;height:200px;background:red;">页面头部</header>

    测试发现在ff、safari、opera中width和height都没有起作用,只有在chrome中才得到想象中的效果。(ie我暂时忽略了,原因不表)新增的内容元素不是div,现在就可以使用这些新内容元素,但有时候要套一个多余的div,比较:

    1
    2
    3
    
    <header  style="width:300px;height:200px;margin:0 auto;">
     内容
    </header>
    1
    2
    3
    
    <header>
    	<div style="width:300px;height:200px;margin:0 auto;">内容</div>
    </header>

    二、新的表单控件,html5新增了许多input输入类型选择:

    • email
    • url
    • number
    • range
    • Date pickers (date, month, week, time, datetime, datetime-local)
    • search
    • color

    详细了解,请点击这

    以前不借助javascript,实现表单验证功能是不可能的。html5新增的input类型不要javascript就能验证。email可以验证输入是不是email格式;number类型确保输入的是一个数值。这真是振奋人心的新增功能。

    但是但是,现在面临最大的推广困难是各浏览器对其的支持,那是相当的不乐观。即使浏览器对标准全面支持,我觉得实际应用起来仍然不那么乐观,因为标准没有规定,当值为true时浏览器应该怎么做,当值为false时浏览器又要怎么做。比如说opera有自己的fasle效果,input底色变红并且出现输入不合法的提示。如果我们想做到各浏览器表现效果一致,恐怕需要一个像css那样的reset.css。


    搜狗拦什么?

    去掉超链接的虚线框,在IE中至少有这么几种办法:

    1. a {blr:expression(this.onFocus=this.blur())}
    2. onfocus=”this.blur()”
    3. 用.htc 实现
    4. 使用IE的私有属性hidefocus=true

    不考虑性能及其他因素,这几种办法在IE类浏览器遨游、TT、360中都表现相同,但是在搜狗浏览器中,会遇到点麻烦。默认设置的搜狗兼容模式会进行弹出窗口拦截,大概有这么几种情况:

    • a.新窗口打开会被拦截,原窗口不会。
    • b.原页面打开会被拦截,但是作为iframe调用不会。
    • c.页面放到服务器上会拦截,放在本地不会。
    • d.前面提到的去掉虚线框的前三种办法有可能会被拦截,使用hidefocus=true则有可能放过你,具体见demo,为什么都是有可能,见下面三点。
    • e.如果页面有两个指向相同地址的a链接,被拦截的那个a先被点击,那紧接着点击不会被拦截的a也会被拦截。
    • f.如果页面有两个指向相同地址的a链接,不被拦截的那个a先被点击,那紧接着点击会被拦截的a则不会被拦截,刷新页面也不会。
    • g.如果页面有两个指向相同地址的a链接和一个其他指向其他地址的a链接,如果不被拦截的那个二分之一a先被点击,接着单独的那个a被点击,此时再点击会被拦截的a则会被拦截。(f和g的区别在于,点击两次相同的链接a之间是否点击了另外的其他链接。)
    • h.有几个例外不会被拦截,搜狐(http://www.sohu.com/)QQ(http://www.qq.com/)Google(http://www.google.com/)谷歌中国(http://www.google.cn/)
      (但是,谷歌中国新家(http://www.google.com.hk/)会被拦截,另外焦点房产网、17173、chinaren、搜狗包括搜狗浏览器官网均会被拦。)

    webrebuild.org第四届年会-北京站

    举办时间: 2010年07月17日(星期六)
    举办地点: 北京航空航天大学新主楼会议中心 第二报告厅 (地图
    报名地址: 在线报名
    报名截止: 2010年06月27日
    官方网址:webrebuild.org

    主要议程:

    · (W3C)Klaus Birkenbihl——题目待定
    · 范俊豪(腾讯)《从浏览器原理看web标准的重要性》
    · 谢子斌(Opera)——《HTML5与CSS3》
    · 张克军(豆瓣)——《豆瓣的前端架构》

    —————————————————–
    会后相关资源分享:
    data on the web ——- Klaus Birkenbihl(W3C)
    建立前端开发团队 ——- 蒋定宇(D-Link 台湾)
    谈谈HTML5和CSS3 ——- 谢子斌(Opera)
    网页性能优化之路 ——- 范俊豪(腾讯)
    前端基础架构 ——- 张克军(豆瓣)
    从浏览器解析看标准的重要性 ——- 梁璟彪(腾讯)


    纯css的tab标签切换

    这是个老教程了,在需求(比如淘宝店铺模板)压力下有些想象力的人总会想到一些巧妙的方法,深入进去发现有许多东西可挖。

    链接中的两个例子中都没有涉及当前状态的情况,我认为有两种方法可以解决:
    1.做图的时候把当前状态做到图片上。

    2.编写额外的代码模拟当前状态。demo

    1. <dl>
    2.   <dt><a href="#a">1</a><a href="#b">2</a><a href="#c">3</a></dt>
    3.   <dd>
    4.     <div id="a"><img src="11.png"/><p>1</p></div>
    5.     <div id="b"><img src="22.png"/><p>2</p></div>
    6.     <div id="c"><img src="33.png"/><p>3</p></div>
    7.   </dd>
    8. </dl>
    1 Comment more...

    页面重构合理化讨论(第三期WEB标准化交流会)

    先列一下会议的主题,由于时间的关系没有讨论完,感觉很遗憾。

    一、 结构合理化
    a) 统一的DTD声明 html4.01 xhtml1.0 html5
    b) 通过W3C验证
    c) 语义化的html 标记应用
    d) 语义扩展 microformats或RDFa
    e) Class id命名规则一致性,借鉴html5新标记名称和microformats。
    f) SEO
    二、 样式合理化
    a) 样式的分层管理
    i. 公共规则层 reset base layout-rules …
    ii. 公共模块层 header footer …
    iii. 项目模块层 频道、店铺、检索…
    iv. 项目文件夹尽量平级,不要多层嵌套
    b) 样式的书写
    i. 编码 utf-8避免中文字符造成样式读取问题
    ii. 注释 统一
    iii. 模块区分,避免代码耦合增加维护难度
    c)CSS代码压缩
    三、 素材合理化
    a) 图片类型合理应用 jpg png-32 png-8 gif
    b) 图片字节
    c) 图片管理
    e) css sprites
    f) 图片缓存
    四、Javascript AJAX DOM
    a) 如何创建自己的js库或js框架,选择JS库或框架
    b) JS的管理
    c) JS的性能
    备选议题[如果会议时间还有富余可以讨论]
    一、HTML5+CSS3
    a) 如何使用html5
    b) 如何使用CSS3

    一、结构合理化
    DTD声明是给浏览器看的,可以让浏览器知道这个页面代码是哪个年代的写法,以便作出合理的解析。与会的朋友都认同同一个团队DTD声明要统一,但至于选择哪种类型的声明,会因某些历史原因、团队整体技术水平原因或者其他别的方面的原因而不同,甚至有些老旧的项目没有DTD声明。

    W3C验证是检验我们代码标准化程度的工具。因为是工具所以在我们项目的进行中不一定是必须的。有朋友还提到,前端提交的静态页面是可以通过W3C验证的,但是交付后台嵌套程序后,绝大多数情况下又通不验证,所以完美的页面需要后端同学对W3C的标准也比较上心才行,而这个比较困难。结论是W3C验证是自己对自己严格的要求,对html和css各版本之间差异的理解,正确合理的标签嵌套,避免不小心犯下的书写错误,可以让自己的代码更健壮与优雅。

    html标记语义化的讨论有些小小争论。不太认同这个观点主要是因为现阶段看不到特别出彩的好处,有同学说到现在的搜索引擎不一定对特有语义化的标记有特别的处理方式,爬虫抓取的只是文字与图片等实质内容,搜索引擎是不是真的认为h1标签的权重比h2标签大?语义化标记并非固定不变的,由于规则的变化,一些标记今天是推荐标准,明天或许就被舍弃。甚至选择合适的语义化的标记在开发过程中费掉了不少时间。持比较赞同观点的朋友认为标记语义化有更好的未来发展前景,提到不同的终端如盲人阅读器,家用电器接入互联网等等,有些特殊情况下浏览器对css文件解析出现问题,有语义化的标记依然能够让页面层次分明。
    (会后我仔细考虑一下两方的观点,说一说我的理解:搜索引擎对语义化标记解释的不一致也许正说明了我们前端工程师对语义化标记的使用混乱。天然的即使我们对有语义的标记感到选择困难,也不会喜欢只用一个标记来完成所有的代码工具,想一想如果整个页面只有div一种标记虽然也能很好的完成工作,但这绝不是我们想要的,我们会根据自己的理解用到我们所认为符合语义的标记。随着互联网的发展,基于未来网络的各种终端设备会层出不穷,如果有一套大家都遵循的语义化标签,那么我们的工作量肯定会大大减少,因为至少不用考虑我们这套代码是工作在“IE”上还是“火狐”上。)

    与会的朋友谈到微格式和RDFa都说不太了解,说实话我是第一次听到这些知识,为了避免理解上的偏差就不介绍了。

    class和id命名规则,有些人习惯纯英文来命名,有些人习惯拼音首字母,有些人习惯拼音加下划线(或者间隔线),有些人习惯驼峰格式(第一个单词首字母小写,从第二个单词开始每个单词的首字母大写,如“className”)。至于具体哪种方式更好一些,没有具体结论。有些习惯的改变成本也是挺大的,只能建议大家按照根据团队的规则来做,这里大概可以叫做到建立“一致性”,与人方便自己方便嘛!

    SEO大概可以算是上面的一个综合,因为完美的SEO方案并不是项目完成后再实施的,它要渗透到项目进展的个个方面,甚至视觉设计师也要参与进来。而关于外链方面的话题没有在此次交流会讨论。

    二、样式合理化
    对于小站来说一个样式文件就能满足需求,对于大的项目大家都比较认同三层机制:reset及layout、公共模块、频道具体应用。 对于共用样式在以后的特殊化问题,与会者有人表示对于极个别的特别不靠谱的需求可以打回,或者大范围的讨论是否真的有改动的必要。如果真的不能避免,我个人觉得可以讨论出调整公共模板的整体样式还是只在修改的地方按照css优先级的原则打个补丁。

    编码的问题和DTD声明的问题差不多,新制作的页面大家都倾向于使用utf-8。

    大家认为要有必要的注释,更多的考虑在维护方面。如果是utf-8编码那中文注释会增加字节,但这个是可以容忍的。代码压缩后,增加的字节数可以忽略。对于大型的站点,我们这组讨论的是喜欢两套代码,一套用于维护修改,一套用于站点,就是说写好代码后压缩上传,需要的修改的时候,修改未压缩的版本,改好后压缩上传。有的服务器支持自动压缩,上传一个未压缩的版本,服务器会自动压缩。如果有了比较深度的压缩,那么对于样式写法的具体细节,就不必那么太在意,有的人习惯每个样式占一行,有的人习惯每个class里的所有样式共占一行。

    三、素材合理化
    首先亮出了一个观点,图片的压缩是无止境的。这话当然有点狂妄,但要认识到fireworks对png的压缩要比photoshop更优化,而还有其他的工具可以对压缩后的图片进行更深度的压缩。根据算法的不同,将来我们也许能找到更好的压缩工具。

    大家现在都比较认同png-8和jpg两种格式,之前在谷歌中国召开的第一届webrebuild北京年会,腾讯的彪叔说他们现在更多也是用这两种格式,有动画效果的才用到gif。png-24的兼容性有问题,全透明png-8的表现是很好的,而半透明gif的表现同样不好。涉及半透明的渐变叠加绚丽效果还是要拼合成jpg整图,甚至会用到flash实现渐变叠加效果。

    大家还说了下自己公司或者自己对图片字节的要求,我记不清都是哪些公司,只好说有的要求是30K,有的是60K,而刚才看greengnn的博客他的底线是100K。这个还是看各公司具体更注重那方面吧。

    我们组一位来自新浪乐居的朋友提出用SVN的方法来进行图片管理的观点很新颖。由于时间的关系不能更好的讨论感到很遗憾。

    css sprites在第二届交流会上已经讨论过,大家有兴趣的看去w3ctech主页看看。

    —————————————————-
    最后要说的话,此次交流会是同百度UXday联合举办,谢谢盒子咖啡的美味糕点和优秀服务生。还要谢谢前两届提供场地的身边网,你们对前端工程师的重视,假以时日必将收到丰厚的回报。


    Copyright © 1996-2010 Chesanqi's Web World. All rights reserved.
    Jarrah theme by Templates Next | Powered by WordPress