<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Alibaba.com UED &#187; 9</title>
	<atom:link href="http://www.aliued.com/tag/9/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aliued.com</link>
	<description>Alibaba.com User experience design team</description>
	<lastBuildDate>Thu, 26 Aug 2010 10:20:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>用JS开发页面动画效果时的一个设计思路</title>
		<link>http://www.aliued.com/2007/12/10/38/</link>
		<comments>http://www.aliued.com/2007/12/10/38/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 02:34:46 +0000</pubDate>
		<dc:creator>Salan</dc:creator>
				<category><![CDATA[Web Developer]]></category>
		<category><![CDATA[9]]></category>

		<guid isPermaLink="false">http://www.aliued.com/?p=38</guid>
		<description><![CDATA[首先说明下范围

用Javascript来开发WEB页面的动画效果
该思路同时考虑页面效率、SEO，如果数据大，也可以缓解后端压力。
这个是程序设计思路
还谈不上思想，只是自己实践使用过的一个方法

... ]]></description>
			<content:encoded><![CDATA[<p>首先说明下范围</p>
<ol>
<li>用Javascript来开发WEB页面的动画效果</li>
<li>该思路同时考虑页面效率、SEO，如果数据大，也可以缓解后端压力。</li>
<li>这个是程序设计思路</li>
<li>还谈不上思想，只是自己实践使用过的一个方法</li>
</ol>
<p><span id="more-38"></span><br />
我们经常看到网页上有各种各样的动画，例如下图</p>
<p><img style="width: 552px; height: 136px;" src="http://www.aliued.com/wp-content/uploads/2007/12/demo20071210.jpg" alt="demo20071210.jpg" width="572" height="146" /><br />
有N条记录，需要在页面上滚动显示，并且需要循环。</p>
<p>我们先假设一下<strong>条件</strong></p>
<ol>
<li>这些记录都需要被搜索引擎收录</li>
<li>直接对页面元素做动画有困难（这里可能比较简单，但是困难的情况还是很多的）</li>
<li>信息需要循环显示</li>
<li>数据比较多，N条</li>
</ol>
<p>这个时候出现<strong>问题</strong></p>
<ol>
<li>数据必须是HTML标签，不能直接写入JS</li>
<li>直接对页面元素控制，并做动画有难度。由于要循环，得拆分子元素</li>
<li>数据比较多，控制子元素会出现效率问题</li>
</ol>
<p>第一个问题呢，我们这么做，让HTML载入，然后用JS来读取HTML信息作为数据控制。这个应该比较简单的。</p>
<p>第二个问题怎么搞呢，我们在读完数据之后，再搞出一个代理层来，比如叫A层。那么A层仅仅是提供显示，JS控制这个层来做动画。每次动画的时候呢把新的数据填进去，再做动画。</p>
<p>第三个问题迎刃而解，控制A层就OK了。</p>
<p><strong>Y方案：具体看看流程吧：（我把JS读取数据的步骤省略不说了，这个相信大家都知道怎么搞）</strong></p>
<p>第一步，元素的层次结构：</p>
<p> A层  z-index:2;&#8212;&#8212;&#8212;&#8212;   隐藏  //负责动画<br />
真层 z-index:1;&#8212;&#8212;&#8212;&#8212;  显示  //给爬虫看，且负责显示的当前信息</p>
<p>第二步动画：完成后返回第一步既可。</p>
<p>A层填入数据&#8211;》显示&#8211;》动画 <br />
动画结束之后，B层直接设置坐标，到标准位置<br />
A层隐藏。</p>
<p>上面这样做的理由是，填数据的过程，是会造成页面抖动的，所以我们把这个过程隐藏的来完成。</p>
<p><strong> 更升级的问题</strong>，如果真层直接设置坐标也比较困难，怎么办？那么就再搞个B层出来</p>
<p><strong>X方案：</strong> </p>
<p>A层  z-index:3;&#8212;&#8212;&#8212;&#8212;   隐藏 //负责动画<br />
 B层  z-index:2;&#8212;&#8212;&#8212;&#8212;   显示 //只显示当前信息<br />
真层 z-index:1;&#8212;&#8212;&#8212;&#8212;  隐藏 //仅仅给爬虫看，以及读取数据用，之后不再显示</p>
<p>动画的时候，A填入数据&#8211;》A显示&#8211;》A动画&#8211;》B填入数据&#8211;》A隐藏</p>
<p><strong>再升级下问题</strong>：如果数据实在太多，没法一次用HTML载入完成，怎么办？那么用AJAX来搞吧，具体做法和上面一样</p>
<p><strong>从具体到抽象：</strong><strong>设计的思路是数据和表现分离。<br />
</strong>给用户看的其实是一个JS创建出来的层，不断的更新数据，不断的隐藏显示来造成假象，然后做动画。</p>
<p><strong>注意的问题</strong>：如果每个item中，图片比较多，可能会浪费浏览器的渲染时间和增加HTTP请求。适合用Y方案。如果数据需要异步，且比较难控制坐标的时候，那么适合用X方案。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aliued.com/2007/12/10/38/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
