posts - 127, comments - 26, trackbacks - 41, articles - 2
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2008年3月21日

制作表单的时候,实现鼠标悬停交互效果有多种方法:
1、在xhtml中直接写入onmouseover、onmouseout脚本就可以实现了,但这样就违背了web标准所倡导的内容、表现相分离的原则。以后若要对此进行修改也将会很繁琐。这样直接写入xhtml也会让页面代码增加,如果只是一个input输入框或许是无所谓的,如果是几十个几百个,增加的字节数就很宠大了。
  2、在xhtml中加入小脚本,鼠标经过时可以切换CSS。具体内容请看这篇文章。虽然实现了内容、表现相分离,以后的修改也会很方便。但同样会让页面代码增加。

  我们有没有更好的办法来实现输入框input样式悬停交互的效果呢?
  我们今天就讨论这样的方法,直接在CSS文件中写入悬停交互效果的小脚本。不但实现了内容与表现分离,而且使xhtml代码减小,促进了代码重用、更加的优化。
  这一方法的原理,主要是应用CSS的expression,关于expression的更多介绍,请看这篇文章。

input {star : expression(
onmouseover=function(){this.style.borderColor="#060"},
onmouseout=function(){this.style.borderColor="#c00"})}

posted @ 2008-03-21 09:19 李海 阅读(53) | 评论 (0)编辑

三栏布局是目前最常见的网页布局,主要页内容放在中间一栏,边上的两栏放置导航链接之类的内容。基本布局一般是标题之下放置三栏,三栏占据整个页面的宽度,最后在页的底端放置页脚,页脚也占据整个页面宽度。

绝大多数网页设计者都熟悉传统的网页设计技术,用这些技术可以生成带有表格、创建固定宽度布局或者“液态”(它可以根据用户浏览器窗口宽度自动伸缩)布局的网页。

现在,我们都开始抛弃基于表格的布局技术,许多网络设计者正在从XHTML标记和CSS格式这一新范例中寻找创建三栏布局的方法。用绝对定位的方法从CSS中得到固定宽度的布局并不困难;但是得到液态布局就有点困难了。因此,本文介绍一种用CSS的float和clear属性来获得三栏液态布局的方法。

基本方法

基本的布局包含五个div,即标题、页脚和三栏。标题和页脚占据整个页宽。左栏div和右栏div都是固定宽度的,并且用float属性来把它们挤压到浏览器窗口的左侧和右侧。中栏实际上占据了整个页宽,中栏的内容在左、右两栏之间“流淌”。由于中栏div的宽度并不固定,因此它可以根据浏览器窗口的改变进行必要的伸缩。中栏div的左侧和右侧的填充(padding)属性保证内容安排在一个整齐的栏中,甚至当它伸展到边栏(左栏或者右栏)的底端也是这样。

三栏布局的一个例子

请看看用本文所介绍的技术进行三栏布局的例子。这个例子用鲜艳的颜色来区分布局的各个div。下面是XHTML代码:

<body>
<div id="header">
<h1>Header</h1>
</div>
<div id="left">
Port side text…
</div>
<div id="right">
Starboard side text…
</div>
<div id="middle">
Middle column text…
</div>
<div id="footer">
Footer text…
</div>
</body>

下面是CSS代码:

body {
margin: 0px;
padding: 0px;
}

div#header {
clear: both;
height: 50px;
background-color: aqua;
padding: 1px;
}
div#left {
float: left;
width: 150px;
background-color: red;
}
div#right {
float: right;
width: 150px;
background-color: green;
}
div#middle {
padding: 0px 160px 5px 160px;
margin: 0px;
background-color: silver;
}
div#footer {
clear: both;
background-color: yellow;
}

代码说明

HTML代码中各部分出现的顺序是非常重要的。左栏和右栏div必须在中栏之前出现。这样才可以让这两个边栏浮动到它们的位置上(屏幕两侧),并让中栏的内容将“流”入它们之间的空间。如果浏览器在一个或者两个边栏div之前先发现中栏,那么中栏将占据屏幕的一侧或者两侧,这样浮动的部分就会跑到中栏的下面而不是中栏的旁边了。

div#header和div#footer样式(style)中的clear:both申明用来确保这浮动部分不会占据标题和页脚的空间。div#header样式中的padding:1px申明用来消除页头背景色中的异常边,如果padding设置为零,那么在Netscape浏览器中就会看到这个异常。

