??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲视频在线免费观看,国产a v无码专区亚洲av,亚洲国产精品成人网址天堂http://www.tkk7.com/ltc603/category/14107.html<font size="3">学无止境</font> <br> <script type="text/javascript" src="http://wujunlove.googlepages.com/bigstaticeyes.js"></script>zh-cnTue, 27 Feb 2007 17:54:54 GMTTue, 27 Feb 2007 17:54:54 GMT60JSP、JAVA、数据库~码ȝhttp://www.tkk7.com/ltc603/archive/2006/08/17/64056.html阿成阿成Thu, 17 Aug 2006 02:09:00 GMThttp://www.tkk7.com/ltc603/archive/2006/08/17/64056.htmlhttp://www.tkk7.com/ltc603/comments/64056.htmlhttp://www.tkk7.com/ltc603/archive/2006/08/17/64056.html#Feedback0http://www.tkk7.com/ltc603/comments/commentRss/64056.htmlhttp://www.tkk7.com/ltc603/services/trackbacks/64056.html<%@ page contentType="text/html;charset=........"%>
<%@ page language="java" pageEncoding="........"%>
pageEncodingQThe encoding used for the JSP page file, as well as
the response charset if no charset is specified by contentType.

If this attribute is omitted, but a charset is specified for contentType,
that charset is also used of the page; if contentType doesn't specify a
charset, ISO-8859-1 is used for a regular JSP page, and UTF-8 is used
for a JSP Document.

阿成 2006-08-17 10:09 发表评论
]]>
Ajax~何行—来看看大象本nhttp://www.tkk7.com/ltc603/archive/2006/08/16/63950.html阿成阿成Wed, 16 Aug 2006 09:09:00 GMThttp://www.tkk7.com/ltc603/archive/2006/08/16/63950.htmlhttp://www.tkk7.com/ltc603/comments/63950.htmlhttp://www.tkk7.com/ltc603/archive/2006/08/16/63950.html#Feedback0http://www.tkk7.com/ltc603/comments/commentRss/63950.htmlhttp://www.tkk7.com/ltc603/services/trackbacks/63950.html随着2005qAjaxq个名词的流行,关于Ajax技术本w的争论׃直喋喋不休。有些hU技术而激动,兴奋得投入到 Ajax的大潮中。有些h对Ajax大ؓ诟病Q认为其不过是一U炒作,其类似技术早已实玎ͼ毫无新意。也有些持一U观望的状态,{到大势所时Q才q? 行投入?

  MQ一个新兴事物的诞生之初Q有不同的观点进行争论是很正常的现象。作者作为支持Ajax的一z,对这个新生事物,可以说是倾注了很多精 力。从最初的不懂Q到略知一二,再到深刻认识Q发现Ajax背后隐藏的趋势,多少有些亢奋。凭此文Q希望能够把自己的观点,表达一二?/p>

  Ajax?005q异军突P伴随着Web2.0Q成Z本年度最为流行的名词之一。很多h看到q样一门技术,可能会很奇怪,感到很突兀?/p>

  •   Z么会H然产生q样一U技?
  •   cM的技术早有QAjax有什么突?
  •   Z么这U技术如此盛行,q被某些为是一U趋势呢?

  如果你仅仅试图从Ajax本nd找这些问 题的{案Q你可能会一无所莗如果你仅能够看到Ajax本nQ那如同瞎子摸象、管中窥豹,不能领略全局Q当然也不能领会其意义。相反,如果你能够从一? 更好的高度上L考Ajax所带来的好处,把Ajax攑ֈ一个相关的语境中去体会Q你׃有另一番发现?/p>

  与Ajax相连的,q有q么两个名词—RiA和Web2.0?/p>

  什么是RiA?

  RiA是Rich Internet Application的羃写?/p>

  “Rich”代表功能强大,高交互性,高用户体验?/p>

  “Internet”代表方ѝ应用程序部|方便,用户使用方便。跨pȝQ跨语言?/p>

   其实RiA实际上一U基于Web的C/S架构(我称之ؓC/S/B)。由于有一个客LQ所以RiA应用可以提供强大的功能,让用户体验到高交互性,? 用户体验。同ӞRiA又是ZInternet览器的应用Q所以,用户使用RiA非常方便。理x_用户使用RiA应当像现在用普通网一h ѝ用户不需要安装Q何的客户端YӞ只要拥有览器。当用户通过览器发出指令,希望q行某种RiA应用E序Ӟ一切都会飞快的建立在客L机器上,? 像你在Web上点M个页面一栗?/p>

  目前Q典型的RiA的代表有如下几种技?

  •   MS ClickOnce
  •   Sun Java Web Start
  •   Adobe Flash
  •   Ajax

  应该_各大厂商均看CRiA好的未来,UL行动h希望分一杯羹。只有Ajax技术在q些技术中有些特立独行?/p>

   Ajaxq不属于M厂商Q相反,Ajax代表的是一U开源的风格。由于Ajax所采用的各U技术要么是Z标准的,要么也没有被各大厂商所垄断Q所? Ajax真正是一个^民化的技术,谁都可以用它。同Ӟ׃Ajax采用的各U技术基于现有的览器,所以兼Ҏ最好。用Ajax技术徏立的|站Q目前均 可以直接q行Q不需要Q何客L的改变?/p>

  其他的各U技术与Ajax比较hQ目前或多或的q有些兼Ҏ的问题。虽然这些技术功能强 大,但是目前它们应用hqƈ不是很方ѝ不q可以看刎ͼ随着旉的推q,怿Q未来还是属于功能更强大的一斏V除非Ajax本n的功能有所加强。这P qJavascript的功力了?/p>

  RiA实际上代表的是一U回归?/p>

  最开始流行的C/Sl构Q因为功能强大,而且范围有限Q不需要害怕部|问题。之后随着用户的增加,部v问题来大Q导致B/S模式的生?/p>

   B/S模式虽然功能有限Q但是却使用非常方便。从长期来看Q方便的作用q是非常巨大的。功能可以不断增强,但是如果不方便,吓走所有的客户。实际上? 察一下Web的发展,׃发现Q如今百花齐攄Web开发技术,其目的都是ؓ了提高B/S架构的交互性,让他更能适应需要而已?/p>

  不过Q? 随着目前来多的应用需要一直到Web上,Zl于发现B/S模式的缺炏V各U技术上的硬性问题均限制着B/S模式的发展。从最基本的请?相应模型Q? HTTP协议Q到所有负载均q行在服务器上的事实Q让我们q切需要一U方式来提高Web的交互能力,但同时又不能丧失它的使用方便性?/p>

  于是QRiA诞生了。RiA是Z览器的C/Sl构。它部分的服务器负载{Ud客户端,同时又不会׃用和部v上的方便性。所以说QRiA是一ơ回归,只不q这ơ回归我们没有原C动,相反Q我们找C最佳结合点。如?所C?

  ?、RiA是一U回?/p>

  但是Q我们知道了RiA是一U回归。可是,Z么RiA会盛行呢?q就需要我们把RiA攑ֈWeb2.0的环境中L考?/p>

  什么是Web2.0?

  目前Q对于Web2.0q没有明的定义。在《What Is Web 2.0》这文章里Q对Web2.0应用所需要具备的各种特点q行了ȝQƈ且提了出来?/p>

  •   Services, not packaged software, with cost-effective scalability
  •   Control over unique, hard-to-recreate data sources that get richer as more people use them
  •   Trusting users as co-developers
  •   Harnessing collective intelligence
  •   Leveraging the long tail through customer self-service
  •   Software above the level of a single device
  •   Lightweight user interfaces, development models, AND business models

  虽然有这么多Ҏ,但是Web2.0背后最本质的东西就只有两点:

  1.   软g向服务化发展Q向q_化发?
  2.   Web由原来“Publisher”的观点Q发展成“Participation”的观点?/li>

  正是Zq两点,Web2.0时代q切需要一U用方便,高交互性的应用E序Q而此重QQ就落在了RiAw上?/p>

  通过?Q你可以看到由Web1.0到Web2.0的变化?/p>

  ?、Web1.0向Web2.0的演?/p>

   q是在《What Is Web 2.0》那文章里Q勾勒出了一qWeb2.0的Meme Map。这张图的中心代表的是Web2.0的核心概念,而旁ҎWeb2.0概念的g伸。在q张NQ我试图勑֋Z些迫切需要RiA的特征点。实际上Q? 你可以看刎ͼ在Web2.0的Meme Map里,到处充满了RiA的倩媄。如?所C?

  ?、Web2.0中的RiA倩媄

  看看大象本n

  介绍了这么多Q让我们ȝ一下?/p>

  随着软g和互联网的发展,需求导致一U新的计模型出现。这U计模型的特色是QY仉渐的有前台推向后台Q以q_的方式提供服务,让用户在前台表演?/p>

  计算模型的变化,DWeb2.0的出现。尽仅仅是开始,但是Q从Web2.0的n上你依然可以依稀看到q种变化的趋ѝ不qWeb2.0要想有如此变化,要想让用户参与进来,必L供一个用户功能强大的Q用方便的用户接口(UI)?/p>

  于是Q需求导致了RiA的出现。RiA提供了一个满需求的用户接口Q得大家可以参与到Web2.0中来。但是,RiA要想应用hQ可能还需要一个过E?/p>

  于是Q几URiA技术中Q目前用v来最合适的Ajax凸现出来。正是由于Ajax的兼Ҏ,让他走到了历史的前台。有了它Q我们开始了一场新的革命?/p>

  ?昄了这些名词之间的关系。把它们攑֜一LQ也怽会发C一L东西?/p>

  ?、Ajax、RiA与Web2.0

  未来的样?/strong>

  当我走在北京的街_我在惻I如果我有一台智能手机,可以讉K癑ֺ的map服务Q也许我׃会像现在q样担心q\了。实际上Q类似的例子q有很多。如果Web2.0的明天已l到来,我们的生zM发生很多改变?/p>

  我不知道Q尽我很想知道。如果我真的能够看到未来的样子,再具备一些必要的执行力的话,也许我就是下一个比。不q,看到目前的这一点,已经令我非常兴奋。不怎么P我们都有权利惌。也有权利,用我们的手去改变世界?/p>

  怎么?开始吧?Let’s do it!



阿成 2006-08-16 17:09 发表评论
]]>
span和div的区?/title><link>http://www.tkk7.com/ltc603/archive/2006/08/16/63952.html</link><dc:creator>阿成</dc:creator><author>阿成</author><pubDate>Wed, 16 Aug 2006 09:09:00 GMT</pubDate><guid>http://www.tkk7.com/ltc603/archive/2006/08/16/63952.html</guid><wfw:comment>http://www.tkk7.com/ltc603/comments/63952.html</wfw:comment><comments>http://www.tkk7.com/ltc603/archive/2006/08/16/63952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/ltc603/comments/commentRss/63952.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ltc603/services/trackbacks/63952.html</trackback:ping><description><![CDATA[SPAN ?DIV 的区别在于,DIV(division)是一个块U元素,可以包含D落、标题、表|乃至诸如章节、摘要和备注{。而SPAN 是行内元素,SPAN 的前后是不会换行的,它没有结构的意义Q纯_Ҏ应用样式Q当其他行内元素都不合适时Q可以用SPAN? <p>  效果Q?/p><p>  <span>SPAN标记有一个重要而实用的Ҏ,卛_什么事也不会做Q它的唯一目的是围绕你的HTML代码中的其它元素Q这样你可以ؓ它们指定样式了。在此例中,<span>标识W允怽一个段落分成不同的部分?/p><p>  q有一个标识符hcM的功能,<div>DIV也被用来在HTML文g中徏立逻辑部分。但?lt;div>SPAN不同Q?lt;div>工作于文本块一U,它在它所包含的HTML元素的前面及后面都引入了行分隔?/p><img src ="http://www.tkk7.com/ltc603/aggbug/63952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ltc603/" target="_blank">阿成</a> 2006-08-16 17:09 <a href="http://www.tkk7.com/ltc603/archive/2006/08/16/63952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax各种资源http://www.tkk7.com/ltc603/archive/2006/08/16/63948.html阿成阿成Wed, 16 Aug 2006 09:08:00 GMThttp://www.tkk7.com/ltc603/archive/2006/08/16/63948.htmlhttp://www.tkk7.com/ltc603/comments/63948.htmlhttp://www.tkk7.com/ltc603/archive/2006/08/16/63948.html#Feedback0http://www.tkk7.com/ltc603/comments/commentRss/63948.htmlhttp://www.tkk7.com/ltc603/services/trackbacks/63948.html2?a >http://www.chinaren.com/ 大家都去q吧Q首顶部搜索条“学校、班机、同学、热贴、网c音乐、图片”这些标{,点一个下面的?/p>

