互联网的发展总是在不断地催生新技术的产生,而html5和CSS3是最近一直被讨论的热门话题,对于每个互联网开发者尤其是前端开发者而言,都充满了好奇与渴望。那么html5和CSS3究竟有哪些让我们眼前一亮的东西呢?我在WebRebuild北京交流会和珍珠奶茶帮上给大家分享了《揭秘 html5和CSS3》,
PPT在这里:
html5code.net' title='html5模板网'>http://docs.google.com/present/view?id=dhpdbrp_51hf88z8g8
HTML 5草案的前身名为Web Applications 1.0,于2004年被WHATWG提出,于2007年被W3C接纳,并成立了新的HTML工作团队。在2008年1月22日,第一份正式草案发布。 HTML 5是近十年来Web开发标准最巨大的飞跃。和以前的版本不同,HTML 5并非仅仅用来表示Web内容,它的新使命是将Web带入一个成熟的应用平台,在HTML 5平台上,视频,音频,图象,动画,以及同电脑的交互都被标准化。那么我们来看一下html5的技术概览有哪些:
html5新增了很多多媒体和交互性元素如video, audio,在HTML4当中如果要嵌入一个视频或是音频的话需要引入一大段的代码,还有兼容各个浏览器,而html5只需要通过引入一个标签就可以,就像img标签一样方便。在页面布局和内容实现方面html5新增了很多结构化标签元素以及块级及语义元素,如果你要用HTML表示一个文件的上传进度条,在 html5中你可以用progress这个元素来表示,它有一个value属性描述了已经完成了多少任务,还有一个属性max描述了这个任务一共需要多少,还可以通过DOM接口得到这个进度条的position属性(只读),也就是任务完成的百分比。Youtube在html5技术上已经做了一个尝试,http://www.youtube.com/html5(需要翻墙) 是用html5做的一个DEMO,从整个页面源代码来看,非常简洁。当然html5也对一些元素新增了一些属性,如input和textarea的placeholder属性,相当于输入框的输入提示,script有一个async属性会影响脚本的加载和执行。对于所有的HTML共有的属性我们通常把它称作是“全局属性”,如class, id, tabindex, title,html5也新增了一些全局属性,如contenteditable, contextmenu, hidden等属性。html5还增加了对于微数据的支持,如html5新增的item, itempro, subject等属性。
当然html5也移除了一些表示页面展现的元素,如font, center, strike等,这些本应该是CSS来做的,所以还是很好理解的,也移除了一些影响网站可访问性的元素如frame, frameset, noframe以及一些不常用的元素如acronym,而采用abbr来表示缩写。html5还移除了一些影响客户端兼容性的HTML熟悉,如link的rev属性,td的scope属性;html5也移除了一些表示页面展现的属性如一些元素的align,bgcolor属性。
html5 提供了强大的控件类型如url, email, date, tel等,强大的约束属性,如required表示必填,文件上传的accept属性,以及一些表单重复元素模型的支持,html5在提交表单的时候还可以设置提交的方式为XML提交方式,这样服务器端接收到的数据将是XML格式,html5的表单被定义为“Web Forms 2.0”,目前opera9.5+对Web Forms 2.0的支持较为完美。
html5在DOM LEVEL 2 HTML方面很多都是继承自HTMLDocument的接口,当然html5在DOM上也有一些值得注意的新成员,如:支持 getElementsByClassName,可以根据class类名选择元素,getSelection()将会返回当前选中的对象,在选择器上面有两个方法querySelector和querySelectorAll可以根据 css选择符来获取要查询的元素,相当于YUI3中的Y.one和Y.all。
html5在Javascript上面新增了哪些API呢?
html5让你心动了吗?那么html5什么时候会成为标准呢?据说要等到2022年,这有一个很有意思的网站http://ishtml5readyyet.com/告诉你还有多少天html5会真正到来。
CSS3对于我们Web开发者来说不只是新奇的技术,更重要的是这些全新概念的web应用给我们带来更多无限的可能性,也极大地提高了我们的开发效率。我们将不必再依赖图片或者Javascript 去完成圆角、多背景、用户自定义字体、3D动画、渐变、盒阴影、文字阴影、透明度等提高Web设计质量的特色应用。
利用属性选择器我们可以根据属性值的开头或结尾很容易选择某个元素,利用兄弟选择器可以选择同级兄弟结点或紧邻下一个结点的元素,利用伪类选择器可以选择某一类元素,CSS3在选择器上的丰富支持让我们可以灵活的控制样式,而不必为了选择某些元素给他们加上如”odd”或”even”这样的类名。
有一个调查说开发者最期待CSS3的特性是什么,最后票数最多的是“圆角”,不错,圆角这个功能可以给我们这些前端工程师省去很多时间和精力去切图拼凑一个圆角。CSS3还支持阴影,盒阴影以及文本阴影,渐变,之前你可能是通过IE的滤镜看到过,其实CSS3实现起来更加方便。@font-face可以自定义字体,如果用传统的方式,VD把一个带有特殊文字的设计图给你让你来实现的话你可能会把它做成一个图片,而通过CSS3用@font-face就可以了。CSS3对于连续文本换行也新增了一个属性word-wrap,你可以设置其为normal(不换行)或break-word(换行),这解决了连续英文字符出现页面错位的问题,也不需要后端去截取这个连续字符。使用CSS3你还可以给边框加背景,这在iphone上也有应用的例子。CSS3在背景上支持背景调整大小,如当你用一张大图要做一个小的元素背景时可以通过background-size来调整背景图的大小来适应这个元素。CSS3支持opacity, rgba和hsl/a, opacity和rgba的区别是opacity设置的透明对其内容也会产生影响,而rgba只对你应用的元素产生影响。CSS3在布局上对于盒模型提供了支持,可以设置box-sizing为content-box或border-box,应用为content-box就是正常的模式,而应用为border-box和IE5.5的盒模型很相似,即元素的宽度包括border和padding,这个在布局上可能会比较方便,不用去管到底这个元素会占用多大的宽度,而用content-box还需要手动计算一下这个元素实际占用的宽度。
CSS3支持的动画类型有:transform(变换)、transition(过渡)和animation(动画)。你可以对特定的属性设置transition,transiton和animation的区别不大,animation的动画是自己定义的,面向的更多的是脚本开发者,往往更加复杂。
为了使用大部分CSS3特性,我们不得不与原来的属性一起使用生产商专有扩展。原因是直到现在,大部分浏览器只支持部分CSS3属性。最常见的私有属性是用于Webkit核心浏览器的(比如, Safari), 它们以-webkit-开始,以及Gecko核心的浏览器(比如, Firefox),以-moz-开始,还有Konqueror (-khtml-)、Opera (-o-) 以及Internet Explorer (-ms-)都有它们自己的属性扩展(目前只有IE8支持-ms-前缀)
我觉得首先是遵循一个优雅降级的原则,比如前面谈到的圆角,我们可以针对Firefox和Safari等这些支持圆角的浏览器中应用CSS圆角,而那些不支持CSS圆角的浏览器则显示为直角。其次就是对于不支持CSS3的浏览器可以使用Javascript来实现,如CSS3任何元素支持:hover伪类,我们就可以对只支持链接:hover的IE6用JS来实现。最后就是在向用户或老板推广新技术的同时也要关注他们的目标与可行性,不能为了技术而技术。