div#left样式中的float:left申明是用来把左栏挤压到左侧。width:150px申明用来设置栏的固定宽度,不过你也可以把它的宽度设置为其它具体值。类似的,div#right样式中的float:right申明用来把右栏div挤压到右侧。在本例中,float把左栏和右栏完全挤压到浏览器窗口的左边缘和右边缘。然而,如果这些div被其它div包含,那么float将会把它们挤压到包含它们的div的边缘。

在div#middle样式中,clear申明允许中栏的内容“流淌”在两个边栏之间。padding:0px 160px 5px 160px申明设置了到左栏和右栏的填充,这样允许150象素宽度的栏div,在加上10象素的间距。

这个例子非常粗糙和简单,但是它很好的演示了用浮动div来创建三栏液态布局的边栏这一基本技术。

转自:伊图教程网[www.etoow.com]

posted @ 2008-03-21 09:04 李海 阅读(81) | 评论 (0)编辑

Adobe正在为即将到来的Adobe Flex 3.0而奋战,预计2008年初就会发布。Adobe Flex是一套开发富网络应用的工具,这些应用可以在浏览器里用Flash Player运行,也可以在桌面上用Adobe AIR运行。InfoQ采访了Adobe的技术传教士James Ward,以了解这个即将到来的新版本。你可以在Ward的博客上了解到更多信息:jamesward.org

Ward首先说明了Flex 3 SDK和Flex Builder 3里新增的内容:

从我们的第一个公开测试版可以看到Flex 3有了显著的变化,无论是免费的Flex 3 SDK还是Flex Builder 3。

其中最值得注意的变化包括:
  • Flex Builder中新的内存和性能分析器
  • 支持创建Adobe Integrated Runtime(AIR)应用
  • 重构了ActionScript类的名字
  • 使用Persistent Framework Cache时,显著改善程序首次运行的启动时间
  • Flex Builder中设计视图的大量改进

……对改变的详细说明:

Flex 3最出色的新特性之一是Persistent Framework Cache。有了Persistent Framework Cache,如果用户在访问你的RIA之前已经访问过其他Flex应用,他们的Flash Player缓存里面很可能已经有了495KB的Flex Framework。这样用户需要下载的程序大小就会显著减少。在许多应用中,初始程序下载的大小会减少到低于100KB。

Flex Builder 3的另一项优秀特性是内存和性能分析器。通过它你可以清晰地看到哪里发生了内存泄露,或者哪里是性能的瓶颈。

除了Advanced DataGrid等新组件和Charting组件的改进之外,还对Flex进行了大量的功能性改进。包括无障碍访问支持、运行时本地化,以及内建的深度链接支持(浏览器后退、书签等等)。

要了解Flex 3计划实现的所有特性,请查看以下路线图:

Flex 3 SDK路线图:http://flexwiki.adobe.com/confluence/display/ADOBE/Flex+3+Planning

Flex Builder 3路线图:http://flexwiki.adobe.com/confluence/display/ADOBE/Flex+Builder+3+Planning

InfoQ问到Flex 3的这些变化对框架的开源化有什么影响,以及开源化工作的进展 :

Flex SDK的开源化工作进展得很顺利。像Flex SDK这么大型的项目要进行开源时间上的投入相当可观。就跟Sun JDK一样,这项工作不可能一晚上就完成。我们的目标是在Flex 3发布的同时将Flex SDK完全开源。其中有些任务已经完成了。我们在Google Groups上有个邮件列表,名为“flex-open-source”,用来讨论开源工作的相关事宜。我们已经把Flex的整个bug数据库(甚至包括历史上的bug)都转移到了一个公开的JIRA系统上。我们也公开了Flex的路线图:http://bugs.adobe.com/confluence/display/ADOBE/Home

谈谈Flex 3的许可协议:

Flex 3 SDK将是免费的,很可能采用MPL许可协议。我们也为不能捆绑MPL软件的OEM厂商提供双协议。我们还没公布Flex Builder 3的许可情况。

随后我们询问了Ward对Silverlight和Microsoft进入RIA市场的看法:

Microsoft还没有真正进入RIA市场。他们正在围绕网上的视频应用构建一个新平台。这只是RIA平台的一个方面。不过Silverlight高质量的VC1视频编解码器的确促使我们提早发布更高质量的H.264编解码器。我们还加入了硬件的视频缩放来支持在Flash里全屏播放1080p的视频。