容就换成与所Ҏ索项有关的,q是如何实现的呢Q我要做q个功能

一.资源cȝ?/p>

1,国内|站

1)Ajax中国(推荐)

一个专业的ajax技术网?分类清晰,有大量的电子版教E?以及AJAX源码下蝲!

www.okajax.com

2)ajaxcn.org

李琨老师的blog。李?《ajax实战》译?

www.ajaxcn.org

3)www.ajaxw3c.com

2,国外|站

1)、Ajax的诞?/p>

Ajax:ANewApproachtoWebApplications

www.adaptivepath.com/publications/essays/archives/000385.php

2)、AJAXMatters

www.ajaxmatters.com

关于Ajax技术一个信息量非常大的|站Q有点像Ajax世界中的TSS?/p>

3)、AJAXPatterns

与AJAX设计模式相关的资源?/p>

www.ajaxpatterns.org

www.softwareas.com/ajax-patterns

4)?a >http://www.ajaxian.com

?热门文章

1.什么是AJAX

www.okajax.com/info/net/20060510.html

2.ajax技术简?/p>

www.okajax.com/info/basic/200604654.html

3.ajax.net

www.okajax.com/info/basic/200604556.html

www.okajax.com/info/tech/200605589.html

weblogs.asp.net/mschwarz/archive/2005/04/11/399893.aspx(英文)

?ajax相关下蝲Q电子书教程/源码Q?/p>

1.Ajax基础教程电子?/p>

www.okajax.com/info/bookdown/200604950.htm

2.《AJAX实战》ajaxinaction电子?/p>

www.okajax.com/info/bookdown/200604366.htm

3.AJAX开发简?/p>

www.okajax.com/info/bookdown/20060538.htm

4.AJAX版CD理pȝ(jsp)

www.okajax.com/info/codedown/200604327.htm

5.Alexa查询pȝ(Xmlhttp+Ajax)

www.okajax.com/info/codedown/200604982.htm

6.ASP.NET+AJAX解决|页打开{待问题

www.okajax.com/info/codedown/200604166.htm

7.Ajax技术简?ajaxdemo)

www.okajax.com/info/codedown/200604576.htm

?ajax相关图书

1.《Ajax实战?目前Ajax领域最为全面深入的一本著?

www.china-pub.com/computers/common/info.asp?id=28433

2.《Ajax基础教程》(亚马逊计机榜首图书Q国内第1本Ajax图书Q中文pdf版)

http://www.devworld.cn/art2527.aspx

3.《Ajax修炼之道-Web2.0入门》(Ajax从小工到专家的首选图书)

www.china-pub.com/computers/common/info.asp?id=29430

4.《征服Ajax+Lucene构徏搜烦引擎?/p>

www.china-pub.com/computers/common/info.asp?id=29996

5.《征服Ajax--Web2.0快速入门与目实践Q?netQ?/p>

www.china-pub.com/computers/common/info.asp?id=29995

6.《Ajax开发精?-概念、案例与框架?/p>

www.china-pub.com/computers/common/info.asp?id=30006

7.AJAX——新手快车道
           
