<?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>彬Go &#187; 我的作品</title>
	<atom:link href="http://blog.bingo929.com/category/my-works/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.bingo929.com</link>
	<description>关注前端开发/网页设计/网站可用性/用户体验</description>
	<lastBuildDate>Fri, 16 Dec 2011 17:14:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>人人网首页拖拽上传详解(HTML5 Drag&amp;Drop、FileReader API、formdata)</title>
		<link>http://blog.bingo929.com/renren-drag-drop-photo-filereader-formdata.html</link>
		<comments>http://blog.bingo929.com/renren-drag-drop-photo-filereader-formdata.html#comments</comments>
		<pubDate>Sun, 11 Dec 2011 15:30:11 +0000</pubDate>
		<dc:creator>彬Go</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[我的作品]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[拖拽]]></category>
		<category><![CDATA[教程]]></category>

		<guid isPermaLink="false">http://blog.bingo929.com/?p=3186</guid>
		<description><![CDATA[　　早在公元2011年6月3日傍晚，人人网推出了一个很装B且完全无视IE浏览器的功能——拖拽上床。哦，Sorry, 是拖拽上传。到现在，这个功能已经上线了整整半年，这篇文章也足足拖延了半年才... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.bingo929.com/renren-drag-drop-photo-filereader-formdata.html"><img title="人人网拖拽上传实例详解" src="http://blog.bingo929.com/wp-content/uploads/2011/12/blog-title.jpg" alt="" width="500" height="150" /></a></p>
<p>　　早在公元2011年6月3日傍晚，人人网推出了一个很装B且完全无视IE浏览器的功能——拖拽上床。哦，Sorry, 是<strong>拖拽上传</strong>。到现在，这个功能已经上线了整整半年，这篇文章也足足拖延了半年才分享给大家，实在是对不住了，呵呵，今后彬Go一定要勤奋发Blog！</p>
<p><span id="more-3186"></span></p>
<p><strong><span style="color: #ff6600;">您还可以参考以下HTML5相关文章:</span></strong><br />
《<a href="http://blog.bingo929.com/google-enjoy-html5-drag-drop-filereaderenren.html">HTML5 Drag&amp;Drop 拖拽、FileReader实例教程</a>》<br />
《<a href="http://blog.bingo929.com/html5-websockets.html">HTML5 WebSockets 基础使用教程</a>》<br />
《<a href="http://blog.bingo929.com/html-5-canvas-the-basics-html5.html">关于HTML 5 canvas 的基础教程</a>》<br />
《<a href="http://blog.bingo929.com/html5-ie-enabling-script.html">让所有IE支持HTML5的解决方案</a>》<br />
《<a href="http://blog.bingo929.com/power-of-html5-css3-div-css.html">一起感受HTML5和CSS3的能量</a>》</p>
<p>　　关于这个拖拽上传，其实国外有很多网站已经有这样的应用，最早推出拖拽上传应用的是Gmail，它支持标准浏览器下拖拽本地文件到浏览器中作为邮件的附件发送。人人网的这个拖拽上传也是同理，可以让使用标准浏览器的用户通过简单的拖拽行为，将本地文件夹中的照片直接上传到人人网，用户体验能得到提升的同时，也希望借此机会推广一下标准浏览器，淘汰IE。人人网当时也向广大用户推出升级浏览器活动，并喊出口号：&#8221;工欲善其计算机，必先利其浏览器&#8221;。本次拖拽上传的宣传口号：你敢&#8221;脱&#8221;，我就敢上传&#8230;</p>
<p><a href="http://blog.bingo929.com/wp-content/uploads/2011/12/b_large_pbOj_3004000003b45c41.jpg"><img title="人人网 - 拖拽上传" src="http://blog.bingo929.com/wp-content/uploads/2011/12/b_large_pbOj_3004000003b45c41-500x259.jpg" alt="人人网 - 拖拽上传" width="500" height="259" /></a></p>
<p>　　言归正题，首先看看效果，大家如果有<a href="http://www.renren.com" target="_blank">人人网</a>帐号的话可以在首页试一试拖拽上传功能，下面是演示视频：</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="430" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="src" value="http://player.youku.com/player.php/sid/XMjcyNzU0ODY4/v.swf" /><param name="allowfullscreen" value="true" /><param name="quality" value="high" /><embed type="application/x-shockwave-flash" width="500" height="430" src="http://player.youku.com/player.php/sid/XMjcyNzU0ODY4/v.swf" quality="high" allowfullscreen="true" align="middle"></embed></object></p>
<p><strong>拖拽上传应用主要使用了以下<a href="http://blog.bingo929.com/tag/html5">HTML5</a>技术：</strong></p>
<ul>
<li><a href="http://dev.w3.org/html5/spec/Overview.html#dnd" target="_blank"><strong>Drag&amp;Drop</strong></a> : <a href="http://blog.bingo929.com/tag/html5">HTML5</a>基于拖拽的事件机制.</li>
<li><a href="http://www.w3.org/TR/FileAPI/" target="_blank"><strong>File API</strong></a> :  可以很方便的让Web应用访问文件对象，File API包括<a style="font-weight: normal;" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-filelist">FileList</a>、<a style="font-weight: normal;" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-Blob">Blob</a>、<a style="font-weight: normal;" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-file">File</a>、<a style="font-weight: normal;" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-filereader">FileReader</a>、<a style="font-weight: normal;" href="http://dev.w3.org/2006/webapi/FileAPI/#url">URI scheme</a>，本文主要讲解拖拽上传中用到的FileList和FileReader接口。</li>
<li><a href="http://www.w3.org/TR/XMLHttpRequest2/#the-formdata-interface" target="_blank"><strong>FormData</strong></a> : FormData是基于<a style="font-weight: normal;" href="http://www.w3.org/TR/XMLHttpRequest2/" target="_blank">XMLHttpRequest Level 2</a>的新接口，可以方便web应用模拟Form表单数据，最重要的是它支持文件的二进制流数据，这样我们就能够通过它来实现AJAX向后端发送文件数据了。</li>
</ul>
<h3><strong>HTML5 Drag&amp;Drop 拖拽事件</strong></h3>
<p>　　关于Drag&amp;Drop拖拽事件，之前我写过一篇专门介绍的文章<a style="font-weight: bold;" href="http://blog.bingo929.com/google-enjoy-html5-drag-drop-filereaderenren.html" target="_blank">《给力的 Google HTML5 训练营(HTML5 Drag&amp;Drop 拖拽、FileReader实例教程)》</a>，那篇文章详细讲解了Drag &amp; Drap事件的原理和代码实例，这里的拖拽上传实现原理基本上是一样的，大家有兴趣或不太了解的话可以先看看那篇文章，我在这里就不再过多啰嗦了~下面直接出拖拽上传简要代码实例：</p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> oDragWrap <span style="color: #339933;">=</span> document.<span style="color: #660066;">body</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #006600; font-style: italic;">//拖进</span><br />
oDragWrap.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'dragenter'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　e.<span style="color: #660066;">preventDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #006600; font-style: italic;">//拖离</span><br />
oDragWrap.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'dragleave'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　dragleaveHandler<span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #006600; font-style: italic;">//拖来拖去 , 一定要注意dragover事件一定要清除默认事件</span><br />
<span style="color: #006600; font-style: italic;">//不然会无法触发后面的drop事件</span><br />
oDragWrap.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'dragover'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　e.<span style="color: #660066;">preventDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #006600; font-style: italic;">//扔</span><br />
oDragWrap.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'drop'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　dropHandler<span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">var</span> dropHandler <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #006600; font-style: italic;">//将本地图片拖拽到页面中后要进行的处理都在这</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<h3>获取文件数据 HTML5 File API</h3>
<p>　　在之前<a href="http://blog.bingo929.com/google-enjoy-html5-drag-drop-filereaderenren.html" target="_blank">那篇文章</a>中我也有介绍过关于File API中的FileReader接口，作为 <a href="http://www.w3.org/TR/FileAPI/" target="_blank">File API</a> 的一部分，<a href="http://www.w3.org/TR/FileAPI/#dfn-filereader" target="_blank">FileReader</a> 专门用于读取文件，根据 W3C 的定义，FileReader 接口 “提供一些读取文件的方法与一个包含读取结果的事件模型”。关于FileReader的详细介绍和代码实例大家可以先去看看那篇<a href="http://blog.bingo929.com/google-enjoy-html5-drag-drop-filereaderenren.html" target="_blank">文章</a>。</p>
<p>　　今天我着重介绍一下File API中的FileList接口,它主要通过两个途径获取本地文件列表，一是<strong>&lt;input type=&#8221;file&#8221;&gt;</strong>的表单形式，另一种则是<strong>e.dataTransfer.files</strong>拖拽事件传递的文件信息。很显然，我们这里会用到后者。</p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> fileList <span style="color: #339933;">=</span> e.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">files</span><span style="color: #339933;">;</span></div></div>
<p>　　使用<strong>files方法</strong>将会获取到拖拽文件的数组形势的数据，每个文件占用一个数组的索引，如果该索引不存在文件数据，将返回null值。可以通过<strong>length</strong>属性获取文件数量.</p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> fileNum <span style="color: #339933;">=</span> fileList.<span style="color: #660066;">length</span><span style="color: #339933;">;</span></div></div>
<p>　　拖拽上传需要注意的是需要判断两个条件，1:拖拽的是文件不是页面中的元素; 2:拖拽的是图片而不是其它文件,可以通过file.type属性获取文件的类型</p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #006600; font-style: italic;">//检测是否是拖拽文件到页面的操作</span><br />
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>fileList.<span style="color: #660066;">length</span> <span style="color: #339933;">===</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br />
<span style="color: #006600; font-style: italic;">//检测文件是不是图片</span><br />
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>fileList<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">type</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'image'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">===</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span></div></div>
<p>　　下面让我们来看看如何结合之前的拖拽事件来实现拖拽图片并在页面中进行预览：</p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> dropHandler <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　e.<span style="color: #660066;">preventDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
　<span style="color: #006600; font-style: italic;">//获取文件列表</span><br />
　<span style="color: #003366; font-weight: bold;">var</span> fileList <span style="color: #339933;">=</span> e.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">files</span><span style="color: #339933;">;</span><br />
<br />
　<span style="color: #006600; font-style: italic;">//检测是否是拖拽文件到页面的操作</span><br />
　<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>fileList.<span style="color: #660066;">length</span> <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br />
<br />
　<span style="color: #006600; font-style: italic;">//检测文件是不是图片</span><br />
　<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>fileList<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">type</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'image'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">===</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><br />
<br />
　<span style="color: #006600; font-style: italic;">//实例化file reader对象</span><br />
　<span style="color: #003366; font-weight: bold;">var</span> reader <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> FileReader<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
　<span style="color: #003366; font-weight: bold;">var</span> img <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'img'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
　reader.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　　img.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">result</span><span style="color: #339933;">;</span><br />
　　oDragWrap.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>img<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
　<span style="color: #009900;">&#125;</span><br />
　reader.<span style="color: #660066;">readAsDataURL</span><span style="color: #009900;">&#40;</span>fileList<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span></div></div>
<p>　　这里有一个简单的<a href="http://www.bingo929.com/mytest/dragtest.html" target="_blank">拖拽图片预览的Demo</a></p>
<p>　　这时你如果用FireBug等类似调试工具查看DOM的话，会看到&lt;img&gt;标签的src属性是一个超长的文件二进制数据，所以如果DOM有很多这类图片，那就要当心浏览器性能了，因为这些数据极大地扩充的页面的代码量，而每次页面的reflow都会对浏览器形成很大的负担，So,如果这些图片还在DOM中，那就尽量不要做动画或任何重绘操作，如果真的要做就尽量让图片脱离文档流，让其绝对定位比较靠谱。</p>
<p style="background:#FFF7D1;padding:10px;color:#D6006D;">
补充：可以使用<strong><a href="https://developer.mozilla.org/en/DOM/window.URL.createObjectURL" target="_blank">window.URL.createObjectURL(file)</a></strong>来获取文件的URL(Chrome下用<strong>window.webkitURL.createObjectURL(file)</strong>)，这种方式获取的URL要比上面说的<strong>readAsDataURL</strong>简短很多。而且可以省去使用FileReader。下面是使用readAsDataURL与createObjectURL生成的&lt;img&gt;代码对比：
</p>
<p><a href="http://blog.bingo929.com/wp-content/uploads/2011/12/readasdataurl-vs-createobjecturl.png"><img src="http://blog.bingo929.com/wp-content/uploads/2011/12/readasdataurl-vs-createobjecturl-500x241.png" alt="readasdataurl-vs-createobjecturl" title="readAsDataURL与createObjectUrl对比" width="500" height="241" class="alignnone size-medium wp-image-3247" /></a></p>
<p>优化后的代码：</p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> dropHandler <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　e.<span style="color: #660066;">preventDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
　<span style="color: #003366; font-weight: bold;">var</span> fileList <span style="color: #339933;">=</span> e.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">files</span><span style="color: #339933;">;</span>　　<span style="color: #006600; font-style: italic;">//获取文件列表</span><br />
　<span style="color: #003366; font-weight: bold;">var</span> img <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'img'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
　<span style="color: #006600; font-style: italic;">//检测是否是拖拽文件到页面的操作</span><br />
　<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>fileList.<span style="color: #660066;">length</span> <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br />
<br />
　<span style="color: #006600; font-style: italic;">//检测文件是不是图片</span><br />
　<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>fileList<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">type</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'image'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">===</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><br />
　<br />
　<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">URL</span>.<span style="color: #660066;">createObjectURL</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　　<span style="color: #006600; font-style: italic;">//FF4+</span><br />
　　img.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> window.<span style="color: #660066;">URL</span>.<span style="color: #660066;">createObjectURL</span><span style="color: #009900;">&#40;</span>fileList<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
　<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">webkitURL</span>.<span style="color: #660066;">createObjectURL</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　　<span style="color: #006600; font-style: italic;">//Chrome8+</span><br />
　　img.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> window.<span style="color: #660066;">webkitURL</span>.<span style="color: #660066;">createObjectURL</span><span style="color: #009900;">&#40;</span>fileList<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
　<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span><br />
　　<span style="color: #006600; font-style: italic;">//实例化file reader对象</span><br />
　　<span style="color: #003366; font-weight: bold;">var</span> reader <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> FileReader<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
　　reader.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　　　img.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">result</span><span style="color: #339933;">;</span><br />
　　　oDragWrap.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>img<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
　　<span style="color: #009900;">&#125;</span><br />
　　reader.<span style="color: #660066;">readAsDataURL</span><span style="color: #009900;">&#40;</span>fileList<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
　<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>　　需要注意的是，<strong>window.URL.createObjectURL</strong>是有生命周期的，也就意味着你每用此方法获取URL，其生命周期都会和DOM一样，它会单独占用内存，所以当删除图片或不再需要它是，记得用<strong>window.URL.revokeObjectURL(file)</strong>来释放其内存。当然，如果你没有释放，刷新页面也是可以释放的。</p>
<h3>AJAX上传图片(file.getAsBinary &amp; FormData)</h3>
<p>　　既然已经获取到了拖拽到web页面中图片的数据，下一步就是将其发送到服务器端了。</p>
<p>　　话说HTML5时代之前，AJAX传输文件二进制流数据是不可能完成的事情，而现在我们完全可以通过<strong>file.getAsBinary</strong>获取文件的二进制数据流，进而将其当做XHR的data数据传送到后端，8过由于Chrome不支持file的getAsBinary方法，FF3.6+支持此方法。所以Chrome就要另寻它法了，这时我们发现<a href="http://www.w3.org/TR/XMLHttpRequest2/" target="_blank">XMLHttpRequest Level 2</a>中的FormData接口完美解决了这个问题，它可以很快捷的模拟Form表单数据并通过AJAX发送至后端，FormData的支持情况是FF5及以上支持，Chrome12及以上支持。</p>
<p>　　<strong> file.getAsBinary</strong>获取文件流很简单，但是要想上传数据，就要模拟一下表单的数据格式了，首先看看模拟表单的js代码, <strong>FormData</strong>模拟表单数据时更是简洁，不用麻烦的去拼字符串，而是直接将数据append到formdata对象中即可：</p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> xhr <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> XMLHttpRequest<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003366; font-weight: bold;">var</span> url <span style="color: #339933;">=</span> <span style="color: #3366CC;">'http://upload.renren.com/......'</span><span style="color: #339933;">;</span><br />
<span style="color: #003366; font-weight: bold;">var</span> boundary <span style="color: #339933;">=</span> <span style="color: #3366CC;">'-----------------------'</span> <span style="color: #339933;">+</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003366; font-weight: bold;">var</span> fileName <span style="color: #339933;">=</span> file.<span style="color: #000066;">name</span><span style="color: #339933;">;</span><br />
<br />
xhr.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;post&quot;</span><span style="color: #339933;">,</span> url<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
xhr.<span style="color: #660066;">setRequestHeader</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Content-Type'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'multipart/form-data; boundary='</span> <span style="color: #339933;">+</span> boundary<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">FormData</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　<span style="color: #006600; font-style: italic;">//Chrome12+</span><br />
　<span style="color: #003366; font-weight: bold;">var</span> formData <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> FormData<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
　formData.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'file'</span><span style="color: #339933;">,</span> file<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
　formData.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'hostid'</span><span style="color: #339933;">,</span> userId<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
　formData.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'requestToken'</span><span style="color: #339933;">,</span> t<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
　data <span style="color: #339933;">=</span> formData<span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>file.<span style="color: #660066;">getAsBinary</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
　<span style="color: #006600; font-style: italic;">//FireFox 3.6+</span><br />
　data <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;--&quot;</span> <span style="color: #339933;">+</span><br />
　boundary <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;Content-Disposition: form-data; &quot;</span> <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;name=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">'file'</span> <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span>; &quot;</span> <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;filename=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> <span style="color: #339933;">+</span><br />
　unescape<span style="color: #009900;">&#40;</span>encodeURIComponent<span style="color: #009900;">&#40;</span>file.<span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;Content-Type: image/jpeg&quot;</span> <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　file.<span style="color: #660066;">getAsBinary</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;--&quot;</span> <span style="color: #339933;">+</span><br />
　boundary <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;Content-Disposition: form-data; &quot;</span> <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;name=<span style="color: #000099; font-weight: bold;">\&quot;</span>hostid<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　userId <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;--&quot;</span> <span style="color: #339933;">+</span><br />
　boundary <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;Content-Disposition: form-data; &quot;</span> <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;name=<span style="color: #000099; font-weight: bold;">\&quot;</span>requestToken<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　t <span style="color: #339933;">+</span><br />
　crlf <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">&quot;--&quot;</span> <span style="color: #339933;">+</span><br />
　boundary <span style="color: #339933;">+</span><br />
　<span style="color: #3366CC;">'--'</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
xhr.<span style="color: #660066;">send</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>首先表单数据headers头信息需要以下两项：</p>
<ul>
<li>Content-Type ： 设置其为multipart/form-data来模拟表单数据</li>
<li>boundary ： 表单数据中的分隔符，用于分隔不同的文件或表单项，这是服务器端设置的格式。</li>
</ul>
<p>发送时的post数据类似这样：</p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">-------------------------</span><span style="color: #CC0000;">1323611763556</span><br />
Content<span style="color: #339933;">-</span>Disposition<span style="color: #339933;">:</span> form<span style="color: #339933;">-</span>data<span style="color: #339933;">;</span> <span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;file&quot;</span><span style="color: #339933;">;</span> filename<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;4.jpg&quot;</span><br />
Content<span style="color: #339933;">-</span>Type<span style="color: #339933;">:</span> image<span style="color: #339933;">/</span>jpeg<br />
<br />
ÿØÿà�JFIF�...这里是文件二进制流...~iúoî­5P<span style="color: #339933;">%-</span>vãîHü 4QHgÿÙ<br />
<span style="color: #339933;">-------------------------</span><span style="color: #CC0000;">1323611763556</span><br />
Content<span style="color: #339933;">-</span>Disposition<span style="color: #339933;">:</span> form<span style="color: #339933;">-</span>data<span style="color: #339933;">;</span> <span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;hostid&quot;</span><br />
<br />
<span style="color: #CC0000;">229421603</span><br />
<span style="color: #339933;">-----------------------------</span><span style="color: #CC0000;">1323612996486</span><br />
<br />
Content<span style="color: #339933;">-</span>Disposition<span style="color: #339933;">:</span> form<span style="color: #339933;">-</span>data<span style="color: #339933;">;</span> <span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;requestToken&quot;</span><br />
<br />
<span style="color: #CC0000;">369009193</span><br />
<span style="color: #339933;">-------------------------</span><span style="color: #CC0000;">1323611763556</span><span style="color: #339933;">--</span></div></div>
<p>好了，现在文件上传成功后你就可以按照平常AJAX的操作来进行后续处理了。</p>
<p>最后，再来总结一下拖拽上传的技术要点：</p>
<ol>
<li><strong>监听拖拽</strong>：监听页面元素的拖拽事件，包括：<strong>dragenter、dragover、dragleave和drop</strong>，一定要将dragover的默认事件取消掉，不然无法触发drop事件。如需拖拽页面里的元素，需要给其添加属性draggable=&#8221;true&#8221;；</li>
<li><strong>获取拖拽文件</strong>：在drop事件触发后通过<strong>e.dataTransfer.files</strong>获取拖拽文件列表，<strong>.length</strong>属性获取文件数量，.type属性获取文件类型。</li>
<li><strong>读取图片数据并添加预览图</strong>：实例化<strong>FileReader</strong>对象，通过其<strong>readAsDataURL(file)</strong>方法获取文件二进制流，并监听其<strong>onload事件</strong>，将<strong>e.result</strong>赋值给img的src属性，最后将图片append到DOM中。</li>
<li><strong>发送图片数据</strong>：使用<strong>file.getAsBinary</strong> 和 <strong>FormDat</strong>a分别模拟表单数据AJAX提交文件流。</li>
</ol>
<p>　　OK,拖拽上传就讲到这里，欢迎大家一起探讨。也在这里推荐一下<a href="http://fed.renren.com" target="_blank"><strong>人人网FED的Blog</strong></a>，大家多多捧场，哈~</p>
<h3>留意更新</h3>
<p><a href="http://feed.feedsky.com/bingo929" target="_blank">订阅彬Go</a>以查看HTML5最新资源、教程。</p>
<div style="border: 1px solid #afedff; padding: 10px; display: block; background-color: #e9faff;"><strong><span style="color: #ff0000;">转载声明:</span></strong><br />
原载:<a href="http://blog.bingo929.com/">彬Go</a>——关注前端开发 &amp; Web UI设计<br />
本文链接:<a title="人人网首页拖拽上传详解(HTML5 Drag&amp;Drop、FileReader API、formdata)" href="http://blog.bingo929.com/renren-drag-drop-photo-filereader-formdata.html">http://blog.bingo929.com/renren-drag-drop-photo-filereader-formdata.html</a><br />
<a title="人人网首页拖拽上传详解(HTML5 Drag&amp;Drop、FileReader API、formdata)" href="http://blog.bingo929.com/renren-drag-drop-photo-filereader-formdata.html"> </a><a title="人人网首页拖拽上传详解(HTML5 Drag&amp;Drop、FileReader API、formdata)" href="http://blog.bingo929.com/renren-drag-drop-photo-filereader-formdata.html"></a>如需转载必须以链接形式注明原载或原文地址，谢谢合作</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.bingo929.com/renren-drag-drop-photo-filereader-formdata.html/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>晒晒我两年前的大学毕业设计-滨购网</title>
		<link>http://blog.bingo929.com/my-profiles-bingo-web-design-div-css.html</link>
		<comments>http://blog.bingo929.com/my-profiles-bingo-web-design-div-css.html#comments</comments>
		<pubDate>Fri, 04 Sep 2009 09:09:39 +0000</pubDate>
		<dc:creator>彬Go</dc:creator>
				<category><![CDATA[我的作品]]></category>
		<category><![CDATA[作品]]></category>
		<category><![CDATA[网页设计]]></category>

		<guid isPermaLink="false">http://blog.bingo929.com/?p=2607</guid>
		<description><![CDATA[　　前些日子博客大搬家，就把原来空间中的很多陈旧的资料都整理了一遍，无意中发现了曾经的毕业设计作品，是07年末完成的，呵呵，所以拿上来晒晒，不然真的都要&#8221;一层灰&#8221;了，... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.bingo929.com/my-profiles-bingo-web-design-div-css.html"><img src="http://blog.bingo929.com/wp-content/uploads/2009/09/profile-bingo-title.jpg" alt="我的作品-毕业设计-滨购网" title="我的作品-毕业设计-滨购网" width="500" height="150" class="alignnone size-full wp-image-2608" /></a></p>
<p>　　前些日子博客大搬家，就把原来空间中的很多陈旧的资料都整理了一遍，无意中发现了曾经的毕业设计作品，是07年末完成的，呵呵，所以拿上来晒晒，不然真的都要&#8221;一层灰&#8221;了，吼吼吼~~</p>
<p><span id="more-2607"></span></p>
<p>　　这个毕业设计的题目好像叫做《大学城的电子上商务网站建设》什么的，所以我就琢磨了这么一个网站，它主要是面向我们大学城小范围的几个高校的学生，提供一个网上二手闲置物品买卖交换以及交友等功能的平台。我和另一位同学一起完成这个毕设，我负责网站的整体功能规划、功能需求、UI界面设计和前端开发，我的搭档负责整站的.net后台开发和前后台整合工作。记得整个项目花了将近半年时间磨磨蹭蹭的做，最后也只完成了一半去完成的答辩，不过还是得了高分被推荐到了校级答辩，嘎嘎嘎~~后来因为去了天津Google工作，就再也没继续这个项目了，说来有些可惜。</p>
<p>　　先来个网站的logo，嘿，滨购网~顾名思义，就是滨海大学城购物网站，所以域名注册了bingo929.com，也就是现在这个博客&#8221;彬Go&#8221;的前身，哈~~滨购和彬Go读起来还是一样的~~蛮巧~~<br />
<img src="http://www.bingo929.com/mytest/bingo_logo.jpg" alt="滨购网logo" width="367" height="200" /></p>
<p>下面是网站的部分界面效果图，设计借鉴了淘宝网，但没有抄袭，呵呵~~</p>
<p><a href="http://blog.bingo929.com/wp-content/uploads/2009/09/index.jpg" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/09/index-500x505.jpg" alt="滨购网-首页效果图" title="滨购网-首页效果图" width="500" height="505" class="alignnone size-medium wp-image-2610" /></a><br />
<em>滨购网首页效果图&#8230;点击上图查看清晰大图</em></p>
<p><a href="http://blog.bingo929.com/wp-content/uploads/2009/09/product_list.jpg" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/09/product_list-500x857.jpg" alt="滨购网-产品列表页面效果图" title="滨购网-产品列表页面效果图" width="500" height="857" class="alignnone size-medium wp-image-2613" /></a><br />
<em>滨购网产品列表页面效果图&#8230;点击上图查看清晰大图</em></p>
<p><a href="http://blog.bingo929.com/wp-content/uploads/2009/09/product.jpg" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/09/product-500x361.jpg" alt="滨购网-产品页面效果图" title="滨购网-产品页面效果图" width="500" height="361" class="alignnone size-medium wp-image-2615" /></a><br />
<em>滨购网产品页面效果图&#8230;点击上图查看清晰大图</em></p>
<p><a href="http://blog.bingo929.com/wp-content/uploads/2009/09/add1.jpg" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/09/add1-500x580.jpg" alt="滨购网-添加商品页面效果图" title="滨购网-添加商品页面效果图" width="500" height="580" class="alignnone size-medium wp-image-2616" /></a><br />
<em>滨购网添加商品页面效果图&#8230;点击上图查看清晰大图</em></p>
<p>　　当初把这些效果图整成页面可是下了一番功夫，但现在看来实在烂得不行，虽然解决了浏览器兼容性问题，但里面没有任何语义化可言，所以还是不拿出来寒颤了，吼吼~~</p>
<p>　　OK~~就总结到这，把它作为美好的回忆永久封藏在彬Go博客中~~嘎嘎嘎~~</p>
<div style="border: 1px solid #afedff; padding: 10px; display: block; background-color: #e9faff;"><strong><span style="color: #ff0000;">转载声明:</span></strong><br />
原载:<a href="http://blog.bingo929.com/">彬Go</a>——集前端开发/网页设计/网站可用性/用户体验于一体的趣味互联网生活<br />
本文链接:<a title="晒晒我曾经的大学毕业设计-滨购网" href="http://blog.bingo929.com/my-profiles-bingo-web-design-div-css.html">http://blog.bingo929.com/my-profiles-bingo-web-design-div-css.html<br />
</a>如需转载必须以链接形式注明原载或原文地址，谢谢合作</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.bingo929.com/my-profiles-bingo-web-design-div-css.html/feed</wfw:commentRss>
		<slash:comments>54</slash:comments>
		</item>
		<item>
		<title>近期作品:麻将电视赛官网UI设计+前端开发</title>
		<link>http://blog.bingo929.com/tianjin-ma-jiang-mahjong-contest-website-ui-design-css.html</link>
		<comments>http://blog.bingo929.com/tianjin-ma-jiang-mahjong-contest-website-ui-design-css.html#comments</comments>
		<pubDate>Sat, 13 Jun 2009 08:47:14 +0000</pubDate>
		<dc:creator>彬Go</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[我的作品]]></category>
		<category><![CDATA[网页设计]]></category>
		<category><![CDATA[DIV+CSS]]></category>
		<category><![CDATA[web标准]]></category>
		<category><![CDATA[作品]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[效果图]]></category>

		<guid isPermaLink="false">http://blog.bingo929.com/?p=2432</guid>
		<description><![CDATA[今天展示一下五月底用4天时间完成的一个小项目，天津麻将电视大奖赛的专题官网UI设计+前端开发。这个项目要的很急，呵呵，所以非常非常赶&#8230;界面方面可能还有很多不如意的地方，但是... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.bingo929.com/tianjin-ma-jiang-mahjong-contest-website-ui-design-css.html"><img class="alignnone size-full wp-image-2433" title="天津麻将-电视大奖赛-UI设计-前端开发" src="http://blog.bingo929.com/wp-content/uploads/2009/06/majiang-ui.jpg" alt="天津麻将-电视大奖赛-UI设计-前端开发" width="500" height="150" /></a></p>
<p>今天展示一下五月底用4天时间完成的一个小项目，天津麻将电视大奖赛的专题官网UI设计+前端开发。这个项目要的很急，呵呵，所以非常非常赶&#8230;界面方面可能还有很多不如意的地方，但是网页的前端代码我是在既追求效率又追求质量的基础上完成的。这个项目的交互原型和详细需求不是我出的，所以内容结构和内容量、布局等不是我能大规模修改的。我只能在原型的基础上进行创意设计和修饰配色等。</p>
<p><span id="more-2432"></span><br />
<span style="font-size: medium;"><strong>先来两张首页效果图:</strong></span></p>
<p>两个版本之间的区别只在于赛事进程版块内，由于需求的内容量过大，所以导致页面很单调，版本一是我优化的，版本二是按需求的内容量设计的。这个需求我看到第一眼就觉得很无奈，这么庞大的信息量，有必要吗？！用户100%不会耐着性子把内容看完的，反倒是需要一些突出的图片或是颜色来引导用户浏览网页中最重要的内容，比如这个页面中的&#8221;报名&#8221;按钮、&#8221;赛事进程&#8221;板块和参赛步骤。再有就是既然是麻将游戏的电视比赛，那就一定要通过设计元素突出主题，能让用户在没有看到文字的时候也能大致了解页面的主题内容是什么，提高页面的可识别性。Banner的Q版电视人物和一些麻将就是起到这个效果。</p>
<p>关于页面的风格，我借鉴了很多腾讯的设计风格，走清新路线，希望能在炎炎夏日给人以清爽的感受&#8230;.导航是Copy的，哇咔咔&#8230;.时间紧迫啊&#8230;.尽管拍我吧，哈</p>
<p>顺便说个题外话，哈，那个&#8221;易游开心&#8221;很山寨&#8230; 囧rz</p>
<h3>天津麻将电视大赛首页效果图-版本1</h3>
<p><a href="http://blog.bingo929.com/wp-content/uploads/2009/06/index2.jpg"><img class="alignnone size-medium wp-image-2437" title="天津麻将电视大奖赛-首页效果图1" src="http://blog.bingo929.com/wp-content/uploads/2009/06/index2-500x446.jpg" alt="天津麻将电视大奖赛-首页效果图1" width="500" height="446" /></a><br />
<em>点击小图查看清晰大图</em></p>
<h3>天津麻将电视大赛首页效果图-版本2</h3>
<p><a href="http://blog.bingo929.com/wp-content/uploads/2009/06/e8b59be4ba8be4b893e9a298e9a696e9a1b5e69588e69e9ce59bbe.jpg"><img class="alignnone size-medium wp-image-2438" title="天津麻将电视大奖赛-效果图2" src="http://blog.bingo929.com/wp-content/uploads/2009/06/e8b59be4ba8be4b893e9a298e9a696e9a1b5e69588e69e9ce59bbe-500x446.jpg" alt="天津麻将电视大奖赛-效果图2" width="500" height="446" /></a><br />
<em>点击小图查看清晰大图</em></p>
<p><strong><span style="font-size: medium;"><a href="http://www.bingo929.com/mytest/mahjong/index.html" target="_blank">天津麻将电视大赛专题网站Demo</a></span></strong>(点击查看)</p>
<p>下面来总结一下我使用的一些前端技术和经验，希望能对大家有所帮助，大家如果有更好的意见欢迎留言，互相学习。</p>
<h3>1.CSS书写顺序</h3>
<p><img class="alignnone size-full wp-image-2440" title="css-书写顺序" src="http://blog.bingo929.com/wp-content/uploads/2009/06/css-orders.gif" alt="css-书写顺序" width="500" height="120" /></p>
<p>注重CSS书写顺序使很多前端开发新人所忽视的，其实这种习惯的好处不用说大家也能猜出一二，最最主要的还是方便日后的查询和维护。</p>
<h3>2.结构化CSS代码</h3>
<p><img class="alignnone size-full wp-image-2441" title="css-结构化-树形" src="http://blog.bingo929.com/wp-content/uploads/2009/06/css-mahjong2.gif" alt="css-结构化-树形" width="500" height="120" /></p>
<p>将CSS代码结构化之后，让它符合树形结构，便于查找各级元素的CSS样式属性。</p>
<h3>3.杜绝使用CSS Hack</h3>
<p>很多前端新人都把学习重点放在CSS Hack上，为了让大部分主流浏览器兼容自己的网页，想方设法在CSS代码中插入适用于各种不同浏览器的Hack。其实完全没有必要，通常情况下的网页，基本上都可以在不使用CSS Hack的情况下达到浏览器兼容效果，当然，这需要扎实的CSS基础和丰富的经验。</p>
<h3>4.针对IE6兼容问题采用&#8221;单挑&#8221;原则</h3>
<p><img class="alignnone size-full wp-image-2442" title="ie6-兼容性-css" src="http://blog.bingo929.com/wp-content/uploads/2009/06/ie6-css.gif" alt="ie6-兼容性-css" width="500" height="61" /></p>
<p>如果是IE6单独存在的问题，那我会单独命名一个CSS文件，把适合IE6的标准CSS样式写在这个文件中，并在网页里使用IE条件注释达到仅让IE6读取该CSS文件的目的。呵呵，出于我对IE6的愤慨之情，所以把文件名命名为这个比较不&#8221;和谐&#8221;的名字。</p>
<p>注释如下:<br />
&lt;!&#8211;[if IE 6]&gt;<br />
&lt;link rel=&#8221;stylesheet&#8221; type=&#8221;text/css&#8221; href=&#8221;style/fuck_ie6.css&#8221; /&gt;<br />
&lt;![endif]&#8211;&gt;</p>
<h3>5.为CSS写目录索引</h3>
<p><img class="alignnone size-full wp-image-2443" title="css-目录索引" src="http://blog.bingo929.com/wp-content/uploads/2009/06/css-index.gif" alt="css-目录索引" width="149" height="272" /></p>
<p>这个没什么好说的，作用类似图书的目录，大家有兴趣可以阅读彬Go关于CSS索引注释的文章《<a title="点击该标题查看 CSS最佳实践:为今后的项目制作空白CSS模板文件" href="../css-best-practices-css-template-file.html">CSS最佳实践:为今后的项目制作空白CSS模板文件</a>》，这里面详细讲解了关于如何写CSS索引注释和它的好处。</p>
<h3>6.遵循命名规范</h3>
<p>命名规范对于一个团队来说是相当重要的，对于个人来说也是有一定的好处的。之前彬Go发表过一篇《<a title="点击该标题查看 Web UI 设计(网页设计)命名规范" href="../web-ui-design-name-convention.html">Web UI 设计(网页设计)命名规范</a>》，是我个人总结的一些相关命名规范内容，感兴趣的话可以看看。</p>
<h3>7.纯CSS实现导航标签&#8221;面包屑&#8221;效果</h3>
<p><img class="alignnone size-full wp-image-2444" title="css-导航-面包屑" src="http://blog.bingo929.com/wp-content/uploads/2009/06/css-mahjong3.gif" alt="css-导航-面包屑" width="500" height="120" /></p>
<p>我个人认为这个没什么可说的，但是考虑到很多前端新人可能不太了解如何实现，所以简单说一下实现的原理。它的效果就是让导航(已选择)标签停留在相应的页面上。比如首页的话，导航标签的&#8221;首页&#8221;高亮；在&#8221;奖品详情&#8221;页面，相应的&#8221;奖品详情&#8221;标签高亮。</p>
<p>基本实现原理就是在不同的页面为&lt;body&gt;标签添加一个id。比如首页是&lt;body id=&#8221;home&#8221;&gt;,赛事报道页面则是&lt;body id=&#8221;report&#8221;&gt;,以此类推。然后就可以使用CSS专门针对不同的body id值设置CSS样式了。我的样式是这样的(已缩减):</p>
<p>#home .nav_home a:link,#report .nav_report a:link  {background-position:0 -78px;color:#005ea5;}</p>
<h3>8.CSS Sprites(CSS图像拼合) 技术</h3>
<p>CSS Sprites近期收到了国内前端们的热烈追捧，但我只在网站中的导航上使用了这个技术。为什么呢？原因有以下两点:</p>
<p>1.CSS Sprites增加了切图时间，但这个项目时间很紧。<br />
2.这个网站的流量不大，使用CSS Sprites技术没什么意义，不会有什么明显的减小流量和请求的效果。</p>
<p>也就是说CSS Sprites的优势基本无法在这个网站上得到体现。所以我这次放弃使用CSS Sprites技术，从而换来了开发(切图)效率上的提高。</p>
<p>如果大家想了解更多关于CSS Sprites的知识，可以看看《<a title="点击该标题查看 CSS Sprites(CSS图像拼合技术)教程、工具集合" rel="bookmark" href="../css-sprites-css-techniques-tools-tutorials.html">CSS Sprites(CSS图像拼合技术)教程、工具集合</a>》。</p>
<h3>9.通过W3C xHTML 和 CSS 官方验证</h3>
<p><img class="alignnone size-full wp-image-2445" title="css-w3c-认证" src="http://blog.bingo929.com/wp-content/uploads/2009/06/css-w3c.gif" alt="css-w3c-认证" width="500" height="140" /></p>
<p>这个是必须的，这玩意儿地球人都知道，我就不多说了。但遗憾的是，这个认证只停留在我的Demo中，运营中的实际网站已经有很多错误了，是为网站填充内容的运营客服人员搞乱的，无奈一下&#8230;.我也懒得改了，有Demo就行了。</p>
<p><strong><span style="font-size: medium;"><a href="http://www.bingo929.com/mytest/mahjong/index.html" target="_blank">天津麻将电视大赛专题网站Demo</a></span></strong>(点击查看)</p>
<p>好了，关于使用到的技术我目前只想到这些，以后可能还会补充新的。最后想说一下，前端开发并不是非要追求所有高级技术，并不是在一个项目中使用最高级的技术就能证明米的能力有多强。真正的高手是懂得分析一个前端开发项目，用最适合的前端技术实现当前项目的人，这样才能记得到质量有追求了最高的效率。比如我刚才说的CSS Sprites，它明显不适用于这个项目。再比如滑动门，我也没有使用在导航上，因为这个专题网站是有有效期的，基本上不会涉及到导航文字的改变，所以浪费时间在使用这些技术上的话毫无意义。我相信有更多的高手能使用比我更恰当的技术来完成自己的项目，所以在下才把这篇文章发上来，希望能互相学习。大家尽管拍砖啦&#8230;.嘎嘎嘎~~</p>
<h3>留意更新</h3>
<p><a href="http://feed.feedsky.com/bingo929" target="_blank">订阅彬Go</a>以查看前端开发/CSS相关最新教程及资源。</p>
<div style="border: 1px solid #afedff; padding: 10px; display: block; background-color: #e9faff;"><strong><span style="color: #ff0000;">转载声明:</span></strong><br />
原载:<a href="../">彬Go</a>——集前端开发/网页设计/网站可用性/用户体验于一体的趣味互联网生活<br />
本文链接:<a title="近期作品:天津麻将电视大奖赛专题官网UI设计+前端开发" href="http://blog.bingo929.com/tianjin-ma-jiang-mahjong-contest-website-ui-design-css.html">http://blog.bingo929.com/tianjin-ma-jiang-mahjong-contest-website-ui-design-css.html<br />
</a>如需转载必须以链接形式注明原载或原文地址，谢谢合作</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.bingo929.com/tianjin-ma-jiang-mahjong-contest-website-ui-design-css.html/feed</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>展示:大学时期做的第一个xHTML+CSS项目</title>
		<link>http://blog.bingo929.com/my-project-psychology-website-css.html</link>
		<comments>http://blog.bingo929.com/my-project-psychology-website-css.html#comments</comments>
		<pubDate>Sun, 31 May 2009 09:32:53 +0000</pubDate>
		<dc:creator>彬Go</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[我的作品]]></category>
		<category><![CDATA[网页设计]]></category>
		<category><![CDATA[作品]]></category>

		<guid isPermaLink="false">http://blog.bingo929.com/?p=2427</guid>
		<description><![CDATA[今天我要向大家展示一下我早在大学三年级时为学校的心理咨询健康中心做的一个网站，呵呵，也许大家会纳闷为什么现在拿出来展示？因为我从毕业工作到现在已经一年了，想把当初自己为... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.bingo929.com/my-project-psychology-website-css.html"><img class="alignnone size-full wp-image-2428" title="彬Go-xHTML-css-作品" src="http://blog.bingo929.com/wp-content/uploads/2009/05/my-project-xhtml-css.jpg" alt="彬Go-xHTML-css-作品" width="500" height="120" /></a></p>
<p>今天我要向大家展示一下我早在大学三年级时为学校的心理咨询健康中心做的一个网站，呵呵，也许大家会纳闷为什么现在拿出来展示？因为我从毕业工作到现在已经一年了，想把当初自己为之骄傲的作品拿出来让大家拍拍砖，也是给自己一年的努力做一个对比，过两天我会再发一个近期的UI设计+前端项目作品，就是想总结一下从我开始学UI设计和CSS到现在到底都有哪些进步，也希望大家多多拍砖，但恳求手下留情，嘎嘎嘎~~<br />
<span id="more-2427"></span></p>
<p>先简单介绍一下当初做的这个网站吧:这个网站是为我大学心理咨询健康中心做的，全站从页面UI、前端页面到后台程序和数据库都是我自己独立完成的，当初觉得可有成就感了，现在回头看看觉得还是蛮稚嫩的，哈哈。后台的asp程序和SQL数据库我就不提了，简单说一下UI设计和前端页面的制作吧，当初凭着自己的一点点Photoshop功底，设计了这个网站，记得上面的大图花了整整一个晚上，哈，本觉得心理咨询这种机构有种潜意识、梦幻的东西在里面，所以合成了这种场景，结果被人说是学校被水淹了，哈哈~~至于CSS，当初也不懂什么结构啊、语义化啊等等专业术语和书写习惯，只知道尽量让网页符合大多浏览器，所以代码很乱的。</p>
<p><strong>这个网站的开发周期大致是:<br />
</strong>UI设计:2周<br />
前端开发:2周<br />
后台程序:1个月<br />
整合:1周</p>
<p>由于网站是给学校用的，所以放在校园内网了，外网浏览不了。所以在这提供个网站效果图及网站最早的Demo。</p>
<p><a href="http://blog.bingo929.com/wp-content/uploads/2009/05/e5bf83e79086e581a5e5bab7e592a8e8afa2e4b8ade5bf83.png"><img class="alignnone size-medium wp-image-2429" title="暴风彬彬-大学作品-UI设计-xHTML+css" src="http://blog.bingo929.com/wp-content/uploads/2009/05/e5bf83e79086e581a5e5bab7e592a8e8afa2e4b8ade5bf83-500x482.png" alt="暴风彬彬-大学作品-UI设计-xHTML+css" width="500" height="482" /></a><br />
<em>点击上图查看清晰大图</em></p>
<p><a href="http://psychology.bingo929.com/" target="_blank"><span style="font-size: medium;"><strong>查看网站Demo</strong></span></a></p>
<p>大家不要笑话我哦，<strong>再次声明，这是我大三时做的，不是现在做的。</strong>欢迎大家拍砖批评，但不要以09年的技术和审美眼光来衡量这个作品，在下先谢了。过几天我会发个近期的UI+前端作品的。敬请期待:)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bingo929.com/my-project-psychology-website-css.html/feed</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>LOGO作品:曾经给公司做的LOGO设计方案</title>
		<link>http://blog.bingo929.com/iehot-logo-profile.html</link>
		<comments>http://blog.bingo929.com/iehot-logo-profile.html#comments</comments>
		<pubDate>Thu, 06 Nov 2008 15:00:23 +0000</pubDate>
		<dc:creator>暴风彬彬</dc:creator>
				<category><![CDATA[我的作品]]></category>
		<category><![CDATA[LOGO]]></category>
		<category><![CDATA[作品]]></category>

		<guid isPermaLink="false">http://blog.bingo929.com/?p=1819</guid>
		<description><![CDATA[　　今天把曾经给公司设计的几套LOGO方案拙作摆上来，一共设计了大概8套方案，不过有几套个人不是很满意，所以就不放上来&#8221;找骂&#8221;了。8套方案中几乎每套的风格都不一样，因为老板... ]]></description>
			<content:encoded><![CDATA[<p style="float:left;margin-right:10px;"><a href="http://blog.bingo929.com/iehot-logo-profile.html"><img class="alignnone size-medium wp-image-1820" title="iehot-logo-方案" src="http://blog.bingo929.com/wp-content/uploads/2008/11/iehot_logo.png" alt="iehot-logo-方案" width="200" height="150" /></a></p>
<p>　　今天把曾经给公司设计的几套LOGO方案拙作摆上来，一共设计了大概8套方案，不过有几套个人不是很满意，所以就不放上来&#8221;找骂&#8221;了。8套方案中几乎每套的风格都不一样，因为老板比较挑剔，所以当初就多准备了几套。最终定下来的LOGO方案并不是大家看到的左边的方案，我放在第一个主要是因为我个人比较喜欢，当然公司大部分人也都很喜欢。最终定稿的LOGO方案会在下面介绍。</p>
<p><span id="more-1819"></span></p>
<p>　　老板要求LOGO设计的风格大气，而且要能看出是从事互联网行业的公司。最重要的要求是以公司的网址为主，公司名称为辅。（这个要求时候来才提出来的）</p>
<h3>先来看看我个人最喜欢的一套LOGO方案:</h3>
<p style="text-align: center;"><img class="size-medium wp-image-1821 aligncenter" title="iehot-logo-设计" src="http://blog.bingo929.com/wp-content/uploads/2008/11/9_2.jpg" alt="iehot-logo-设计" width="400" height="300" /></p>
<p>　　具体的那些logo寓意什么的我就不写了，大家自己想象吧，吼吼&#8230;</p>
<p style="text-align: center;"><img class="size-medium wp-image-1822  aligncenter" title="logo-作品" src="http://blog.bingo929.com/wp-content/uploads/2008/11/9_3.jpg" alt="logo-作品" width="400" height="300" /></p>
<p>　　这个是我又做的一个logo的立体空间感的效果。这个的人气比较高&#8230;</p>
<h3>另一个没被采纳的LOGO方案:</h3>
<p style="text-align: center;"><img class="size-medium wp-image-1823 aligncenter" title="logo-作品" src="http://blog.bingo929.com/wp-content/uploads/2008/11/3.jpg" alt="logo-作品" width="400" height="300" /></p>
<p>这个logo方案是在&#8221;公司的网址为主，公司名称为辅&#8221;的要求提出之前设计的，可能有点俗？</p>
<h3>被采纳的LOGO方案:</h3>
<p style="text-align: center;"><img class="size-medium wp-image-1824 aligncenter" title="logo-设计-作品" src="http://blog.bingo929.com/wp-content/uploads/2008/11/8.jpg" alt="logo-设计-作品" width="400" height="300" /></p>
<p>　　老板在看到这套LOGO方案的时候，就马上被它的&#8221;土气&#8221;所深深地吸引。这是我设计的最后一套方案，几乎是为老板的个人喜好&#8221;量身定做&#8221;的，所以给他看完的结果也不出所料，老板对这个方案赞不绝口，然后又提出了他个人的几个小小的修改建议。</p>
<p style="text-align: center;"><img class="size-medium wp-image-1825 aligncenter" title="logo-设计" src="http://blog.bingo929.com/wp-content/uploads/2008/11/8_4.jpg" alt="" width="400" height="325" /></p>
<p>　　这个就是最后定稿的LOGO方案了，尽力按照老板的建议去思考，如何修改才能达成他的要求，最终成品&#8230;.</p>
<p>　　通过这个例子，我想说，做设计真的是很痛苦，尤其是为客户做设计，往往你无法淋漓尽致的发挥自己的创意。即使你设计的再有创意，再漂亮，客户只要不喜欢，那就是白费。所以了解客户的想法才是王道，在按照客户的要求设计的同时植入自己的思想和创意，将它们完美结合，这是最理想的结果。但往往并非是想象的这么简单。这就是我慢慢从设计转向前端开发的原因之一，相比之下，前端开发会更能激发我自己的潜能和创意。</p>
<p>　　<strong>设计logo过程中的小插曲:</strong>老板在一开始否决我的方案的时候曾这样&#8221;教导&#8221;我:“我不知道你学没学过设计，我可以给你讲，LOGO设计中的文字和图形间是有固定的尺寸比例的，文字的大小也是有固定的比例的，你设计的作品根本不符合LOGO的所有要求的比例，所以会不好看&#8230;”我听完就汗颜了，看来我真的见识浅薄了，原来LOGO设计中的每个元素之间都是有固定尺寸的规定，我咋没听说过？既然都规定好了，那还设计它干嘛？直接按规定把字和图形都摆上去不就得了！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bingo929.com/iehot-logo-profile.html/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>南开大学滨海学院计算机系足球队宣传视频全套（1、2、3合集）</title>
		<link>http://blog.bingo929.com/computer-football-team-videos.html</link>
		<comments>http://blog.bingo929.com/computer-football-team-videos.html#comments</comments>
		<pubDate>Mon, 22 Sep 2008 16:23:40 +0000</pubDate>
		<dc:creator>暴风彬彬</dc:creator>
				<category><![CDATA[我的作品]]></category>
		<category><![CDATA[我的生活]]></category>
		<category><![CDATA[视频]]></category>
		<category><![CDATA[足球]]></category>

		<guid isPermaLink="false">http://blog.bingo929.com/?p=1148</guid>
		<description><![CDATA[　　时间如水&#8230;一眨眼，我已经毕业半年了，大学的生活给我留下了无数美好的回忆，最深刻的莫过于我永远为之自豪的计算机系足球队，自南开大学滨海学院建校以来，我们计算机系足球... ]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blog.bingo929.com/computer-football-team-videos.html"><img class="size-medium wp-image-1149 aligncenter" title="南开大学滨海学院-计算机系-足球队" src="http://blog.bingo929.com/wp-content/uploads/2008/09/jiniane6ba90.jpg" alt="南开大学滨海学院-计算机系-足球队" width="400" height="149" /></a></p>
<p>　　时间如水&#8230;一眨眼，我已经毕业半年了，大学的生活给我留下了无数美好的回忆，最深刻的莫过于我永远为之自豪的<strong>计算机系足球队</strong>，自<strong>南开大学滨海学院</strong>建校以来，我们计算机系足球队一直是公认的“豪门”，虽然一开始经历了很多坎坷，但从06年开始，计算机足球队便开始铸造自己的辉煌历史，我相信这个历史不会是完结，四连冠也并不是终点。计算机系足球队的兄弟们，以后还有更多的辉煌在等着你们，虽然我现在已经无法披上光荣的<strong>计算机系足球队</strong>战袍，但我会永远关注你们，为你们加油的！我们永远是兄弟！</p>
<p>　　今天把所有计算机系足球队的宣传视频都收集在这里，包括<strong>05年初</strong>拍摄制作的第一版，<strong>07年初</strong>的第二版和<strong>08年</strong>的最新第三版，希望今后能有更多更多第四、第五、第六版&#8230;这些视频能永恒的纪录我们的夺冠的辛酸和喜悦，再大家开始工作各奔东西的时候，打开视频还能回想起当初的<strong>比赛</strong>、当初的<strong>进球</strong>、当初的<strong>夺冠</strong>！</p>
<p><span id="more-1148"></span></p>
<p><br class="spacer_" /></p>
<div id="attachment_1150" class="wp-caption alignnone" style="width: 510px"><a href="http://blog.bingo929.com/wp-content/uploads/2008/09/129.jpg"><img class="size-medium wp-image-1150" title="南开大学滨海学院-计算机系-足球队" src="http://blog.bingo929.com/wp-content/uploads/2008/09/129-500x706.jpg" alt="南开大学滨海学院-计算机系-足球队" width="500" height="706" /></a><p class="wp-caption-text">点击图片看清晰大图</p></div>
<p><br class="spacer_" /></p>
<p><strong><span style="color: #ff0000;">下面开始放视频</span></strong>：</p>
<h3><span style="color: #3366ff;">计算机系足球队宣传视频v1.0<span style="color: #808080;"><span style="font-weight: normal;"><span style="font-size: small;">（摄像:李康、吴涛、王亚林、李彬; 制作:李彬）</span></span></span></span></h3>
<p>　　这段视频拍摄制作时只有04级这么一届，所以才会看到只有那么几个人，哈哈&#8230;不过大家可以看看球场外是什么样子，貌似综合楼刚建好还没装修，后面的学生活动中心（二食堂）那里当时还是平地，方正当时南开大学滨海学院满眼一片狼藉。</p>
<p>
<embed src="http://player.ku6.com/refer/uDrGrnLHJMqf9zYd/v.swf" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="500" height="400"></embed></p>
<h3><span style="color: #3366ff;">计算机系足球队宣传视频v2.0<span style="color: #808080;"><span style="font-weight: normal;"><span style="font-size: small;">（摄像:包迪、吴臣臣; 制作:李彬）</span></span></span></span></h3>
<p>　　这段视频好像是在计算机系足球队两连冠之后拍摄制作的，当时计算机系足球队阵容真是豪华啊&#8230;呵呵</p>
<p><a href="http://blog.bingo929.com/computer-football-team-videos.html"><em>点击这里查看嵌入的视频。</em></a></p>
<h3><span style="color: #3366ff;">计算机系足球队宣传视频v3.0<span style="font-weight: normal;"><span style="font-size: small;"><span style="color: #808080;">（摄像:李江、杨洋; 制作:刘彪）</span></span></span></span></h3>
<p>　　这段视频是四连冠后拍摄制作的，球队又有了好多实力超强的新面孔，我们这些老将也就是凑凑热闹而已，唉，跑不动啦&#8230;.</p>
<p>
<embed src="http://player.ku6.com/refer/tRa3uzz34rwv0Nk5/v.swf" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="500" height="400"></embed></p>
<h3><strong>计算机系足球队宣传视频v4.0 即将登场&#8230;</strong></h3>
<p><br class="spacer_" /></p>
<p><span style="color: #ff0000;">PS:谁那有大合影之类的照片发给我吧，我这不全，我想要最全的，呵呵，我的邮箱:<strong>skar9363@gmail.com</strong></span></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bingo929.com/computer-football-team-videos.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>LOGO作品：艾锐博数字科技</title>
		<link>http://blog.bingo929.com/iverbo-logo.html</link>
		<comments>http://blog.bingo929.com/iverbo-logo.html#comments</comments>
		<pubDate>Mon, 22 Sep 2008 07:39:59 +0000</pubDate>
		<dc:creator>暴风彬彬</dc:creator>
				<category><![CDATA[我的作品]]></category>
		<category><![CDATA[LOGO]]></category>
		<category><![CDATA[作品]]></category>

		<guid isPermaLink="false">http://blog.bingo929.com/?p=1140</guid>
		<description><![CDATA[　 　　下面要介绍的是暴风彬彬几个月前制作的一套艾锐博数字科技LOGO方案，要求结合蜂巢的形状并体现立体感和科技感。 艾锐博logo第一稿:立体感、空间感都比较强，图形中的英文&#8220;IVERB... ]]></description>
			<content:encoded><![CDATA[<p style="float:left;margin-right:10px;"><a href="http://blog.bingo929.com/iverbo-logo.html"><img class="alignnone size-medium wp-image-1146" title="iverbo" src="http://blog.bingo929.com/wp-content/uploads/2008/09/team_sp31.png" alt="天津-艾锐博" width="120" height="105" /></a>　</p>
<p>　　下面要介绍的是暴风彬彬几个月前制作的一套<strong>艾锐博数字科技</strong>LOGO方案，要求结合蜂巢的形状并体现立体感和科技感。</p>
<p><br class="spacer_" /></p>
<p><span id="more-1140"></span></p>
<p><strong>艾锐博logo第一稿</strong>:立体感、空间感都比较强，图形中的英文<strong>&#8220;I</strong><strong>VERBO&#8221;</strong>形同穿过六边形而体现强烈的空间感和动感。但后来一直没有相处让英文“<strong>IVERBO</strong>”更醒目的方法，最后无奈去掉了英文。第一稿的<strong>艾锐博</strong>LOGO比第二稿更显朝气&#8230;</p>
<p style="text-align: center;"><img class="size-medium wp-image-1141 aligncenter" title="iverbo_logo" src="http://blog.bingo929.com/wp-content/uploads/2008/09/e696b9e6a188.jpg" alt="iverbo_logo" width="393" height="625" /></p>
<p><strong>艾锐博logo第二稿</strong>:纯蜂巢式构图，从深浅度的不同体现出蜂巢的垂直俯视立体感，个人感觉这个比第一个更显稳重&#8230;</p>
<p style="text-align: center;"><img class="size-medium wp-image-1142 aligncenter" title="艾锐博-logo" src="http://blog.bingo929.com/wp-content/uploads/2008/09/e696b9e6a1882.jpg" alt="艾锐博-logo" width="393" height="625" /></p>
<p><strong>最终稿</strong>:貌似这个并不是<strong>艾锐博数字科技</strong>标识的最终稿，但是在想不起最终稿放在哪了，这个差不多算是最终的了（唉，我这脑子，没治了，吼吼&#8230;）。最终稿去掉了之前的立体英文&#8221;IVERBO&#8221;，使得整个logo变得简洁大方了许多，艾锐博的四色蜂巢图形也很有益于日后公司编写口号或文化之类的介绍.</p>
<p><img class="alignnone size-medium wp-image-1143" title="艾锐博-logo" src="http://blog.bingo929.com/wp-content/uploads/2008/09/f.jpg" alt="" width="500" height="300" /></p>
<p><br class="spacer_" /></p>
<h3><strong>艾锐博公司LOGO图形的实际应用</strong>:</h3>
<p><img class="alignnone size-medium wp-image-1144" title="艾锐博数字科技" src="http://blog.bingo929.com/wp-content/uploads/2008/09/team_sp3.png" alt="艾艾锐博数字科技" width="500" height="280" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bingo929.com/iverbo-logo.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>给一个鲜花网站设计的首页效果图</title>
		<link>http://blog.bingo929.com/to-a-flower-design-of-the-site-home-view.html</link>
		<comments>http://blog.bingo929.com/to-a-flower-design-of-the-site-home-view.html#comments</comments>
		<pubDate>Tue, 19 Aug 2008 03:05:02 +0000</pubDate>
		<dc:creator>暴风彬彬</dc:creator>
				<category><![CDATA[我的作品]]></category>
		<category><![CDATA[效果图]]></category>
		<category><![CDATA[网站]]></category>
		<category><![CDATA[网页设计]]></category>
		<category><![CDATA[配色]]></category>

		<guid isPermaLink="false">http://blog.bingo929.com/?p=58</guid>
		<description><![CDATA[这是我曾经为一个鲜花网站设计的首页效果图，颜色摒弃普通的绿色,而使用了更能代表植物的绿。 点击可以查看清晰大图 下面是配色表... ]]></description>
			<content:encoded><![CDATA[<p style="text-indent: 2em">这是我曾经为一个鲜花网站设计的首页效果图，颜色摒弃普通的绿色,而使用了更能代表植物的绿。</p>
<p><a href="http://blog.bingo929.com/wp-content/uploads/2008/12/flower-website-design.jpg"><img class="alignnone size-medium wp-image-1969" title="鲜花网站-效果图" src="http://blog.bingo929.com/wp-content/uploads/2008/12/flower-website-design-500x880.jpg" alt="" width="500" height="880" /></a><br />
 <em>点击可以查看清晰大图</em></p>
<p>下面是配色表。</p>
<p align="center"><a href="http://blog.bingo929.com/wp-content/uploads/2008/08/1.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" title="鲜花网站-配色表" src="http://blog.bingo929.com/wp-content/uploads/2008/08/1-thumb.jpg" border="0" alt="鲜花网站-配色表" width="154" height="64" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bingo929.com/to-a-flower-design-of-the-site-home-view.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