他还详细比较了Flex和Silverlight之间的差异,以及为什么一般开发者应该选择Flex:

RIA的一个重要方面是组件库,这方面我们的Flex比Silverlight领先了好几年。用Silverlight的话,你差不多要从零开始打造整个UI。Flex社区和Adobe提供了数以百计的支持皮肤和样式、可扩展的组件,诸如DataGrid、Accordion、TabNavigator、Chart。其他我们领先了好几年的方面还包括内建的无障碍访问支持、国际化、深度链接、单元测试、自动化测试、数据绑定、特效、拖放管理,等等数不清的构建RIA必需的东西。要知道Flex包括了那些组件请参阅Flex组件参考文档 ,也请试一下Flex 2组件浏览器Flex 2样式浏览器。要查看由社区提供的组件请查阅flexboxFlex Component Exchange

开发Silverlight的话,你可以用Expression Blend来生成XAML标记,然后直接用在你的Silverlight项目里面。而开发Flex的话,设计师可以使用Photoshop、Illustrator和Flash CS3这样的工具,然后将界面资源导出为二进制对象(位图或swf),然后开发者在Flex里把这些资源当作皮肤或组件来使用。

Flex和Silverlight的最大差别之一是接受度。互联网上90%的PC已经安装了Flex应用所需的运行时。Flash Player是世界上最快被接受,也安装得最多的软件。Silverlight的接受度很难跟这种势头相提并论。

就目前开发RIA来说,没有什么选择能比得上Flex。它有一个免费且即将开源的SDK,基于Eclipse的出色开发工具,还有一个庞大的社区。显而易见Flex背后有一股强大的推动力。

Adobe Integrated Runtime(AIR)也是一个热门话题,因此InfoQ也询问了Flex 3与AIR的关系:

Adobe Integrated Runtime(AIR)是Flex、Flash、Ajax和HTML应用的桌面运行时。它让开发者得以运用已有的技能和很多已存在的代码来构建在桌面上运行的应用程序,并获得额外的功能。AIR应用可以访问系统资源、与系统的拖放功能相集成、显示系统通知,并且把数据保存到内嵌的数据库。开发者用Flex 3 SDK和Flex Builder 3可以很容易地构建AIR应用。AIR还让开发者能够构建出更个性化的应用以及离线应用。

有一些大企业,包括eBay和Salesforce已经在用AIR。AIR的热门主要是因为很多应用都需要浏览器所不能提供的功能和定制能力。AIR也是用很多开源技术来构建的,包括Mozilla Tamarin(Flash Player的虚拟机)、Webkit(Safari的HTML引擎)和SQLLite。

InfoQ请Ward澄清一下为什么有了Flex Builder还要推出Flash CS3的Flex扩展:

Flash CS3仍然是设计师创作Flash内容的主要工具,而Flex是开发者构建基于Flash的应用的主要工具。在CS3发布后不久,我们在labs.adobe.com上发布了Flex Component Kit for Flash CS3,这是为了让设计师在建造RIA的时候能合作得更好。现在设计师们可以在CS3里创作界面资源,然后把它们交给Flex开发者用在程序里面。你可以在这里观看一个使用Component Kit的逐步演示:http://adobedev.adobe.acrobat.com/p75214263/

Ward还说明了Flex 3对Flash Player运行时的要求:

Flex 3对运行时的要求跟Flex 2一样,Flash Player 9。不过开发者可以指定要求更新的版本,如果他们希望利用Flash Player的新特性的话。Persistent Framework Cache和H.264支持就需要最新版本的Flash Player 9,目前这个版本还处于Beta阶段。开发者可以检测用户的Flash Player版本,然后决定不使用新特性或者执行一次新版本的快速安装。快速安装只需要一次点击和1MB的下载。但怎样和如何使用旧版Flash Player 9不具备的特性,完全取决于开发者。

新版Flash Player需要9个月来达到80%的接受度,12个月来达到90%的接受度。你在Emmy Huang(Flash Player产品经理)的博客上可以找到对Flash Player接受度统计数据的详细分析:http://weblogs.macromedia.com/emmy

作为结束,Ward鼓励诸位去labs.adobe.com把玩一下Flex 3 Beta。如果发现任何bug请报告到bugs.adobe.com/flex。最后他向正准备开始Flex之旅的开发者们提供了FlexcodersMXNA作为帮手。

posted @ 2008-03-21 09:00 李海 阅读(146) | 评论 (0)编辑