http://www.sp1.cn/ajax/info/bookdown/200605663.htm

8,Ajax 探密 (Ajax Hacks )

http://www.sp1.cn/ajax/info/bookdown/20060540.htm

9.Ajax基础教程电子?br />           
http://wh.wlha.com.cn/bbs/pic/ajaxbasic.rar
               

?部分技术文?/p>

www.dragonson.com/doc/ajax.html

Ajax内部交流文档

info96.k12studio.com/~nio/comments.php?id=242_0_1_0_C

单地对Ajaxq行描述介绍

www.adaptivepath.com/publications/essays/archives/000385.php

Ajax:ANewApproachtoWebApplications

jibbering.com/2002/4/httprequest.html

UsingtheXMLHTTPRequestobject

developer.apple.com/internet/webcontent/xmlhttpreq.html

DynamicHTMLandXML:TheXMLHttpRequestObject

del.icio.us/popular/ajax

www.fiftyfoureleven.com/resources/programming/xmlhttprequest/examples

XMLHttpRequest&AjaxWorkingExamples

www.xml.com/lpt/a/2005/02/09/xml-http-request.html

VeryDynamicWebInterfaces

www.standards-schmandards.com/index.php?2005/03/01/16-ajax-and-accessibility

AJAXandAccessibility

www.xml.com/lpt/a/2005/05/11/ajax-error.html

ErrorsandAJAX

www.softwareas.com/ajax-patterns

AJAXPatterns:DesignPatternsforAJAXUsability

www.backbase.com/download/Whitepaper%20Backbase%20AJAX%20and%20Beyond.pdf

WhitepaperBackbaseAJAXandBeyond

www.ajaxpatterns.org/index.php?title=Main_Page

AJAXpatterns

www.onlamp.com/pub/a/onlamp/2005/05/19/xmlhttprequest.html

六、补充内?/p>

在增加一?有些基础教程,虽然不多Q但是都蛮有用的!
http://www.sp1.cn/ajax/info/basic/index.htm 

Ajax & XMLHttpRequset
http://tech.acnow.net/Html/Web/ASP/ASP_Skill/2006-6/15/163322869.shtml

了解Ajax框架
http://kb.csdn.net/java/Articles/200606/0964add7-c017-484e-9652-5d85030222c5.html 

标题 实现无刷新闪烁二U联动下拉菜?
http://www.seaskyer.net/Index/Catalog11/266.html

标题 Ajax研究结
http://www.seaskyer.net/Index/Catalog11/224.html

阿成 2006-08-16 17:08 发表评论
]]>
Ajax: A New Approach to Web Applicationshttp://www.tkk7.com/ltc603/archive/2006/08/16/63949.html阿成阿成Wed, 16 Aug 2006 09:08:00 GMThttp://www.tkk7.com/ltc603/archive/2006/08/16/63949.htmlhttp://www.tkk7.com/ltc603/comments/63949.htmlhttp://www.tkk7.com/ltc603/archive/2006/08/16/63949.html#Feedback0http://www.tkk7.com/ltc603/comments/commentRss/63949.htmlhttp://www.tkk7.com/ltc603/services/trackbacks/63949.htmlby Jesse James GarrettQ?a >http://www.adaptivepath.com/publications/essays/archives/000385.phpQ?/h3>

February 18, 2005

If anything about current interaction design can be called “glamorous,? it’s creating Web applications. After all, when was the last time you heard someone rave about the interaction design of a product that wasn’t on the Web? (Okay, besides the iPod.) All the cool, innovative new projects are online.

Despite this, Web interaction designers can’t help but feel a little envious of our colleagues who create desktop software. Desktop applications have a richness and responsiveness that has seemed out of reach on the Web. The same simplicity that enabled the Web’s rapid proliferation also creates a gap between the experiences we can provide and the experiences users can get from a desktop application.

That gap is closing. Take a look at Google Suggest. Watch the way the suggested terms update as you type, almost instantly. Now look at Google Maps. Zoom in. Use your cursor to grab the map and scroll around a bit. Again, everything happens almost instantly, with no waiting for pages to reload.

Google Suggest and Google Maps are two examples of a new approach to web applications that we at Adaptive Path have been calling Ajax. The name is shorthand for Asynchronous JavaScript + XML, and it represents a fundamental shift in what’s possible on the Web.

Defining Ajax

Ajax isn’t a technology. It’s really several technologies, each flourishing in its own right, coming together in powerful new ways. Ajax incorporates:

The classic web application model works like this: Most user actions in the interface trigger an HTTP request back to a web server. The server does some processing ?retrieving data, crunching numbers, talking to various legacy systems ?and then returns an HTML page to the client. It’s a model adapted from the Web’s original use as a hypertext medium, but as fans of The Elements of User Experience know, what makes the Web good for hypertext doesn’t necessarily make it good for software applications.

Ajax Overview 1

Figure 1: The traditional model for web applications (left) compared to the Ajax model (right).

This approach makes a lot of technical sense, but it doesn’t make for a great user experience. While the server is doing its thing, what’s the user doing? That’s right, waiting. And at every step in a task, the user waits some more.

Obviously, if we were designing the Web from scratch for applications, we wouldn’t make users wait around. Once an interface is loaded, why should the user interaction come to a halt every time the application needs something from the server? In fact, why should the user see the application go to the server at all?

How Ajax is Different

An Ajax application eliminates the start-stop-start-stop nature of interaction on the Web by introducing an intermediary ?an Ajax engine ?between the user and the server. It seems like adding a layer to the application would make it less responsive, but the opposite is true.

Instead of loading a webpage, at the start of the session, the browser loads an Ajax engine ?written in JavaScript and usually tucked away in a hidden frame. This engine is responsible for both rendering the interface the user sees and communicating with the server on the user’s behalf. The Ajax engine allows the user’s interaction with the application to happen asynchronously ?independent of communication with the server. So the user is never staring at a blank browser window and an hourglass icon, waiting around for the server to do something.

Ajax Overview 2

Figure 2: The synchronous interaction pattern of a traditional web application (top) compared with the asynchronous pattern of an Ajax application (bottom).

Every user action that normally would generate an HTTP request takes the form of a JavaScript call to the Ajax engine instead. Any response to a user action that doesn’t require a trip back to the server ?such as simple data validation, editing data in memory, and even some navigation ?the engine handles on its own. If the engine needs something from the server in order to respond ?if it’s submitting data for processing, loading additional interface code, or retrieving new data ?the engine makes those requests asynchronously, usually using XML, without stalling a user’s interaction with the application.

Who’s Using Ajax

Google is making a huge investment in developing the Ajax approach. All of the major products Google has introduced over the last year ?Orkut, Gmail, the latest beta version of Google Groups, Google Suggest, and Google Maps ?are Ajax applications. (For more on the technical nuts and bolts of these Ajax implementations, check out these excellent analyses of Gmail, Google Suggest, and Google Maps.) Others are following suit: many of the features that people love in Flickr depend on Ajax, and Amazon’s A9.com search engine applies similar techniques.

These projects demonstrate that Ajax is not only technically sound, but also practical for real-world applications. This isn’t another technology that only works in a laboratory. And Ajax applications can be any size, from the very simple, single-function Google Suggest to the very complex and sophisticated Google Maps.

At Adaptive Path, we’ve been doing our own work with Ajax over the last several months, and we’re realizing we’ve only scratched the surface of the rich interaction and responsiveness that Ajax applications can provide. Ajax is an important development for Web applications, and its importance is only going to grow. And because there are so many developers out there who already know how to use these technologies, we expect to see many more organizations following Google’s lead in reaping the competitive advantage Ajax provides.

Moving Forward

The biggest challenges in creating Ajax applications are not technical. The core Ajax technologies are mature, stable, and well understood. Instead, the challenges are for the designers of these applications: to forget what we think we know about the limitations of the Web, and begin to imagine a wider, richer range of possibilities.

It’s going to be fun.



阿成 2006-08-16 17:08 发表评论
]]>
DWR让AJAX如此?/title><link>http://www.tkk7.com/ltc603/archive/2006/08/16/63947.html</link><dc:creator>阿成</dc:creator><author>阿成</author><pubDate>Wed, 16 Aug 2006 09:06:00 GMT</pubDate><guid>http://www.tkk7.com/ltc603/archive/2006/08/16/63947.html</guid><wfw:comment>http://www.tkk7.com/ltc603/comments/63947.html</wfw:comment><comments>http://www.tkk7.com/ltc603/archive/2006/08/16/63947.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/ltc603/comments/commentRss/63947.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ltc603/services/trackbacks/63947.html</trackback:ping><description><![CDATA[ <div>首先了解一下什么时DWRQDirect Web Remoting Q?/div> <br /> <div>    DWR 是一个开放源码的使用 Apache 许可协议的解x案,它包含服务器?Java 库、一?DWR servlet 以及 JavaScript 库。虽?DWR 不是 Java q_上唯一可用?Ajax-RPC 工具包,但是它是最成熟的,而且提供了许多有用的功能?/div> <br /> <p>    从最单的角度来说QDWR 是一个引擎,可以把服务器?Java 对象的方法公开l?JavaScript 代码。?DWR 可以有效C应用E序代码中把 Ajax 的全部请?响应循环消除掉。这意味着客户端代码再也不需要直接处?<code><font face="新宋?>XMLHttpRequest</font></code> 对象或者服务器的响应。不再需要编写对象的序列化代码或者用第三方工具才能把对象变?XML。甚至不再需要编?servlet 代码?Ajax h调整成对 Java 域对象的调用?/p> <br /> <p>    DWR 是作?Web 应用E序中的 servlet 部v的。把它看作一个黑盒子Q这?servlet 有两个主要作用:首先Q对于公开的每个类QDWR 动态地生成包含?Web 面中的 JavaScript。生成的 JavaScript 包含存根函数Q代?Java cM的对应方法ƈ在幕后执?<code><font face="新宋?>XMLHttpRequest</font></code>? q些h被发送给 DWRQ这时它的第二个作用是把请求翻译成服务器端 Java 对象上的Ҏ调用q把Ҏ的返回值放?servlet 响应中发送回客户端,~码?JavaScript。DWR q提供了帮助执行常见的用L面Q务的 JavaScript 工具函数?br />Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br /><strong><span style="font-size: 16px;">概述</span><br /><br /></strong>q篇文章阐述了用开源项目DWR(直接Webq程控制)和AJAX(异步JavaScript和XML)的概忉|提高Web应用的可用性。作者一步步来展CDWR如何使得AJAX的应用既单又快捷。(1600?2005q??0日) <br /><br />AJAXQ? 或者说是异步JavaScript和XMLQ描qC一U用؜合了HTML(或XHTML)和层叠样式表作ؓ表达信息,来创Z互式的Web应用的开发技 ?文档对象模型QDOMQ,JavaScript,动态地昄和与表达信息q行交互;q且QXMLHttpRequest对象与Web服务器异步地交换 和处理数据?br /><br />因特|上许多例子展示了在一个HTML文g内部使用XMLHttpRequest与服务器端进行交互的必要的步骤。当手工? ~写和维护XMLHttpRequest代码Ӟ开发者必d理许多潜在的问题Q特别是cM于跨览器的DOM实现的兼Ҏ这L问题。这会D在编? 和调试Javascript代码上面pC清的旉Q这昄对开发者来说很不友好?br /><br />DWR(直接Webq程控制)目是在Apache 许可下的一个开源的解决ҎQ它供给那些惌以一U简单的方式使用AJAX和XMLHttpRequest的开发者。它h一套Javascript功能 集,它们把从HTML面调用应用服务器上的Java对象的方法简化了。它操控不同cd的参敎ͼq同时保持了HTML代码的可L?br /><br />DWR 不是对一个设计的插入Q也不强q对象用Q何种cȝl承l构。它和servlet框架内的应用配合的很好。对~少DHTML~程l验的开发者来_DWR 也提供了一个JavaScript库包含了l常使用的DHTMLdQ如l装表,用item填充select下拉框,改变HTML元素的内容,?lt; div>?lt;span><br />DWR|站是详的q且有大量的文档Q这也是q篇文章的基。一些例子用来展CDWR如何使用和用它的库可以完成什么样的工作?br /><br />q篇文章让读者看C一个用了DWR的Web应用是如何一步步建立的。我会展C创个简单的CZ应用的必要的l节Q这个应用是可下载的q且可以在你的环境中布v来看看DWR如何工作?br />注意Q找到有关AJAX的信息ƈ不困?|页上有几篇文章和博客的条目늛了这个主题,每一个都试图指出和评个概늚不同的方面。在资源部分Q你会找C些有的指向CZ和文章的链接Q来学习AJAX的更多的内容?br /><br /><b><span style="font-size: 16px;">CZ应用</span></b><br />q篇文章使用的示例应用模拟了多u多的一个公寓出U搜索引擎。用户可以在搜烦前选择一l搜索标准。ؓ了提高交互性,AJAX中以下两U情况下使用Q?br />·应用通告用户配合他的选择会返回多搜索结果。这个数字是实时更新?使用AJAX-当用户选择的卧室和室的数量,或者hD围变化时。当W合标准的搜索结果没有或太多Ӟ用户没有必要点L索按U?br />·数据库查询ƈ取回l果是由AJAX完成的。当用户按下昄l果按钮Ӟ数据库执行搜索。这P应用看v来更具响应了Q而整个页面不需要重载来昄l果?br /><br /><b><span style="font-size: 16px;">数据?/span></b><br />我们使用的数据库是HSQLQ它是一U占用资源很的Java SQL数据库引擎,可以不需要安装和配置的与Web应用捆绑在一赗一个SQL文g被用来在Web应用的上下文启动时创Z个内存中的表q添加一些记录?br /><br /><b><span style="font-size: 16px;">Javac?/span></b><br />? 用包含了两个主要的类叫Apartment和ApartmentDAO。Apartment.javacL一个有着属性和getter/setterҎ 的简单的JavacRApartmentDAO.java是数据访问类Q用来查询数据库q基于用L搜烦标准来返回信息。ApartmentDAOcȝ? 现的直接了当?它直接用了Java数据库联接调用来得到公寓的L和符合用戯求的可用公寓的列表?br /><br /><b><span style="font-size: 16px;">DWR配置和?/span></b><br />? |DWR的用是单的Q将DWR的jar文g拷入Web应用的WEB-INF/lib目录中,在web.xml中增加一个servlet声明Qƈ创徏 DWR的配|文件。DWR的分发中需要用一个单独的jar文g。你必须DWR servlet加到应用的WEB-INF/web.xml中布|描q段中去?br /></p> <pre class="overflow">    <servlet><br />        <servlet-name>dwr-invoker</servlet-name><br />        <display-name>DWR Servlet</display-name><br />        <description>Direct Web Remoter Servlet</description><br />        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class><br />        <init-param><br />            <param-name>debug</param-name><br />            <param-value>true</param-value><br />        </init-param><br />    </servlet><br /><br />    <servlet-mapping><br />        <servlet-name>dwr-invoker</servlet-name><br />        <url-pattern>/dwr/*</url-pattern><br />    </servlet-mapping></pre> <p> <br /> <br />一 个可选的步骤是设|DWR试模式—象上面的例子那样—在servlet描述D中debug参数设ؓtrue。当DWR在调试模式时Q你可以? HTMl|页中看到所有的可访问的Java对象。包含了可用对象列表的网会出现?WEBAPP/dwrq个url上,它显CZ对象的公共方法。所列方 法可以从面中调用,允许你,W一ơ,q行服务器上的对象的Ҏ。下图显CZ调试늚样子:<br /><br /><img onmouseover="javascript:imgShowTip(this);" style="display: inline;" onclick="javascript:imgClick(this);" alt="image" src="http://www.matrix.org.cn/resource/upload/forum/2005_11_07_000336_lrylCwRMxo.jpg" onload="javascript:imgLoad(this);" border="0" /><br />调试?br /><br />? 在你必须让DWR知道通过XMLHttpRequest对象Q什么对象将会接收请求。这个Q务由叫做dwr.xml的配|文件来完成。在配置文g中,定义 了DWR允许你从|页中调用的对象。从设计上讲QDWR允许讉K所有公布类的公共方法,但在我们的例子中Q我们只允许讉K几个Ҏ。下面是我们CZ的配|? 文g:<br /></p> <pre class="overflow"><dwr><br />    <allow><br />        <convert converter="bean" match="dwr.sample.Apartment"/><br />        <create creator="new" javascript="ApartmentDAO" class="dwr.sample.ApartmentDAO"><br />            <include method="findApartments"/><br />            <include method="countApartments"/><br />        </create><br />    </allow><br /></dwr></pre> <p> <br /> <br />? 面的文g实现了我们例子中的两个目标。首先,<convert>标记告诉DWRdwr.sample.Apartment对象的类型{换ؓ 联合数组Q因为,Z安全的原因,DWR默认的不会{换普通bean。第二,<create>标记让DWR暴露? dwr.sample.ApartmentDAOcȝJavaScript调用;我们在页面中使用JavaScript文g被javascript属性定 义。我们必L?lt;include>标记Q它指明了dwr.sample.ApartmentDAOcȝ哪些Ҏ可用?br /><br /><b><span style="font-size: 16px;">HTML/JSP代码</span></b><br />? |完成后Q你可以启动你的Web应用了,q时DWR会ؓ从你的HTML或Java服务器端面(JSP)上调用所需Ҏ作好准备Qƈ不需要你创徏 JavaScript文g。在search.jsp文g中, 我们必须增加由DWR提供的JavaScript接口Q还有DWR引擎Q加入以下三行到我们的代码中Q?br /><br /></p> <pre class="overflow">  <script src='dwr/interface/ApartmentDAO.js'></script><br />  <script src='dwr/engine.js'></script><br />  <script src='dwr/util.js'></script></pre> <p> <br /> <br />? 们注意到当用h变搜索标准时Q这是AJAX在示例程序中的首ơ应?正如他所看到的,当标准改变时Q可用的公寓数量被更C。我创徏了两? JavaScript函数Q当某一个选择下拉框中的值变化时被调用。ApartmentDAO.countApartments()函数是最重要的部分? 最有趣的是W一个参? loadTotal()函数Q它指明了当接收到服务端的返回时DWR会调用的JavaScriptҎ。loadTotal于是被调用来在HTML面 ?lt;div>中显C结果。下面是在这个交互场景中所使用到的JavaScript函数:<br /><br /></p> <pre class="overflow">function updateTotal() {<br />    $("resultTable").style.display = 'none';<br />    var bedrooms = document.getElementById("bedrooms").value;<br />    var bathrooms = document.getElementById("bathrooms").value;<br />    var price = document.getElementById("price").value;<br />    ApartmentDAO.countApartments(loadTotal, bedrooms, bathrooms, price);<br />}<br /><br />function loadTotal(data) {<br />    document.getElementById("totalRecords").innerHTML = data;<br />}</pre> <p> <br /> <br />很明显,用户想看到符合他的搜索条件的公寓列表。那么,当用户对他的搜烦标准感到满意Qƈ且L也是有效的话Q他会按下显C结果的按纽Q这会调用updateResults() JavaScriptҎQ?br /><br /></p> <pre class="overflow">function updateResults() {<br />    <br />    DWRUtil.removeAllRows("apartmentsbody");<br />    var bedrooms = document.getElementById("bedrooms").value;<br />    var bathrooms = document.getElementById("bathrooms").value;<br />    var price = document.getElementById("price").value;<br />    ApartmentDAO.findApartments(fillTable, bedrooms, bathrooms, price);<br />    $("resultTable").style.display = '';<br />}<br /><br />function fillTable(apartment) {<br />    DWRUtil.addRows("apartmentsbody", apartment, [ getId, getAddress, getBedrooms, getBathrooms, getPrice ]);<br />}</pre> <br /> <br />updateResults ()Ҏ清空了存放搜索返回结果的表域Q从用户界面上获取所需参数Qƈ且将q些参数传给DWR创徏的ApartmentDAO对象。然后数据库查询被? 行,fillTable()会被调用,它解析了DWRq回的对?apartment)Q然后将其显C到面?apartmentsbody)?br /><br /><b><span style="font-size: 16px;">安全因素</span></b><br />? 了保持示例的要,ApartmentDAOcd可能的保持简单,但这L一个类通常有一l设|方法来操作数据Q如insert(), update()和delete()。DWR暴露了所有公共方法给所有的HTML面调用。出于安全的原因Q像q样暴露你的数据讉K层是不明智的。开发? 可以创徏一个门面来集中所有JavaScript函数与底层业务组件之间的通信Q这样就限制了过多暴露的功能?br /><br /><b><span style="font-size: 16px;">l论</span></b><br />q? 文章仅仅让你在你的目中用由DWR支持的AJAX开了个头。DWR让你集中注意力在如何提高你的应用的交互模型上面,消除了编写和调试 JavaScript代码的负担。用AJAX最有趣的挑战是定义在哪里和如何提高可用性。DWR负责了操作Web面与你的Java对象之间的通信Q这 样就帮助你完全集中注意力在如何让你的应用的用L面更加友好,<br />我想感谢Mircea Oancea和Marcos Pereira,他们阅读了这文章ƈl予了非常有价值的q匮?br /><br /><b>资源</b><br />·javaworld.com:<a target="_new">javaworld.com</a><br />·Matrix-Java开发者社?<a target="_new">http://www.matrix.org.cn/</a><br />·onjava.com:<a target="_new">onjava.com</a><br />·下蝲CZE序的全部源?<a target="_new">http://www.javaworld.com/javaworld/jw-06-2005/dwr/jw-0620-dwr.war</a><br />·DWR: http://www.getahead.ltd.uk/dwr/index.html<br />·HSQL:http://hsqldb.sourceforge.net/<br />·AJAX的定?http://en.wikipedia.org/wiki/AJAX<br />· “AJAX:通向Web应用的新途径": Jesse James Garrett (Adaptive Path, 2005.2): http://www.adaptivepath.com/publications/essays/archives/000385.php<br />· “非常动态的Web界面?Drew McLellan (xml.com, 2005.2): http://www.xml.com/pub/a/2005/02/09/xml-http-request.html<br />·XMLHttpRequest & AJAX 工作范例: http://www.fiftyfoureleven.com/resources/programming/xmlhttprequest/examples<br />· “可用的XMLHttpRequest实践?Thomas Baekdal (Baekdal.com, 2005.3): http://www.baekdal.com/articles/Usability/usable-XMLHttpRequest/<br />·"XMLHttpRequest 使用导引" Thomas Baekdal (Baekdal.com,  2005.2):http://www.baekdal.com/articles/Usability/XMLHttpRequest-guidelines/<br />·AJAX实质:http://www.ajaxmatters.com/<br /><img src ="http://www.tkk7.com/ltc603/aggbug/63947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ltc603/" target="_blank">阿成</a> 2006-08-16 17:06 <a href="http://www.tkk7.com/ltc603/archive/2006/08/16/63947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS中的“滑动门”技?/title><link>http://www.tkk7.com/ltc603/archive/2006/08/16/63946.html</link><dc:creator>阿成</dc:creator><author>阿成</author><pubDate>Wed, 16 Aug 2006 09:01:00 GMT</pubDate><guid>http://www.tkk7.com/ltc603/archive/2006/08/16/63946.html</guid><wfw:comment>http://www.tkk7.com/ltc603/comments/63946.html</wfw:comment><comments>http://www.tkk7.com/ltc603/archive/2006/08/16/63946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/ltc603/comments/commentRss/63946.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ltc603/services/trackbacks/63946.html</trackback:ping><description><![CDATA[ <p>?acronym title="Cascading Style Sheets">CSS</acronym>中,一个很被提及的优点就是能够层叠背景图片,允许它们之间通过"滑动"和层叠来创造出特定的效果。CSS2目前的状况要求每个背景图片都分别有与之相对应的HTML元素。在通常情况下,l成通用界面的典型标记已l提供了一些我们可以用的元素?/p> <p>? 中的一个例子就是标{֯航栏Qtabbed navigationQ。随着[标签D]的用率不断上升Q它已逐渐成ؓ了站点导航的L方式Q现在是时候来讨论一下对标签D栏的控制了。既然CSS 被广泛地支持Q我们就可以用它来优化站Ҏ{质地和外观。你很可能会惛_QCSS可以<a >驯服q_的无序列?/a>。可能你已经见到q一些样式化为标{列表Q比如下面这个:</p> <img alt="" src="http://adaptiveline.com/articles/tech/slidingdoors/tabex1.gif" height="34" width="228" /> <p>如果我们采用与上?strong>完全相同的标?/strong>Q但却把它们变成了下面的样子Q该如何d呢:</p> <img alt="" src="http://adaptiveline.com/articles/tech/slidingdoors/tabex2.gif" height="34" width="228" /> <p>在这里,仅仅用非常简单的样式可以实现?/p> <h4>创新之道</h4> <p>我所见过的许多基于CSS的标{N受到了一些共同特性的限制Q单色的矩Ş块,可能在当前标{上加了轮廓Q或者边框;在鼠标掠q时改变矩Ş的颜色等{。这是CSS能ؓ我们提供的全部吗Q仅仅是成堆的单色方块?</p> <p>? 在CSS被广泛采用之前,我们p够看到许多在D设计上的创新。创新的外ŞQ可控的色彩混合Q以及对现实世界中物力表面的模仿。但是这些设计通常都依? 于将文字内嵌于图片的复杂l构或多层的表格嵌套。编辑标{上的文字或者改变它们的序都会引vJ重的工作。文字的~放更是不可能,不然׃引v严重的页? 布局错误?/p> <p>单纯的文字导航要比嵌入文字的囄式导航更加易于管理ƈ且加载更q速。而且Q虽然我们可以给每个囄都加上alt属性, 但是单纯的文字导航更h可读性,因ؓ对于视力不好读者,q些文字都是可羃攄。也正因为如此,由CSS样式化的文字的导航栏再次成ؓ|页设计者们的? 择,q不ؓ奇。但是到目前为止Q大多数ZCSS的标{设计,只是后退了一步,回到了我们曾l的做法--当然q些是无法被优秀的设计作品采用的。采用一 Ҏ技术(比如CSSQ应该能够让我们创作Z?strong>更好</strong>的东西,而不至于失去先前的表格或者图片式标签所能表现的质地?/p> <h4>“滑动门”技?/h4> <p>? 要我们用两片分离的背景图片,p够创造出_的手工界面,q且h高度的灵zL,可随文字的羃放而自动适应。试想一下,左右两幅囄Q就像左右两扇滑? 门一P构成了一扇完整的门。将q两扇门推近Q重叠的部分多一些,可以适应一个比较狭H的I间Q而如果将它们拉开Q重叠的部分减少Q就可以满较宽的空 _正如下图所C:</p> <img alt="" src="http://adaptiveline.com/articles/tech/slidingdoors/diagram_doors_1.gif" height="25" width="250" /> <p>? q个例子中,一q图片盖住了另一q的某些部分。假设每q图片的边缘都有些独特的形状Q例如标{圆角Q我们不希望q些边缘被它前方囄盖住。ؓ了防止这U? 情况发生Q我们将攄在前方(以左边ؓ例)的图片制作得可能地H,但是保证它能够完整地昄~上的独特Ş状。以圆角标签ZQ我们将前方的图片制? C与圆角的部分同宽卛_Q?/p> <img alt="" src="http://adaptiveline.com/articles/tech/slidingdoors/diagram_doors_2.gif" height="25" width="250" /> <p>? 果目标物׃不同文字或文字类型而变得比上图所C的宽度更大,那么q两q图׃被拉开,出现一个非怸观的缺口? q时需要我们对可能的扩展性进行预?在用L攑֭体的时候,目标物会增大多少Q实际上Q我们至应该ؓ文字的羃放而作?00%的可伸羃性准备? 我们需要将背景图扩大到_弥补~口?对于q些例子Q我们将把后面的囑փ ( 双) 制作?400 x150 囄, 前面的图像制作ؓ 9 x150 囄?/p> <p>要记住,背景囄只能在它所应用的元素的“门前”出?[内容区域+补丁区域(padding)]?q两q图被分别安攑ֈ他们所应用的元素外侧?而这些背景的可见部分交叠在一h成了一个完整的标签样式:</p> <img alt="" src="http://adaptiveline.com/articles/tech/slidingdoors/diagram_doors_3.gif" height="75" width="250" /> <p>如果标签被扩大的话,q两q图分别向两侧滑动Q每一q都更多地被昄出来Q以满更宽的“门”的需求?/p> <img alt="" src="http://adaptiveline.com/articles/tech/slidingdoors/diagram_doors_4.gif" height="75" width="250" /> <p>? 比如我用Photoshop制作了两q^滑的Q略?D效果的个性化标签囄Q正如文章开头的囄所C。在另一个色彩明亮一点的版本中,q两q图片的填充 色变的更亮,边缘的阴影更暗,q是为“当前”标{և备的。ؓ了给上面所q的技术作CQ我们需要扩展标{背景的覆盖区域Qƈ把它切成了两?</p> <img alt="" src="http://adaptiveline.com/articles/tech/slidingdoors/tab_images.gif" height="150" width="250" /> <p>那个明亮一些的版本也需要这样做Q一旦这些图片都作好了(<a >1</a>, <a >2</a>, <a >3</a>, <a >4</a>Q,我们可以进入CSS标记部分了?/p> <h4>创徏标签</h4> <p>当发C如何利用CSS创徏横向列表后,你可能会注意刎ͼ臛_有两U方法能够将一l列表排列成一行。一U是用内嵌方框,另一U是利用动属性。它们各有利弊。而且每一U方法都会遇到CSS中非常奇怪的斚wQ很Ҏ让hqh?/p> <p> <strong>W一U方?/strong>Q也是最常用的方法,是列表的目属性设|ؓ“内嵌”,q种Ҏ׃非常便而具有相当的吸引力。然而,对于我们要讨论的“滑动门”技术来_q种内嵌的方法在某些特定的浏览器上会出现渲染问题?strong>W二U方?/strong>Q也是我们所要关注的Q是利用“Q动”属性将列表Ҏ成一横行。而Q动属性也会同样o人无所适从。它们那些看来不协调的行为ƈ不遵从自焉辑。尽如此,处理多个动元素的基本认识以及将它们实可靠地处理ؓ可用元素的方法依然会取得另h惊奇的效果?/p> <p>? 们会在一个Q动的容器中创建多个Q动的元素。这样做是ؓ了外部容器紧密围绕在内容元素的周围。利用这U方法,我们可以l标{֐的空白加上背景。要切记Q? 在标{之后布局的元素,一定要在CSS中用clear属性重新定位它的位|。这hZ防止动标签影响布局中的其他面元素的位|?/p> <p>那么Q现在就让我们看看这些标记语aQ?/p> <pre><div id="header"><br /><ul><br /><li><a href="#">Home</a></li><br /><li id="current"><a href="#">News</a></li><br /><li><a href="#">Products</a></li><br /><li><a href="#">About</a></li><br /><li><a href="#">Contact</a></li><br /></ul><br /></div></pre> <p>事实上,头部(#header)的层可能同时会包含网站的LOGO以及一个搜索框。在q个的例子中Q我们会_每个锚点QanchorQ中的href倹{显Ӟ正常情况下这些值应该ؓ锚点地址或者文件位|?/p> <p>? 们最初的样式化就是让头部Q?headerQ的层Q动。这样做是ؓ了让q个作ؓ容器的层能够真正地将它所容纳的那些Q动列表项包在内部。由于这个元素是? 动的Q我们需要给它标Cؓ?00%”的宽度。再l它加上临时的黄色背景来认q一父容器的伸羃能够正好填满标签的整个背景区域。同时设|默认文字的? 性,以保证容器内的文字看h一?</p> <pre>#header {<br />float:left;<br />width:100%;<br />background:yellow;<br />font-size:93%;<br />line-height:normal;<br />}<br /></pre> <p>现在Q我们将无序列表默认的内外补?padding)都设|ؓ0Qƈ列表的目W号LQ给他们加上向左动的属性:</p> <pre>#header ul {<br />margin:0;<br />padding:0;<br />list-style:none;<br />}<br />#header li {<br />float:left;<br />margin:0;<br />padding:0;<br />}</pre> <p>我们锚点的昄属性设|ؓ“块(display:block;)”,q样在控制它们的时候就不必担心内嵌Ҏ的问题了:</p> <pre>#header a {<br />display:block;<br />}</pre> <p>接下来,我们右侧的囄d到列表项的背景中Q添加的部分?strong>_体</strong>昄Q:</p> <pre>#header li {<br />float:left;<br /><strong>background:url("norm_right.gif")<br />no-repeat right top;</strong><br />margin:0;<br />padding:0;<br />}</pre> <p>在加入左边的囄之前Q我们先停下来看看到目前为止Q?a >效果一</a>I竟是怎样的?/p> <p>- - -</p> <p>现在Q我们就可以在上方昄的左侧图片加入到锚点Q内层元素)的背景中Q与此同Ӟ我们也加入了内补丁,标{扩展,l文字与标签的边~间d一些空白:</p> <pre>#header a {<br />display:block;<br /><strong>background:url("norm_left.gif")<br />no-repeat left top;<br />padding:5px 15px;</strong><br />}</pre> <p>q些变化出现?a >效果?/a>中? 看,现在标签已经有了大体的Ş状。对于这一点,IE5/Mac的用户可能会感到奇怪了Q“这是怎么了,Z么标{会堆叠着伸展地穿q整个屏q?”别急,? 们很快就要帮你解册些问题。那么现在,可能地跟着我们l箋下去Q如果手头有其他览器的话,暂时先换一个来l箋往下看。IE5/Mac的问题一定会? 到很好的解决?/p> <p>- - -</p> <p>q时Q普通的标签背景已经做好了,接下来,需要ؓ“当前”标{֊上背景。我们通过为当前标{ֆ的锚点加上id=“current”来实现对它的定位。由于ƈ不需要改变当前标{其他讄Q只需要更换背景,所以我们仅用以下的代码卛_Q?/p> <pre> <strong>#header #current {<br />background-image:url("norm_right_on.gif");<br />}<br />#header #current a {<br />background-image:url("norm_left_on.gif");<br />}</strong> <br /> </pre> <p>在标{下方Q我们想要有Ҏ出现Q但是如果用对父容器#header讄下边框的的方法,那么无法消除当前标{下边框。因此,我们用创Zq新囄的方法来代替Q这q图片的底部包含了我们想要的ҎQ同时将囄的颜色设|ؓ许的梯度,像下面q幅Q?/p> <img alt="" src="http://adaptiveline.com/articles/tech/slidingdoors/bg.gif" height="45" width="20" /> <p>我们这q图片用于容?header的背景(代替了我们刚才所用的黄色Q,q将它设|ؓ底部寚wQ给容器讄与之相应的背景色。同Ӟbody的内补丁U除Q给列表ul的上Q左Q右侧,分别加上10像素的内补丁Q?/p> <pre>#header {<br />float:left;<br />width:100%;<br /><strong>background:#DAE0D2 url("bg.gif")<br />repeat-x bottom;</strong><br />font-size:93%;<br />line-height:normal;<br />}<br />#header ul {<br />margin:0;<br /><strong>padding:10px 10px 0;</strong><br />list-style:none;<br />}</pre> <p>? 完成标签D栏,q需要将当前标签的下Ҏ消除。你可能会想刎ͼl其他标{֊上与#header背景色完全相同的下边框,然后l当前标{֊上一个白色的? Ҏ。然而,那些观察非常仔细的hq是会在q样的做法中发现些许破熾。我们用l锚点加上内补丁的方法来替代它,q样可以创建出完美的方形边角了。在下面 l过攑֤的示意图中就可以看出区别Q?/p> <img alt="" src="http://adaptiveline.com/articles/tech/slidingdoors/diagram_corners.gif" height="50" width="250" /> <p>Z实现q样的效果,我们为其他标{设|了4像素的内补丁Q而当前标{讄?像素Q?/p> <pre>#header a {<br />display:block;<br />background:url("norm_left.gif")<br />no-repeat left top;<br /><strong>padding:5px 15px 4px;</strong><br />}<br />#header #current a {<br />background-image:url("norm_left_on.gif");<br /><strong>padding-bottom:5px;</strong><br />}</pre> <p>上面的代码保证了?a >效果?/a>中下Ҏ只出现在其他标签上,而不出现在当前标{上?/p> <h4>打磨完工</h4> <p>? 锐的目光可能会发玎ͼ在上一效果图中Q圆角标{角落上仍然留有白色的色块。这些前方图片上的不透明的边角挡住了D栏的背景。从理论上说Q我们可以将q? 些边角的背景修改ZD栏背景色一致来辑ֈ看似透明的效果。但是我们的D标签可能会改变高度,过背景的范_或者背景色出现更改。因此,不如直接? 前方背景的边角设|ؓ透明Q这h为方ѝ如果圆角是抗锯齿的话,我们可以让它的边~以背景色进行柔化?/p> <p>现在边角透明了,可是右侧囄的一部分出现在左侧透明的边角后。ؓ了抵消它Q我们在目列表的左侧加上与左侧囄相同大小?像素的内补丁。由于项目列表加上了左内补丁Q就需要在锚点的左侧减M部分内补丁,以保证文字的居中(15px - 9px = 6px)Q?/p> <pre>#header li {<br />float:left;<br />background:url("right.gif")<br />no-repeat right top;<br />margin:0;<br /><strong>padding:0 0 0 9px;</strong><br />}<br />#header a {<br />display:block;<br />background:url("left.gif")<br />no-repeat left top;<br /><strong>padding:5px 15px 4px 6px;</strong><br />}</pre> <p>然而,q不能就q样把它攑֜那儿Q因为左侧的囄׃刚才加上?像素的内补丁而被推开了。既然左右两q图片的内边~已l相q了Q我们就没必要非左侧的囄保持在上斏V因此,我们交换一下左右两q图片,让他们应用到Ҏ的元素上。当Ӟ当前标签也需要这样做Q?/p> <pre>#header li {<br />float:left;<br />background:url("<strong>left.gif</strong>")<br />no-repeat left top;<br />margin:0;<br />padding:0 0 0 9px;<br />}<br />#header a, #header strong, #header span {<br />display:block;<br />background:url("<strong>right.gif</strong>")<br />no-repeat right top;<br />padding:5px 15px 4px 6px;<br />}<br />#header #current {<br />background-image:url("<strong>left_on.gif</strong>");<br />}<br />#header #current a {<br />background-image:url("<strong>right_on.gif</strong>");<br />padding-bottom:5px;<br />}</pre> <p>一旦这样做好了Q就完成?a >效果?/a>? 注意Qؓ了边角透明而做的这一pd调整使得每个标签的左侧都有一部分不可点凅R这一非活动区域是在文字之外的Q所以ƈ不是非常引h注目。ƈ不是每个? 炚w要求标签背景是透明的,如果不希望有q一部分非zd区域的话Q尽可以用纯色的背景和方角来代替透明和圆角。在我们的例子中Q依然保持透明和圆角的? 果?/p> <p>- - -</p> <p>剩下的调整就很简单了Q我们一q来完成Q将标签字体讄为粗体,正常标签的字体颜色设|ؓ色Q当前标{N色设|ؓqԌL下滑U,鼠标悬时的字体颜色同栯|ؓq艌Ӏ这些增加的变化?a >效果?/a>中表现出来?/p> <h4>一致性的特例</h4> <p>在效果二之后Q我们认识到Q在IE5/Mac中,标签被扩大到与页面同宽,D了他们垂直堆叠在下一个的上方Q这q不是我们想要的效果?/p> <p>在大多数览器中QQ动会引v收羃的效?它会收羃C能容U_所含元素的最空间。如果Q动元素中包含的是囄Q那么它会收~到与图片大相同,如果仅包含文字的话,它会收羃C最长的不换行文字同宽?/p> <p>? 在IE5/Mac中,当一个自动调整宽度的块元素Qblock-level elementQ被插入到另一动元素中时Q就会出现问题。其他浏览器依然会尽可能地收~Q动元素,q不理会它所容纳的块U元素。但是IE5/Mac在这 U情况下q不收羃动元素Q反而将动和块U元素扩展到最大的可用宽度。在q种情况下,我们需要将锚点也同时Q动,但是仅在IE5/Mac中这样做Q以? 影响到其他浏览器。之后,我们可以用<a class="en" title="Commented Backslash Hack, explained" onclick="window.open(this.href);return false" ><span id="trjrvhp" class="popup">反斜杠注释法</span></a>QCommented Backslash HackQ来隐藏q些代码Q其仅在IE5/Mac下工作:</p> <pre>#header a {<br /><strong>float:left;</strong><br />display:block;<br />background:url("right.gif")<br />no-repeat right top;<br />padding:5px 15px 4px 6px;<br />text-decoration:none;<br />font-weight:bold;<br />color:#765;<br />}<br /><strong>/* Commented Backslash Hack<br />hides rule from IE5-Mac \*/<br />#header a {float:none;}<br />/* End IE5-Mac hack */</strong></pre> <p>q回QIE5/Mac览器应该显C我们所希望的效果了Q见<a >效果?/a>? 在非IE5/Mac览器中Q应该没有Q何变化。注意,IE5.0/Mac中出C很多渲染错误Q在IE5.1中已得到更正。因此,在IE5.0中出现的 错误已经出了我所应该作ؓ特例而修改的范畴了。由于现在升U到5.1q不困难Q而OS 9 Macs用户中仍然用IE5.0的已l相当的了?/p> <h4>适用?/h4> <p>? 们刚刚看q如何运用滑动门技术创建纯文本的导航标{?它们是由一pd锚点l成的无序列表标记而成,q赋予一些个性化的样式。它加蝲快?易于l护,q且? 以在不破坏原有设计的同时对其文本q行大比例的~放。那么这Ҏ术够灵zdQ可以胜d建各U类型的_D栏的d?</p> <p>无需怀疑,q项技术的使用只局限于我们的想象力?a >最l效?/a>只展C出了其中一U可能性。但是我们不应被一U设计局限了自己的想?</p> <p>例如,标签没必要非得对U。我很快制作出q些标签?a >2.0?/a>Q? 在这个版本中Qƈ没有使用3D阴媄效果,q样更利于展C^面色?有角的边~,以及更宽,更细致的左边框。正?.0版所C,我们甚至可以交换左右两幅? 片的位置Q当Ӟq些均取决于你的设计。通过l致的计划和巧妙的图片处?我们可以将下边框彻底放?q更有利于标{֛片与背景的搭?如在我充满? 感的<a >3.0?/a>中所表现的那栗如果你的浏览器支持在样式表间切换的?你甚臛_以看到这?a >L?/a>在三个不同的版本的样式间切换Q注QFirefox和Opera支持样式切换Q?/p> <p>? 他我们没有讨论到的效果可以基于这Ҏ术用。在一路D来的q个例子?我只改变了鼠标悬时的文字颜Ԍ但除此之外你q可以将整个背景替换掉,以创造出 更ؓ有趣的翻转效果。只要有两个嵌套的HTML元素标记Q就可以利用CSSZ们加上背景,创造出我们甚至想都没想q的的效果。在q个例子中我制作了一? 水^的导航标{?但是滑动门技术在其他许多情况下都是可以用的?/p> <p>那么,<strong>?/strong>会用它做什么呢?</p> <img src ="http://www.tkk7.com/ltc603/aggbug/63946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ltc603/" target="_blank">阿成</a> 2006-08-16 17:01 <a href="http://www.tkk7.com/ltc603/archive/2006/08/16/63946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://57az.com" target="_blank">Ƶ߿</a>| <a href="http://chinacmk.com" target="_blank">ѾƷһ35 </a>| <a href="http://wwby66636.com" target="_blank">ƹƵ߿</a>| <a href="http://wwwdf221.com" target="_blank">þþþþþþ</a>| <a href="http://61255555.com" target="_blank">ĻƵѹۿ</a>| <a href="http://mmm19.com" target="_blank">avĻ</a>| <a href="http://3688008.com" target="_blank">й߹ۿѵwww</a>| <a href="http://youweidianqi.com" target="_blank">츾avһ</a>| <a href="http://lanoss.com" target="_blank">vAѾƷ߹ۿ</a>| <a href="http://hssw1688.com" target="_blank">ɫƵ</a>| <a href="http://hssw1688.com" target="_blank">վɫƵ߹ۿaվ</a>| <a href="http://6266tv.com" target="_blank">ëƬv߲һ</a>| <a href="http://53ggk.com" target="_blank">aëƬ</a>| <a href="http://shnisda.com" target="_blank">þþƷAV鶹 </a>| <a href="http://xcdys.com" target="_blank">һëƬ߲</a>| <a href="http://shnisda.com" target="_blank">һëƬ߲Ƶѹۿ</a>| <a href="http://fenglufzjx.com" target="_blank">ˬִ̼߳</a>| <a href="http://myzhoubian.com" target="_blank">˴ֳսŮ2021ƷƵ </a>| <a href="http://pchbgs.com" target="_blank">͵ľƷ</a>| <a href="http://jiggybaby.com" target="_blank">ݹѹۿ</a>| <a href="http://zjjtejia.com" target="_blank">޹߹ۿ</a>| <a href="http://2499m.com" target="_blank">ŷ޾Ʒ99ëƬѸۿ</a>| <a href="http://565636.com" target="_blank">޾Ʒ</a>| <a href="http://chandou8.com" target="_blank">þֻоƷ10</a>| <a href="http://lfhotline.com" target="_blank">޾Ʒͷ</a>| <a href="http://www-840012.com" target="_blank">ҹպһ</a>| <a href="http://100357.com" target="_blank">Ѱββ8X </a>| <a href="http://sdzsks.com" target="_blank">޹ɫƵ</a>| <a href="http://www-6209.com" target="_blank">bbbbbbƵ</a>| <a href="http://lkzrgy.com" target="_blank">һƵ</a>| <a href="http://www55xx.com" target="_blank">þ޾ƷĻ</a>| <a href="http://by11gun.com" target="_blank">պ޹Ƶ</a>| <a href="http://91vk.com" target="_blank">Ʒ</a>| <a href="http://jiucaoji.com" target="_blank">av߲ </a>| <a href="http://eeussdd.com" target="_blank">һƷ </a>| <a href="http://niutextile.com" target="_blank">Ʒ69XXXƵ</a>| <a href="http://51nianyefan.com" target="_blank">þۺϾƷ</a>| <a href="http://ningxialanh.com" target="_blank">þþþþþƵ</a>| <a href="http://wwwkckc.com" target="_blank">ѵĻɫվ</a>| <a href="http://xwy2.com" target="_blank">ɫʮʮɫ</a>| <a href="http://scbangde.com" target="_blank">߹ۿƵ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>