﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-酷赛瑞</title><link>http://www.cnblogs.com/cosiray/</link><description>——专攻ASP.NET+JQUERY+AJAX+WEBSERVICE</description><language>zh-cn</language><lastBuildDate>Wed, 10 Feb 2010 04:41:03 GMT</lastBuildDate><pubDate>Wed, 10 Feb 2010 04:41:03 GMT</pubDate><ttl>60</ttl><item><title>【架构】ActiveWriter----集成到VS.NET的NHibernate(ActiveRecord)对象可视化设计工具</title><link>http://www.cnblogs.com/cosiray/archive/2010/01/25/1655576.html</link><dc:creator>酷赛瑞</dc:creator><author>酷赛瑞</author><pubDate>Mon, 25 Jan 2010 01:20:00 GMT</pubDate><guid>http://www.cnblogs.com/cosiray/archive/2010/01/25/1655576.html</guid><description><![CDATA[<p>阅读: 20 评论: 0 作者: <a href="http://www.cnblogs.com/cosiray/" target="_blank">酷赛瑞</a> 发表于 2010-01-25 09:20 <a href="http://www.cnblogs.com/cosiray/archive/2010/01/25/1655576.html" target="_blank">原文链接</a></p><p>&nbsp;&nbsp;&nbsp;&nbsp; 或许很多人向我一样,寻找一个可以直接对业务实体进行设计,然后直接根据设计生成持久层的工具,就象Hibernate Tools那样.当然,可能很多人对通过工具生成代码有着不一样的看法,不过有这样的一个工具,无疑能够给我们开发带来便利,尤其是一个开源的工具,能够根据修改来满足我们不同的需求. <br />&nbsp;&nbsp;&nbsp;&nbsp; 当然,这方面的代码生成工具首推CodeSmith,MyGeneration,它们能够直接支持模板,而且能够很方便的修改自定义模板文件.另外我还接触过LatticeFramework(<a title="http://www.latticesoft.com/" href="http://www.latticesoft.com/" target="_blank">http://www.latticesoft.com/</a>),这个软件是由一个留学生研发的.把数据库表及索引信息生成Xeml文件(XML格式),然后通过xslt解析成生成的代码. <br />&nbsp;&nbsp;&nbsp;&nbsp; 但是这些工具唯一不足的地方就是它们不能支持对ORM业务类的可视化设计,其中也不能够很方便很准备的生成实体的映射关系.还有就是这些工具都是基于数据库,而不是业务对象,但是在很多情况下,业务对象和数据库还是有很大差别的. <br />&nbsp;&nbsp;&nbsp;&nbsp; 而ActiveWriter的特点是支持可视化开发,而且以插件的方式集成到VS.NET中,可设置项全面.下面来介绍一下ActiveWriter:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; ActiveWriter是castle下面的一个开源项目,直接集成在vs.net中,能够直接进行实体可视化设计,支持生成ActiveRecord代码及NHibernate实体代码及.hbm.xml映射文件.并且同时支持C#和VB.NET两种语言.&nbsp; <br />一.<strong>下载安装 <br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最新版本<strong>:</strong> Preview 4.1 (26/06/2008) <br /><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VS 2008:</strong> <a href="http://altinoren.com/content/binary/ActiveWriter%20Preview%204.1.rar" target="_blank">ActiveWriter Preview 4.1 for VS2008.rar (277.22 KB)<sup><img border="0" alt="" align="absMiddle" src="http://using.castleproject.org/images/icons/linkext7.gif" width="7" height="7" /></sup></a> <br /><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VS 2005:</strong> <a href="http://altinoren.com/content/binary/ActiveWriter%20Preview%204%20for%20VS2005.rar" target="_blank">ActiveWriter Preview 4 for VS2005.rar (1.43 MB)<sup><img border="0" alt="" align="absMiddle" src="http://using.castleproject.org/images/icons/linkext7.gif" width="7" height="7" /></sup></a>(这个开源项目的作者已经停止了此项目对支持2005版本的更新) <br /><strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 源代码:</strong> <a href="https://svn.castleproject.org/svn/castlecontrib/activewriter/" target="_blank">https://svn.castleproject.org/svn/castlecontrib/activewriter/<sup><img border="0" alt="" align="absMiddle" src="http://using.castleproject.org/images/icons/linkext7.gif" width="7" height="7" /></sup></a></p>
<p>&nbsp;&nbsp;&nbsp; 源代码使用svn工具下载后,需要安装Microsoft Visual Studio 2008 or 2005 SDK才能够编译.其中代码是DSL Tools,看到最近园子里一直有人在研究Vs.net插件开发,这个应该也算是Vs.NET插件开发的一个开源典型项目. <br />&nbsp;&nbsp;&nbsp; 下载完成后,直接安装,无需做特殊设置 <br /><br />二.<strong>使用及功能介绍 <br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 安装完成后,就可以使用ActiveWriter了,不过它并不用新建一个单独的项目,我们只需要新建一个普通的项目即可,然后添加ActiveWrite文件,就可以在这个文件里进行设计了.先介绍一下它的工作区(使用的作者的演示图). <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/ActiveWriterVS.NETNHibernateActiveRecord_138C5/AW_Overview_2.png" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AW_Overview" border="0" alt="AW_Overview" src="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/ActiveWriterVS.NETNHibernateActiveRecord_138C5/AW_Overview_thumb.png" width="858" height="596" /></a> </p>
<p>&nbsp;&nbsp;&nbsp; 1.<em><strong>主要设计界面</strong> <br /></em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这里可以对我们的业务实体进行设计,它们可以是从6中直接拖拉进来生成的,也可以由5中拖Class进来完全重新设计的.右击窗口里的对象或者属性,可以直接进行有效性验证,删除,编辑和添加. <br />&nbsp;&nbsp;&nbsp; 2.<em><strong>项目文件</strong> <br /></em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里就是一个普通的项目,但是会有ActiveWriter文件存储类设计信息(actiw,actiw.diagram),当类设计完成时,我们直接右击actiw文件,选择Run Customer Tool即可生成代码,代码会生成到.cs文件中,如果生成的NHibernate还会单独再有一个.hbm.xml文件. <br />&nbsp;&nbsp;&nbsp; 3.<em><strong>属性窗口</strong> <br /></em>&nbsp;&nbsp;&nbsp;&nbsp; 这里可以对选择项的属性进行编辑.其中包括生成模型的设置,单个对象的设置,对象属性的设置,关系的设置,编辑完后都会完整的生成到类或者映射文件中,其实简单的说,就是把我们以前手写代码或者是映射文件的操作,转换成了直接在属性设置窗口里完成.这里涵盖了大部分ActiveRecord(NHibernate)的设置.我们来看一下对于对象的设置窗口. <br />&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/ActiveWriterVS.NETNHibernateActiveRecord_138C5/screenshot31_2.jpg" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="screenshot31" border="0" alt="screenshot31" src="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/ActiveWriterVS.NETNHibernateActiveRecord_138C5/screenshot31_thumb.jpg" width="427" height="524" /></a>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; 可以看到,可以对Cache,Lazy,Schema,Table,Where等属性都有了设置,而且很多都可以直接下拉选择或者是开窗设置,相当强大. <br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 4.<strong><em>类详细窗口</em> <br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里列出了当前选择的对象的所有的属性,而且可以直接编辑这个属性的类型,以及和数据库的对应的字段,还可以添加新的属性. <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/ActiveWriterVS.NETNHibernateActiveRecord_138C5/screenshot31_4.jpg" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="screenshot31" border="0" alt="screenshot31" src="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/ActiveWriterVS.NETNHibernateActiveRecord_138C5/screenshot31_thumb_1.jpg" width="807" height="297" /></a> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.ActiveWriter工具栏 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里现在包括Class,一对一关系.多对一关系,多对多关系,内嵌类,内嵌关系,可以直接拖拽他们到工作区1中,对于后面的关系,选中后再在工作区中选择源和目标即可. <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.资源浏览 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里列出了当前数据库的资源,可以直接拖拉表到工作区1中,生成对应的对象,现在支持SQL Server,MySQL,Oracle. <br /></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; <strong>生成代码之前的注意事项: <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.请对建立的项目中添加对应的NHibernate和ActiveRecord的程序集的引用,另外最新版本对应的NHibernate的版本是1.2.0.4000,ActiveRecord的版本是0.0.1.3,同时添加他们所依赖的程序集的引用.(下面提供了下载) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 右击工作区的空白地方,在属性窗口里对于NHIbernate和ActiveRecord程序集成文件夹进行设置.</strong> <br />&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/ActiveWriterVS.NETNHibernateActiveRecord_138C5/screenshot31_6.jpg" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="screenshot31" border="0" alt="screenshot31" src="http://images.cnblogs.com/cnblogs_com/lonely7345/WindowsLiveWriter/ActiveWriterVS.NETNHibernateActiveRecord_138C5/screenshot31_thumb_2.jpg" width="522" height="466" /></a>&nbsp; <br />&nbsp;&nbsp; <strong>&nbsp; 自动生成时就会将你在工作区中设置的实体属性,实体及属性的设置,以及实体之间的关系生成出来.</strong></p>
<p><strong>3.由于ActiveWriter对于中文版VS的支持问题,默认"安装新项"的模板到Common7\IDE\ItemTemplates\CSharp\1033下面,但是中文VS模板默认在2052下面,所以需要手动转换一下,也可以先拷贝到2052下面,然后新建项时选类关系图.后缀名从.cd改成actiw就可以了 </strong></p>
<p>三 资料及参考 <br />&nbsp;&nbsp;&nbsp;&nbsp; 1.activewriter官网 <a title="http://altinoren.com/activewriter/" href="http://altinoren.com/activewriter/" target="_blank">http://altinoren.com/activewriter/</a>&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; 2.activewriter开发者的博客 <a title="http://altinoren.com/default.aspx" href="http://altinoren.com/default.aspx" target="_blank">http://altinoren.com/default.aspx</a> <br />&nbsp;&nbsp;&nbsp;&nbsp; 3.园子里DSL的文章 <a title="http://www.cnblogs.com/yimlin/archive/2006/07/08/445673.html" href="http://www.cnblogs.com/yimlin/archive/2006/07/08/445673.html" target="_blank">http://www.cnblogs.com/yimlin/archive/2006/07/08/445673.html</a> <br />&nbsp;&nbsp;&nbsp;&nbsp; 4.关于VS.NET DSL Tools的网站&nbsp;&nbsp; <a title="http://www.domainspecificdevelopment.com/" href="http://www.domainspecificdevelopment.com/" target="_blank">http://www.domainspecificdevelopment.com/</a> <br />&nbsp;&nbsp;&nbsp;&nbsp; 5.微软关于DSL Tools的资料 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a title="http://msdn.microsoft.com/en-us/vsx/cc677256.aspx" href="http://msdn.microsoft.com/en-us/vsx/cc677256.aspx" target="_blank">http://msdn.microsoft.com/en-us/vsx/cc677256.aspx</a> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a title="http://msdn.microsoft.com/en-us/vsx/default.aspx" href="http://msdn.microsoft.com/en-us/vsx/default.aspx" target="_blank">http://msdn.microsoft.com/en-us/vsx/default.aspx</a> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a title="http://msdn.microsoft.com/en-us/library/bb126235.aspx" href="http://msdn.microsoft.com/en-us/library/bb126235.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/bb126235.aspx</a></p><img src="http://www.cnblogs.com/cosiray/aggbug/1655576.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cosiray/archive/2010/01/25/1655576.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cosiray/archive/2010/01/25/1655576.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务汇总</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/>· <a href="http://news.cnblogs.com/n/56821/" target="_blank">视频网站2010年格局之变：七成企业将被淘汰</a><span style="color:gray">(2010-02-10 11:48)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>【同情】成龙耍大牌，可怜了房祖名……</title><link>http://www.cnblogs.com/cosiray/archive/2010/01/18/1650330.html</link><dc:creator>酷赛瑞</dc:creator><author>酷赛瑞</author><pubDate>Mon, 18 Jan 2010 01:05:00 GMT</pubDate><guid>http://www.cnblogs.com/cosiray/archive/2010/01/18/1650330.html</guid><description><![CDATA[<p>阅读: 17 评论: 0 作者: <a href="http://www.cnblogs.com/cosiray/" target="_blank">酷赛瑞</a> 发表于 2010-01-18 09:05 <a href="http://www.cnblogs.com/cosiray/archive/2010/01/18/1650330.html" target="_blank">原文链接</a></p><div id="postmessage_57410779" class="t_msgfont">看了1月17日湖南卫视的成龙访谈，有些话想说说已示对成龙之子房祖名的同情！<br /><br />对成龙的印象一直没象媒体中讲的那么好那么伟大，我只是觉得他只是一个艺人，一个混的比较久的艺人，讲到经典的电影作品想不起几部，听他的歌除了早期几首外也没什么可以回味的，可为什么他会一直这么红？我真的想不明白！<br /><br />也许他是一个代表吧，是一个在好莱坞混了几天让华人在这个黄色面孔几乎绝迹的舞台上率先亮相的代表吧，其他真没什么可以骄傲的，真不知道他为什么会在媒体上用十分肯定的语气自吹自己的成功和伟大，还仿佛自己就是孔子一样的人物对大众进行思想教育，象个家长在训斥台下以及屏幕前的观众，看到这我对他很失望也很失败。仿佛已经没有言语去做过多评价，相信看了节目的人都会和我一样感同身受。对于自己的老婆他用&#8220;我觉得我没有对不起她们！&#8221;在媒体公开表态，并带有万分假意的表情说自己老婆&#8220;真美&#8221;，估计看到这个，除了鬼没人会相信他说的是真的。并且说这话的时候铿锵有力，仿佛是真的，可究竟事实如何只有他老婆和儿子知道。<br /><br />早就听说他和儿子房祖名不合，起初我觉得是他恨铁不成钢，后来经过一些访谈节目后发现，对其子房祖名的同情也悠然而生，我突然发觉他真的很可怜，从小没有感受过父爱，从小不能在电影院大声喊出那个演电影的人就是自己似乎熟悉的&#8220;父亲&#8221;，从小就在自己&#8220;父亲&#8221;的高压下练功、学习，从小便在自己&#8220;父亲&#8221;的安排下生活，成长&#8230;&#8230;所有的一切都是&#8220;父亲&#8221;手中的一个棋子，他只是在自己&#8220;父亲&#8221;不得不生产的时候制造的一个失去自由的产品。而他的出道却在自己&#8220;父亲&#8221;光环的笼罩中久久不能平息，一句话：别人觉得他出名是靠爸爸！而事实上，&#8220;父亲&#8221;给他的帮助只有他自己知道。<br /><br />当听到房祖名称呼成龙用&#8220;兼职爸爸&#8221;时，我又不得不在内心深处对他的遭遇表示同情，一个跟自己没有丝毫感情的人却在无时无刻限制自己的自由，限制自己的生活，限制自己的性格和未来！想想这种感觉着实让人寒心。成龙啊，一个连自己儿子都教育不好的父亲你又有什么资格去教育在电视机前的无辜观众呢？难道你不知道他们都是有父母的人吗？难道你把他们也当作你儿子了？真不知道你哪来这么大的勇气？我真为你感到悲哀！同时我为你的儿子房祖名感到惋惜，对他的不幸深表同情，因为他是一个没有父亲的人。<br /><br />艺人就是艺人，你在舞台上检些垃圾以表自己与众不同具有环保意识委实不可，可你想想，如果所有艺人都在舞台上捡垃圾宣杨环保意识，那他还叫艺人吗？这似乎应该是环保人士该做的工作吧？而艺人是与艺术有关的，你做好你在舞台的表演就行了，干吗要越俎代庖呢？你让环保局长看到还以为你要抢他饭碗？你这行为真让人怀疑你会不会做人，尤其是做个合格的艺人？一不小心别人还以为你是国务院总理兼环保局长呢？因为你已经偏离你的职业操守了，你想管的事情太多了，这样，某种程度上你是对政府相关从业人员的亵渎和侮辱，因为你觉得他们没做好的事情只有你才能做好！这不仅是对他们工作能力的轻视而且某种程度上滋养了这部分人的惰性，淡化了他们的责任心，因为他们觉得还有人会比他们更操心自己的&#8220;事业&#8221;。你说你在这个舞台上究竟扮演了什么角色呢？你的这些行为不仅降低了你在众多艺人心目中大哥的身份还有可能使环保事业适得其反，因为你并不是全人类的救星。<br /><br />其实，对于这点我想大可不必这样虚伪，背后用实际行动表示不就可以了？为何要将自己拙劣的演技带到舞台上已示自己的清高和前卫？真是玷污观众的眼球！<br /><br />最后，我想你还是做个单纯的艺人吧，因为在这个人口众多的国度，你干了别人干的事，别人就有可能失业，你操了别人该操的心，别人就有可能变得懒惰，你说你这不是危害社会安宁，破坏社会和谐吗？真是个不折不扣的臭虫，赶紧回家反省去吧！<br /><br />2010年1月17日晚<br />于厦门思北寓所</div><img src="http://www.cnblogs.com/cosiray/aggbug/1650330.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cosiray/archive/2010/01/18/1650330.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cosiray/archive/2010/01/18/1650330.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务汇总</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/>· <a href="http://news.cnblogs.com/n/56821/" target="_blank">视频网站2010年格局之变：七成企业将被淘汰</a><span style="color:gray">(2010-02-10 11:48)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>【总结】IE6、IE7、IE8、Firefox、Opera CSS hack区分</title><link>http://www.cnblogs.com/cosiray/archive/2010/01/14/1647720.html</link><dc:creator>酷赛瑞</dc:creator><author>酷赛瑞</author><pubDate>Thu, 14 Jan 2010 06:00:00 GMT</pubDate><guid>http://www.cnblogs.com/cosiray/archive/2010/01/14/1647720.html</guid><description><![CDATA[<p>阅读: 19 评论: 0 作者: <a href="http://www.cnblogs.com/cosiray/" target="_blank">酷赛瑞</a> 发表于 2010-01-14 14:00 <a href="http://www.cnblogs.com/cosiray/archive/2010/01/14/1647720.html" target="_blank">原文链接</a></p><p><strong>IE6、IE7、IE8、Firefox、Opera CSS hack区分</strong><strong><br /></strong></p>
<p><strong>针对样式名</strong></p>
<p>如果只让ie6看见用*html .head{color:#000;}<br />如果只让ie7看见用*+html .head{color:#000;}<br />如果只让ff看见用:root body .head{color:#000;}<br />如果只让ff、IE8看见用html&gt;/**/body .head{color:#000;}<br />如果只是不让ie6看见用html&gt;body .head{color:#000;} 即对IE 6无效<br />如果只是不让ff、IE8看见用*body .head{color:#000;}&nbsp;&nbsp;&nbsp; 即对ff、IE8无效</p>
<p><strong>针对具体属性</strong></p>
<p>如果只让ie6看见用_&nbsp;&nbsp;&nbsp;&nbsp; .head{_color:#000;}<br />如果只让ie7看见用+与_结合的方法:&nbsp;&nbsp;&nbsp;&nbsp; .head{+color:#f00;!;_color:#000;}</p>
<p><strong>IE8正式版hack</strong></p>
<p>\9&#8243;　例:&#8221;margin:0px auto\9;&#8221;.这里的&#8221;\9&#8243;可以区别所有IE8和FireFox.<br />&#8220;*&#8221;　IE6、IE7可以识别.IE8、FireFox不能.<br />&#8220;_&#8221;　IE6可以识别&#8221;_&#8221;,IE7、IE8、FireFox不能.<br />如：<br />.a {color:#f00;&nbsp;&nbsp;&nbsp;&nbsp; color:#f60\9;&nbsp;&nbsp;&nbsp; +color:#00FF00;&nbsp;&nbsp;&nbsp; _color:#0000FF; }<br />从左到右分别对应 FF,IE8 IE7 IE6</p>
<p>-------------------------------------------------</p>
<p><strong>各浏览器CSS hack兼容表：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="600">
<tr>
<td>&nbsp;</td>
<td width="80" align="center"><strong>IE6</strong></td>
<td width="80" align="center"><strong>IE7</strong></td>
<td width="80" align="center"><strong>IE8</strong></td>
<td width="80" align="center"><strong>Firefox</strong></td>
<td width="80" align="center"><strong>Chrome</strong></td>
<td width="80" align="center"><strong>Safari</strong></td></tr>
<tr>
<td align="center"><strong>!important</strong></td>
<td align="center">&nbsp;</td>
<td align="center">Y</td>
<td align="center">&nbsp;</td>
<td align="center">Y</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td></tr>
<tr>
<td align="center"><strong>_</strong></td>
<td align="center">Y</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td></tr>
<tr>
<td align="center"><strong>*</strong></td>
<td align="center">Y</td>
<td align="center">Y</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td></tr>
<tr>
<td align="center"><strong>*+</strong></td>
<td align="center">&nbsp;</td>
<td align="center">Y</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td></tr>
<tr>
<td align="center"><strong>\9</strong></td>
<td align="center">Y</td>
<td align="center">Y</td>
<td align="center">Y</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td></tr>
<tr>
<td align="center"><strong>\0</strong></td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">Y</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td></tr>
<tr>
<td align="center"><strong>nth-of-type(1)</strong></td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">Y</td>
<td align="center">Y</td></tr></table>
<p><strong>代码示例：</strong></p>
<p>#test{<br />color:red; /* 所有浏览器都支持 */ <br />color:red !important;/* Firefox、IE7支持 */<br />_color:red; /* IE6支持 */<br />*color:red; /* IE6、IE7支持 */<br />*+color:red; /* IE7支持 */<br />color:red\9; /* IE6、IE7、IE8支持 */<br />color:red\0; /* IE8支持 */<br />}</p>
<p>body:nth-of-type(1) p{color:red;} /* Chrome、Safari支持 */</p>
<p><strong>整体测试代码示例：</strong></p>
<p>.test{<br />color:#000000;<br />color:#0000FF\0;<br />[color:#00FF00;<br />*color:#FFFF00;<br />_color:#FF0000;<br />}</p>
<p><strong>其他说明：</strong></p>
<p>1、如果你的页面对IE7兼容没有问题，又不想大量修改现有代码，同时又能在IE8中正常使用，微软声称，开发商仅需要在目前兼容IE7的网站上添加一行代码即可解决问题，此代码如下：<br />&lt;meta http-equiv="x-ua-compatible" content="ie=7" /&gt;</p>
<p>2、body:nth-of-type(1) 如果这样写，表示全局查找body，将会对应第一个&lt;body&gt;。</p>
<p>3、还有其他写法，比如：<br />*html #test{}或者 *+html #test{}</p>
<p>4、*+html 对IE7的hack 必须保证HTML顶部有如下声明：<br />http://www.w3.org/TR/html4/loose.dtd</p>
<p>5、顺序：Firefox、IE8、IE7、IE6依次排列。</p>
<p><strong>小知识：什么是CSS hack？</strong></p>
<p>　　由于不同的浏览器，比如IE6、IE7、IE8、Firefox等，对CSS的解析认识不一样，因此会导致生成的页面效果不一样，得不到我们所需要的页面效果。</p>
<p>　　这个时候我们就需要针对不同的浏览器去写不同的CSS，让它能够同时兼容不同的浏览器，能在不同的浏览器中也能得到我们想要的页面效果。</p>
<p>　　这个针对不同的浏览器写不同的CSS code的过程，就叫CSS hack，也叫写CSS hack。</p><img src="http://www.cnblogs.com/cosiray/aggbug/1647720.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cosiray/archive/2010/01/14/1647720.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cosiray/archive/2010/01/14/1647720.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务汇总</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/>· <a href="http://news.cnblogs.com/n/56821/" target="_blank">视频网站2010年格局之变：七成企业将被淘汰</a><span style="color:gray">(2010-02-10 11:48)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>【精华】CSS hack 各种浏览器的兼容一览表</title><link>http://www.cnblogs.com/cosiray/archive/2010/01/12/1645224.html</link><dc:creator>酷赛瑞</dc:creator><author>酷赛瑞</author><pubDate>Tue, 12 Jan 2010 07:50:00 GMT</pubDate><guid>http://www.cnblogs.com/cosiray/archive/2010/01/12/1645224.html</guid><description><![CDATA[<p>阅读: 8 评论: 0 作者: <a href="http://www.cnblogs.com/cosiray/" target="_blank">酷赛瑞</a> 发表于 2010-01-12 15:50 <a href="http://www.cnblogs.com/cosiray/archive/2010/01/12/1645224.html" target="_blank">原文链接</a></p><p>CSS hack 各种浏览器的兼容一览表：</p>
<p>&nbsp;<img style="cursor: pointer" onclick="window.open('/uploads/allimg/091026/1_091026143359_1.gif')" border="0" alt="CSS hack 各种浏览器的兼容一览表" src="http://www.csscoo.com/uploads/allimg/091026/1_091026143359_1.gif" width="683" height="997"></p><img src="http://www.cnblogs.com/cosiray/aggbug/1645224.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cosiray/archive/2010/01/12/1645224.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cosiray/archive/2010/01/12/1645224.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务汇总</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/>· <a href="http://news.cnblogs.com/n/56821/" target="_blank">视频网站2010年格局之变：七成企业将被淘汰</a><span style="color:gray">(2010-02-10 11:48)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>【精华】asp购物车原理及其源代码</title><link>http://www.cnblogs.com/cosiray/archive/2009/12/23/1630858.html</link><dc:creator>酷赛瑞</dc:creator><author>酷赛瑞</author><pubDate>Wed, 23 Dec 2009 10:19:00 GMT</pubDate><guid>http://www.cnblogs.com/cosiray/archive/2009/12/23/1630858.html</guid><description><![CDATA[<p>阅读: 63 评论: 0 作者: <a href="http://www.cnblogs.com/cosiray/" target="_blank">酷赛瑞</a> 发表于 2009-12-23 18:19 <a href="http://www.cnblogs.com/cosiray/archive/2009/12/23/1630858.html" target="_blank">原文链接</a></p><div id="div-view-remark" class="remark word-break">
<p>&lt;%<br />'==========================<br />'购物车类 类名：UserCart<br />'作者:Cosiray<br />'基本原理:此类用服务器Session变量保存商品数据,商品用一个数组表示.此类里面保存了三中商品价格.<br />'==========================<br />Class UserCart<br />&nbsp;&nbsp;&nbsp; '建立购物车<br />&nbsp;&nbsp;&nbsp; Sub CreateCart()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim CFlag,i<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim mCart(6,0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CFlag=CheckCart()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if CFlag=false then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i=LBound(mCart,2) to UBound(mCart,2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(0,i)=""<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session("User_Cart")=mCart<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if <br />&nbsp;&nbsp;&nbsp; End Sub<br />&nbsp;&nbsp;&nbsp; '检查购物车<br />&nbsp;&nbsp;&nbsp; Public Function CheckCart()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF IsArray(Session("User_Cart")) Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckCart=true<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckCart=false <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; End Function<br />&nbsp;&nbsp;&nbsp; '检查购物车是否为空<br />&nbsp;&nbsp;&nbsp; Function CheckEmtpy()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim mCart,i<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart=Session("User_Cart")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i=LBound(mCart,2) to UBound(mCart,2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if mCart(0,i)&lt;&gt;"" then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckEmtpy=false<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckEmtpy=True <br />&nbsp;&nbsp;&nbsp; End Function<br />&nbsp;&nbsp;&nbsp; '添加商品<br />&nbsp;&nbsp;&nbsp; Function AddItem(aID,aName,aPrice1,aPrice2,aPrice3,aCount,aImage)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim mCart,i<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddItem=false<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if CheckItem(aID)=false then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '无此商品<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart=Session("User_Cart")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i=LBound(mCart,2) to UBound(mCart,2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if mCart(0,i)="" then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(0,i)=aID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(1,i)=aName<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(2,i)=aPrice1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(3,i)=aPrice2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(4,i)=aPrice3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(5,i)=aCount<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(6,i)=aImage<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session("User_Cart")=mCart<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddItem=true<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit Function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i=i+1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Redim preserve mCart(6,i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(0,i)=aID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(1,i)=aName<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(2,i)=aPrice1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(3,i)=aPrice2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(4,i)=aPrice3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(5,i)=aCount<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(6,i)=aImage<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session("User_Cart")=mCart<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddItem=True<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '有此商品,则商品数量+1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ModifItem aID,aCount,0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddItem=True<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End if<br />&nbsp;&nbsp;&nbsp; End Function<br />&nbsp;&nbsp;&nbsp; '删除商品数量<br />&nbsp;&nbsp;&nbsp; Sub DelItem(mID)&nbsp; '改进2008-12-25by tommy 增加删除商品过程<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim mCart,i,j,mount<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.Write(mID)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart=Session("User_Cart")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mount=UBound(mCart,2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If mID=mount Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mount=mount-1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(0,mount+1)=""<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReDim Preserve mCart(6,mount)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mount=mount-1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i=mID To mount<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For j=0 To 6<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(j,i)=mCart(j,i+1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(0,mount+1)=""<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReDim Preserve mCart(6,mount)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session("User_Cart")=mCart<br />&nbsp;&nbsp;&nbsp; End Sub<br />&nbsp;&nbsp;&nbsp; '修改商品数量<br />&nbsp;&nbsp;&nbsp; Sub ModifItem(mID,mCount,mFlag)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'mFlag－标志 0－添加 1－删除,2-修改 3-清空<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'mID-商品ID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'mCount－修改商品的数量<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim mCart,i<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart=Session("User_Cart")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i=LBound(mCart,2) to UBound(mCart,2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if mCart(0,i)=mID then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select case mFlag<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(5,i)=mCart(5,i)-mCount<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(5,i)=mCart(5,i)+mCount<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if mCount=0 then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(5,i)=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(0,i)=""<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(5,i)=mCount<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(5,i)=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(0,i)=""<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end select<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session("User_Cart")=mCart<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit Sub<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next <br />&nbsp;&nbsp;&nbsp; End Sub<br />&nbsp;&nbsp;&nbsp; '查看推车<br />&nbsp;&nbsp;&nbsp; Function ViewCart()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim mCart<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart=Session("User_Cart")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ViewCart=mCart<br />&nbsp;&nbsp;&nbsp; End Function<br />&nbsp;&nbsp;&nbsp; '检查商品<br />&nbsp;&nbsp;&nbsp; Function CheckItem(cID)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim mCart,i<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart=Session("User_Cart")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i=LBound(mCart,2) to UBound(mCart,2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if mCart(0,i)=cID then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckItem=True<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit Function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckItem=false<br />&nbsp;&nbsp;&nbsp; End Function<br />&nbsp;&nbsp;&nbsp; '清空购物车<br />&nbsp;&nbsp;&nbsp; Sub RemoveAll()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim mCart,i<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart=Session("User_Cart")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i=LBound(mCart,2) to UBound(mCart,2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart(0,i)=""<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session("User_Cart")=mCart<br />&nbsp;&nbsp;&nbsp; End Sub <br />&nbsp;&nbsp;&nbsp; '商品总价值<br />&nbsp;&nbsp;&nbsp; Function TPrice()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim mCart,i<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim OutPrice(3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCart=Session("User_Cart")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i=LBound(mCart,2) to UBound(mCart,2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if mCart(0,i)&lt;&gt;"" then <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Outprice(0)=Outprice(0) + mCart(2,i)*mCart(5,i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Outprice(1)=Outprice(1) + mCart(3,i)*mCart(5,i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Outprice(2)=Outprice(2) + mCart(4,i)*mCart(5,i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Outprice(3)=OutPrice(3) + mCart(5,i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TPrice=OutPrice<br />&nbsp;&nbsp;&nbsp; End Function<br />End Class<br />'=================================================<br />'建立购物车对象,该对象用于直接在程序中调用<br />'=================================================<br />dim uCart<br />set uCart= new UserCart<br />%&gt;</p>
<p>使用：<br />第1<br />'=================================================<br />'建立购物车对象,该对象用于直接在程序中调用<br />'=================================================<br />dim uCart<br />set uCart= new UserCart</p>
<p>第二<br />建立一个购物车<br />uCart.CreateCart&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （可以重复建立，因为里面有IsArray判断。所以建议这句在建立购物车对象后必写）</p>
<p>第三<br />增加购物车里的商品，在客户端点了某产品后，服务器端处理的ASP文件中接受传过来的产品标志，并访问数据库。分别把AddItem(aID产品标</p>
<p>志如ID,aName产品名称,aPrice1产品价格一，如单价,aPrice2产品价格二如会员价,aPrice3产品价格三如金牌会员价，如果没这么多可以置空</p>
<p>或置0,aCount购买数量，一般是一个，多个的话后面可以用修改函数修改,aImage产品图片地址)<br />使用方法：aa=uCart.AddItem(aID产品标志如ID,aName产品名称,aPrice1产品价格一，如单价,aPrice2产品价格二如会员价,aPrice3产品价格</p>
<p>三如金牌会员价，如果没这么多可以置空或置0,aCount购买数量，一般是一个，多个的话后面可以用修改函数修改,aImage产品图片地址),返回</p>
<p>true表示成功，false表示失败</p>
<p>第四<br />增加了以后进如显示页面，就要用到查看购物车<br />mycart=uCart.ViewCart()<br />For i =LBound(myCart,2) to UBound(myCart,2)<br />&nbsp;if myCart(0,i)&lt;&gt;"" then<br />&nbsp; myCart(0,i) '获取标号<br />&nbsp; myCart(1,i)&nbsp; '获取单价<br />&nbsp; 。。。以此类推<br />&nbsp;end if<br />next</p>
<p>第五<br />查看了，可以修改购物车，如更改数量等，或是删除其中的<br />call uCart.ModifItem(mID唯一标志号,mCount产品数量,mFlag－标志 0－添加 1－删除,2-修改 3-清空)&nbsp;&nbsp;&nbsp; '先用给后面参数赋值</p>
<p><br />修改其中的商品<br />可以用第四个显示，先接受session的值，然后循环修改</p>
<p>或清空购物车<br />uCart.RemoveAll()</p>
<p>然后结帐，很简单<br />myprice=uCart.TPrice()<br />然后myprice（0）是产品单价的总价格，myprice（1）是产品会员价的总价格，myprice（2）是高级会员的总价格，myprice（3）是产品总数量</p>
<p>&nbsp;将商品装入购物车，这时需要用cookie或session来做一个不同页面间传递的全局变量，也就是说关了浏览器（针对session）或清楚了cookie等原因，本次购物车会消失，就象你今天在商场买了一车的东西，最后没结帐，明天肯定没了，又归位了，当然要有特殊需要保存，可以写数据库！所以这里记录的只需要是该商品的相关信息就可以了，这里我们记录他的&nbsp;物品ID,&nbsp;物品单价,&nbsp;物品名称,&nbsp;物品数量<br /></p>
<p>&lt;!--#include file="../inc/Conn.asp"--&gt;<br />&lt;!--#include file="../Inc/Cls.Common.asp"--&gt;<br />&lt;!--#include file="../Inc/Cls.Templates.asp"--&gt;<br />&lt;!--#include file="Cls.UserCart.asp"--&gt;<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;<br />&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>"&gt;<br />&lt;head&gt;<br />&nbsp;&nbsp;&nbsp; &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;title&gt;无标题文档&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&nbsp;&nbsp;&nbsp; &lt;form name="form1" action="AddToCart.asp?action=save" method="post"&gt;<br />&nbsp;&nbsp;&nbsp; 产品Id:&lt;input type="text" name="produceId" /&gt;<br />&nbsp;&nbsp;&nbsp; 产品名称:&lt;input type="text" name="produceName" /&gt;<br />&nbsp;&nbsp;&nbsp; 产品单价:&lt;input type="text" name="producePrice" /&gt;<br />&nbsp;&nbsp;&nbsp; 产品数量:&lt;input type="text" name="buynum" /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;input type="submit" /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br />&nbsp;&nbsp;&nbsp; &lt;br&gt;<br />&nbsp;&nbsp;&nbsp; &lt;%<br />&nbsp;&nbsp;&nbsp; dim action<br />&nbsp;&nbsp;&nbsp; action=request("action")&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; If action="save" Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim aId,aName,aPrice,aCount<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aId=request.Form("produceId")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aName=request.Form("produceName")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aPrice=request.Form("producePrice")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aCount=request.Form("buynum")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uCart.CreateCart&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if uCart.AddItem(aId,aName,aPrice,0,0,aCount,0) then <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CALL COSIRAY.ErrView("","","&lt;li&gt;添加成功！&lt;script&gt;function Close(){parent.closeWithIframe();}setTimeout(""location.href='AddToCart.asp';Close();"",1000)&lt;/script&gt;",1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CALL COSIRAY.ErrView("","","&lt;li&gt;操作错误&lt;li&gt;此界面 3 秒钟后自动关闭&lt;script&gt;function Close(){parent.closeWithIframe();}setTimeout(""history.go(-1);Close();"",1000)&lt;/script&gt;",0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />&nbsp;&nbsp;&nbsp; ElseIf action="del" Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aId=request("produceId")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aa=uCart.DelItem(aId)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.Redirect("AddToCart.asp")<br />&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; if true then <br />&nbsp;&nbsp;&nbsp; dim i,MyPrice,myCart<br />&nbsp;&nbsp;&nbsp; myCart = uCart.ViewCart<br />&nbsp;&nbsp;&nbsp; %&gt;<br />&nbsp;&nbsp;&nbsp; &lt;table border="1"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 产品编号<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/th&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 产品名称<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/th&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 产品价格<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/th&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 产品数量<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/th&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 操作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/th&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i = LBound(myCart,2) To UBound(myCart,2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If myCart(0,i)&lt;&gt;"" Then '以前的判断语句<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%=MyCart(0,i)%&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%=MyCart(1,i)%&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%=MyCart(2,i)%&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%=MyCart(5,i)%&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="AddToCart.asp?action=del&amp;produceId=&lt;%=MyCart(0,i)%&gt;" onclick="return confirm('你确定要删除吗?');"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除&lt;/a&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyPrice=uCart.TPrice()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;总价格:&lt;%=MyPrice(0)%&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan="3"&gt;产品总数量:&lt;%=MyPrice(3)%&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br />&nbsp;&nbsp;&nbsp; &lt;%end if%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /></p>
<p><br />&nbsp;</p></div><img src="http://www.cnblogs.com/cosiray/aggbug/1630858.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cosiray/archive/2009/12/23/1630858.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cosiray/archive/2009/12/23/1630858.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务汇总</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/>· <a href="http://news.cnblogs.com/n/56821/" target="_blank">视频网站2010年格局之变：七成企业将被淘汰</a><span style="color:gray">(2010-02-10 11:48)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>【总结】DIV+CSS有可能遇到的问题</title><link>http://www.cnblogs.com/cosiray/archive/2009/12/18/1626884.html</link><dc:creator>酷赛瑞</dc:creator><author>酷赛瑞</author><pubDate>Fri, 18 Dec 2009 01:58:00 GMT</pubDate><guid>http://www.cnblogs.com/cosiray/archive/2009/12/18/1626884.html</guid><description><![CDATA[<p>阅读: 22 评论: 0 作者: <a href="http://www.cnblogs.com/cosiray/" target="_blank">酷赛瑞</a> 发表于 2009-12-18 09:58 <a href="http://www.cnblogs.com/cosiray/archive/2009/12/18/1626884.html" target="_blank">原文链接</a></p><p>一、超链接访问过后hover样式就不出现的问题？</p>
<p>被点击访问过的超链接样式不在具有hover和active了,解决方法是改变CSS属性的排列顺序: L-V-H-A</p>
<p>二、IE6的双倍边距BUG</p>
<p>例如:</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number."><li class="hl-firstline"><span style="color: gray">&lt;</span> <span style="color: blue">style</span> <span style="color: blue">type</span> <span style="color: gray">="</span> <span style="color: blue">text</span> <span style="color: gray">/</span> <span style="color: blue">css</span> <span style="color: gray">"&gt;</span></li><li><span style="color: blue">body</span> <span style="color: olive">{</span> <span style="color: green">margin:</span> <span style="color: maroon">0</span> <span style="color: gray">;</span> <span style="color: olive">}</span></li><li><span style="color: blue">div</span> <span style="color: olive">{</span> <span style="color: green">float:</span> <span style="color: red">left</span> <span style="color: gray">; </span><span style="color: green">margin-left:</span> <span style="color: maroon">10</span> <span style="color: red">px</span> <span style="color: gray">; </span><span style="color: green">width:</span> <span style="color: maroon">200</span> <span style="color: red">px</span> <span style="color: gray">; </span><span style="color: green">height:</span> <span style="color: maroon">200</span> <span style="color: red">px</span> <span style="color: gray">; </span><span style="color: green">border:</span> <span style="color: maroon">1</span> <span style="color: red">px</span> <span style="color: red">solid</span> <span style="color: #00008b">red</span> <span style="color: gray">;</span> <span style="color: olive">}</span></li><li><span style="color: gray">&lt;/</span> <span style="color: blue">style</span> <span style="color: gray">&gt;</span> </li></ol></div>
<p>浮动后本来外边距10px,但IE解释为20px,解决办法是加上display:inline</p>
<p>&nbsp;</p>
<p>三、为什么FF下文本无法撑开容器的高度？</p>
<p>标准浏览器中固定高度值的容器是不会象IE6里那样被撑开的,那我又想固定高度，又想能被撑开需要怎样设置呢？办法就是去掉height设置min-height:200px; 这里为了照顾不认识min-height的IE6 可以这样定义：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number."><li class="hl-firstline"><span style="color: blue">div</span> <span style="color: olive">{</span> <span style="color: green">height:</span> <span style="color: red">auto</span> <span style="color: gray">!important</span> <span style="color: gray">; </span><span style="color: green">height:</span> <span style="color: maroon">200</span> <span style="color: red">px</span> <span style="color: gray">; </span><span style="color: green">min-height:</span> <span style="color: maroon">200</span> <span style="color: red">px</span> <span style="color: gray">; </span><span style="color: olive">}</span> </li></ol></div>
<p>四、为什么web标准中IE无法设置滚动条颜色了？</p>
<p>原来样式设置：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number."><li class="hl-firstline"><span style="color: gray">&lt;</span> <span style="color: blue">style</span> <span style="color: blue">type</span> <span style="color: gray">="</span> <span style="color: blue">text</span> <span style="color: gray">/</span> <span style="color: blue">css</span> <span style="color: gray">"&gt; </span></li><li><span style="color: blue">body</span> <span style="color: olive">{</span> <span style="color: green">scrollbar-face-color:</span> <span style="color: #00008b">#f6f6f6</span> <span style="color: gray">; </span><span style="color: green">scrollbar-highlight-color:</span> <span style="color: #00008b">#fff</span> <span style="color: gray">; </span><span style="color: green">scrollbar-shadow-color:</span> <span style="color: #00008b">#eeeeee</span> <span style="color: gray">; </span><span style="color: green">scrollbar-3dlight-color:</span> <span style="color: #00008b">#eeeeee</span> <span style="color: gray">; </span><span style="color: green">scrollbar-arrow-color:</span> <span style="color: #00008b">#000</span> <span style="color: gray">; </span><span style="color: green">scrollbar-track-color:</span> <span style="color: #00008b">#fff</span> <span style="color: gray">; </span><span style="color: green">scrollbar-darkshadow-color:</span> <span style="color: #00008b">#fff</span> <span style="color: gray">; </span><span style="color: olive">}</span> <span style="color: gray">&nbsp;&nbsp;</span></li><li><span style="color: gray">&lt;/</span> <span style="color: blue">style</span> <span style="color: gray">&gt;</span> </li></ol></div>
<p>解决办法是将body换成html<br /><br />五、为什么无法定义1px左右高度的容器？<br />　　<br />IE6下这个问题是因为默认的行高造成的，解决的方法也有很多，例如：overflow:hidden | zoom:0.08 | line-height:1px<br /><br />六、怎么样才能让层显示在FLASH之上呢？<br />　　<br />解决的办法是给FLASH设置透明:</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number."><li class="hl-firstline"><span style="color: olive">&lt;</span> <span style="color: green">a</span> <span style="color: #00008b">href</span> <span style="color: gray">=</span> <span style="color: #8b0000">"</span> <span style="color: red">http://www.easyq.net.cn/</span> <span style="color: #8b0000">"</span> <span style="color: olive">&gt;</span> <span style="color: gray">:</span> <span style="color: olive">&lt;/</span> <span style="color: green">a</span> <span style="color: olive">&gt;</span></li><li><span style="color: olive">&lt;</span> <span style="color: green">pre</span> <span style="color: #00008b">lang</span> <span style="color: gray">=</span> <span style="color: #8b0000">"</span> <span style="color: red">html</span> <span style="color: #8b0000">"</span> <span style="color: #00008b">line</span> <span style="color: gray">=</span> <span style="color: #8b0000">"</span> <span style="color: red">1</span> <span style="color: #8b0000">"</span> <span style="color: olive">&gt;</span></li><li><span style="color: olive">&lt;</span> <span style="color: green">param</span> <span style="color: #00008b">name</span> <span style="color: gray">=</span> <span style="color: #8b0000">"</span> <span style="color: red">wmode</span> <span style="color: #8b0000">"</span> <span style="color: #00008b">value</span> <span style="color: gray">=</span> <span style="color: #8b0000">"</span> <span style="color: red">transparent</span> <span style="color: #8b0000">"</span> <span style="color: olive">/&gt;</span> </li></ol></div>
<p>七、怎样使一个层垂直居中于浏览器中？</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number."><li class="hl-firstline"><span style="color: gray">&lt;</span> <span style="color: blue">style</span> <span style="color: blue">type</span> <span style="color: gray">="</span> <span style="color: blue">text</span> <span style="color: gray">/</span> <span style="color: blue">css</span> <span style="color: gray">"&gt; </span></li><li><span style="color: gray">&lt;!--&nbsp;&nbsp;</span></li><li><span style="color: blue">div</span> <span style="color: olive">{</span> <span style="color: gray">&nbsp;&nbsp;</span></li><li><span style="color: green">position:</span> <span style="color: red">absolute</span> <span style="color: gray">;&nbsp;&nbsp;</span></li><li><span style="color: green">top:</span> <span style="color: maroon">50</span> <span style="color: red">%</span> <span style="color: gray">;&nbsp;&nbsp;</span></li><li><span style="color: green">left:</span> <span style="color: maroon">50</span> <span style="color: red">%</span> <span style="color: gray">;&nbsp;&nbsp;</span></li><li><span style="color: green">margin:</span> <span style="color: gray">-</span> <span style="color: maroon">100</span> <span style="color: red">px</span> <span style="color: maroon">0</span> <span style="color: maroon">0</span> <span style="color: gray">-</span> <span style="color: maroon">100</span> <span style="color: red">px</span> <span style="color: gray">;&nbsp;&nbsp;</span></li><li><span style="color: green">width:</span> <span style="color: maroon">200</span> <span style="color: red">px</span> <span style="color: gray">;&nbsp;&nbsp;</span></li><li><span style="color: green">height:</span> <span style="color: maroon">200</span> <span style="color: red">px</span> <span style="color: gray">;&nbsp;&nbsp;</span></li><li><span style="color: green">border:</span> <span style="color: maroon">1</span> <span style="color: red">px</span> <span style="color: red">solid</span> <span style="color: #00008b">red</span> <span style="color: gray">;&nbsp;&nbsp;</span></li><li><span style="color: olive">}</span> <span style="color: gray">&nbsp;&nbsp;</span></li><li><span style="color: gray">--&gt; </span></li><li><span style="color: gray">&lt;/</span> <span style="color: blue">style</span> <span style="color: gray">&gt;</span> </li></ol></div>
<p>　　<br />这里使用百分比绝对定位，与外补丁负值的方法，负值的大小为其自身宽度高度除以二</p>
<p>八、firefox嵌套div标签的居中问题的解决方法</p>
<p>假定有如下情况：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number."><li class="hl-firstline"><span style="color: olive">&lt;</span> <span style="color: green">div</span> <span style="color: #00008b">id</span> <span style="color: gray">=</span> <span style="color: #8b0000">"</span> <span style="color: red">a</span> <span style="color: #8b0000">"</span> <span style="color: olive">&gt;</span></li><li><span style="color: gray">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: olive">&lt;</span> <span style="color: green">div</span> <span style="color: #00008b">id</span> <span style="color: gray">=</span> <span style="color: #8b0000">"</span> <span style="color: red">b</span> <span style="color: #8b0000">"</span> <span style="color: olive">&gt;</span> <span style="color: olive">&lt;/</span> <span style="color: green">div</span> <span style="color: olive">&gt;</span></li><li><span style="color: olive">&lt;/</span> <span style="color: green">div</span> <span style="color: olive">&gt;</span> </li></ol></div>
<p>如果要实现b在a中居中放置，一般只需用CSS设置a的text-align属性为center。这样的方法在IE里看起来一切 正常；但是在Firefox中b却会是居左的。<br />解决办法就是设置b的横向margin为auto。例如设置b的CSS样式为：margin: 0 auto;。</p>
<p>-----------------------------------------------------活跃的分割线--------------------------------------------------------</p>
<p>最好的解决方案往往是最简单的，这里列出8个CSS技巧，非常简单，简单到只需要写一行代码，只需要定义一个属性参数。非常适合学习CSS的新手朋友阅读。</p>
<p><strong>使用 line-height 垂直居中</strong></p>
<p><span class="code"><font color="#000000">line-height:24px;</font></span></p>
<p>使用固定宽度的容器并且需要一行垂直居中时，使用 line-height 即可（高度与父层容器一致），更多的垂直居中总结可以看这里。</p>
<p><strong>清除容器浮动</strong></p>
<p><span class="code"><font color="#000000">#main {<br />&nbsp;&nbsp;&nbsp; overflow:hidden;<br />}</font></span></p>
<p>期前也提到过这样的问题，更多信息可以看这里。</p>
<p><strong>不让链接折行</strong></p>
<p><span class="code"><font color="#000000">a {<br />&nbsp;&nbsp;&nbsp; white-space:nowrap;<br />}</font></span></p>
<p>上面的设定就能避免链接折行，不过个人建议长链接会有相应的这行（有关换行方面的讨论，参看圆心的记录）。</p>
<p><strong>始终让 Firefox 显示滚动条</strong></p>
<p><span class="code"><font color="#000000">html {<br />&nbsp;&nbsp;&nbsp; overflow:-moz-scrollbars-vertical;<br />}</font></span></p>
<p>更多的 Mozilla/Firefox 私有 CSS 属性可以参考这里。需跨浏览器的支持，也可以使用</p>
<p><span class="code"><font color="#000000">body, html {<br />&nbsp;&nbsp;&nbsp; min-height:101%;<br />}</font></span></p>
<p><strong>使块元素水平居中</strong></p>
<p><span class="code"><font color="#000000">margin:0 auto;</font></span></p>
<p>其实就是</p>
<p><span class="code"><font color="#000000">margin-left: auto;<br />margin-right: auto;</font></span></p>
<p>这个技巧基本上所有的 CSS 教科书都会有说明，别忘记给它加上个宽度。Exploer 下也可以使用</p>
<p><span class="code"><font color="#000000">body{<br />&nbsp;&nbsp;&nbsp; text-align: center;<br />}</font></span></p>
<p>然后定义内层容器</p>
<p><span class="code"><font color="#000000">text-align: left;</font></span></p>
<p>恢复。</p>
<p><strong>隐藏 Exploer textarea 的滚动条</strong></p>
<p><span class="code"><font color="#000000">textarea {<br />&nbsp;&nbsp;&nbsp; overflow:auto;<br />}</font></span></p>
<p>Exploer 默认情况下 textarea 会有垂直滚动条（不要问我为什么）。</p>
<p><strong>设置打印分页</strong></p>
<p><span class="code"><font color="#000000">h2 {<br />&nbsp;&nbsp;&nbsp; page-break-before:always;<br />}</font></span></p>
<p>page-break-before 属性能设置打印网页时的分页。</p>
<p><strong>删除链接上的虚线框</strong></p>
<p><span class="code"><font color="#000000">a:active, a:focus {<br />&nbsp;&nbsp;&nbsp; outline:none;<br />}</font></span></p>
<p>Firefox 默认会在链接获得焦点（或者点击时）加上条虚线框，使用上面的属性可以删除。</p>
<p><strong>最简单的 CSS 重置</strong></p>
<p><span class="code"><font color="#000000">* {<br />&nbsp;&nbsp; margin: 0; padding: 0<br />}</font></span><br /><br />大家都知道，点击链接时，通常会出现虚线框，影响美观。这个属性设置可以移除点击时的虚线框。不过帕兰之前试用，用于我的WP主题，得到的后果是，确实去除了虚线框，但是在IE内核的浏览器中，用户留言时，姓名居然不能输入中文。不知道是我的编码设置有问题，还是WP的问题。</p>
<p>&nbsp;</p>
<p>----------------------------------------------------总统分割线--------------------------------------------------------------</p>
<p>CSS 对浏览器的兼容性有时让人很头疼，或许当你了解当中的技巧跟原理，就会觉得也不是难事，从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下。对于web2.0的过度，请尽量用xhtml格式写代码，而且DOCTYPE 影响 CSS 处理，作为W3C的标准，一定要加 DOCTYPE声明。 <br /><br />CSS技巧 <br /><br />1.div的垂直居中问题 <br /><br />vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字，就垂直居中了。缺点是要控制内容不要换行 <br /><br />2. margin加倍的问题 <br /><br />设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上display:inline; <br />例如： <br />＜#div id=&#8221;imfloat&#8221;&gt; <br />相应的css为 <br />#imfloat{ <br />float:left; <br />margin:5px;/*IE下理解为10px*/ <br />display:inline;/*IE下再理解为5px*/} <br /><br />3.浮动ie产生的双倍距离 <br /><br />#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略} <br />这里细说一下block与inline两个元素：block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素); <br />#box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现同一行排列的效果 diplay:table; <br /><br />4 IE与宽度和高度的问题 <br /><br />IE不认得min-这个定义，但实际上它把正常的width和height当作有min的情况来使。这样问题就大了，如果只用宽度和高度，正常的浏览器里这两个值就不会变，如果只用min-width和min-height的话，IE下面根本等于没有设置宽度和高度。 <br />比如要设置背景图片，这个宽度是比较重要的。要解决这个问题，可以这样： <br />#box{ width: 80px; height: 35px;}html&gt;body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;} <br /><br />5.页面的最小宽度 <br /><br />min- width是个非常方便的CSS命令，它可以指定元素最小也不能小于某个宽度，这样就能保证排版一直正确。但IE不认得这个，而它实际上把 width当做最小宽度来使。为了让这一命令在IE上也能用，可以把一个＜div&gt; 放到 ＜body&gt; 标签下，然后为div指定一个类,然后CSS这样设计： <br />#container{ min-width: 600px; width:expression(document.body.clientWidth ＜ 600? "600px": "auto" );} <br />第一个min-width是正常的；但第2行的width使用了Javascript，这只有IE才认得，这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。 <br /><br />6.DIV浮动IE文本产生3象素的bug <br /><br />左边对象浮动，右边采用外补丁的左边距来定位，右边对象内的文本会离左边有3px的间距. <br />#box{ float:left; width:800px;} <br />#left{ float:left; width:50%;} <br />#right{ width:50%;} <br />*html #left{ margin-right:-3px; //这句是关键} <br />＜div id="box"&gt; <br />＜div id="left"&gt;＜/div&gt; <br />＜div id="right"&gt;＜/div&gt; <br />＜/div&gt; <br /><br />7.IE捉迷藏的问题 <br /><br />当div应用复杂的时候每个栏中又有一些链接，DIV等这个时候容易发生捉迷藏的问题。 <br />有些内容显示不出来，当鼠标选择这个区域是发现内容确实在页面。 解决办法：对#layout使用line-height属性 或者给#layout使用固定高和宽。页面结构尽量简单。 <br />8.float的div闭合;清除浮动;自适应高度; <br /><br />&#9312; 例如：＜#div id=&#8221;floatA&#8221; &gt;＜#div id=&#8221;floatB&#8221; &gt;＜#div id=&#8221;NOTfloatC&#8221; &gt;这里的NOTfloatC并不希望继续平移，而是希望往下排。(其中floatA、floatB的属性已经设置为float:left;) <br />这 段代码在IE中毫无问题，问题出在FF。原因是NOTfloatC并非float标签，必须将float标签闭合。在 ＜#div class=&#8221;floatB&#8221;&gt; ＜#div class=&#8221;NOTfloatC&#8221;&gt;之间加上 ＜#div class=&#8221;clear&#8221;&gt;这个div一定要注意位置，而且必须与两个具有float属性的div同级，之间不能存在嵌套关系，否则会产生异常。并且将clear这种样式定义为为如下即可： .clear{ clear:both;} <br /><br />&#9313;作为外部 wrapper 的 div 不要定死高度,为了让高度能自动适应，要在wrapper里面加上overflow:hidden; 当包含float的box的时候，高度自动适应在IE下无效，这时候应该触发IE的layout私有属性(万恶的IE啊！)用zoom:1;可以做到，这样就达到了兼容。 <br />例如某一个wrapper如下定义： <br />.colwrapper{ overflow:hidden; zoom:1; margin:5px auto;} <br /><br />&#9314;对于排版,我们用得最多的css描述可能就是float:left.有的时候我们需要在n栏的float div后面做一个统一的背景,譬如: <br />＜div id=&#8221;page&#8221;&gt; <br />＜div id=&#8221;left&#8221;&gt;＜/div&gt; <br />＜div id=&#8221;center&#8221;&gt;＜/div&gt; <br />＜div id=&#8221;right&#8221;&gt;＜/div&gt; <br />＜/div&gt; <br />比 如我们要将page的背景设置成蓝色,以达到所有三栏的背景颜色是蓝色的目的,但是我们会发现随着left center right的向下拉长,而page居然保存高度不变,问题来了,原因在于page不是float属性,而我们的page由于要居中,不能设置成 float,所以我们应该这样解决 <br />＜div id=&#8221;page&#8221;&gt; <br />＜div id=&#8221;bg&#8221; style=&#8221;float:left;width:100%&#8221;&gt; <br />＜div id=&#8221;left&#8221;&gt;＜/div&gt; <br />＜div id=&#8221;center&#8221;&gt;＜/div&gt; <br />＜div id=&#8221;right&#8221;&gt;＜/div&gt; <br />＜/div&gt; <br />＜/div&gt; <br />再嵌入一个float left而宽度是100%的DIV解决之 <br /><br />&#9315;万能float 闭合(非常重要!) <br />关于 clear float 的原理可参见 [How To Clear Floats Without Structural Markup],将以下代码加入Global CSS 中,给需要闭合的div加上 class="clearfix" 即可,屡试不爽. <br />/* Clear Fix */ <br />.clearfix:after { content:"."; display:block; height:0; clear:both; visibility:hidden; } <br />.clearfix { display:inline-block; } <br />/* Hide from IE Mac */ <br />.clearfix {display:block;} <br />/* End hide from IE Mac */ <br />/* end of clearfix */ <br />或者这样设置：.hackbox{ display:table; //将对象作为块元素级的表格显示} <br /><br />９．高度不适应 <br /><br />高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节，特别是当内层对象使用margin 或paddign 时。 <br />例： <br />#box {background-color:#eee; } <br />#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; } <br />＜div id="box"&gt; <br />＜p&gt;p对象中的内容＜/p&gt; <br />＜/div&gt; <br />解决方法：在P对象上下各加2个空的div对象CSS代码：.1{height:0px;overflow:hidden;}或者为DIV加上border属性。 <br /><br />10 .IE6下为什么图片下有空隙产生 <br /><br />解 决这个BUG的方法也有很多,可以是改变html的排版,或者设置img 为display:block 或者设置vertical-align 属性为vertical-align:top 　 bottom 　middle 　text-bottom 都可以解决. <br /><br />11.如何对齐文本与文本输入框 <br /><br />加上 vertical-align:middle; <br />＜style type="text/css"&gt; <br />＜!-- <br />input { <br />width:200px; <br />height:30px; <br />border:1px solid red; <br />vertical-align:middle; <br />} <br />--&gt; <br />＜/style&gt; <br /><br />12.web标准中定义id与class有什么区别吗 <br /><br />一.web标准中是不容许重复ID的,比如 div id="aa" 不容许重复2次,而class 定义的是类,理论上可以无限重复, 这样需要多次引用的定义便可以使用他. <br /><br />二.属性的优先级问题 <br />ID 的优先级要高于class,看上面的例子 <br /><br />三.方便JS等客户端脚本,如果在页面中要对某个对象进行脚本操作,那么可以给他定义一个ID,否则只能利用遍历页面元素加上指定特定属性来找到它,这是相对浪费时间资源,远远不如一个ID来得简单. <br /><br />13. LI中内容超过长度后以省略号显示的方法 <br /><br />此方法适用与IE与OP浏览器 <br /><br />＜style type="text/css"&gt; <br />＜!-- <br />li { <br />width:200px; <br />white-space:nowrap; <br />text-overflow:ellipsis; <br />-o-text-overflow:ellipsis; <br />overflow: hidden; <br />} <br /><br />--&gt; <br />＜/style&gt; <br /><br />14.为什么web标准中IE无法设置滚动条颜色了 <br /><br />解决办法是将body换成html <br />＜!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; <br />＜meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt; <br />＜style type="text/css"&gt; <br />＜!-- <br />html { <br />scrollbar-face-color:#f6f6f6; <br />scrollbar-highlight-color:#fff; <br />scrollbar-shadow-color:#eeeeee; <br />scrollbar-3dlight-color:#eeeeee; <br />scrollbar-arrow-color:#000; <br />scrollbar-track-color:#fff; <br />scrollbar-darkshadow-color:#fff; <br />} <br />--&gt; <br />＜/style&gt; <br /><br />15.为什么无法定义1px左右高度的容器 <br /><br />IE6下这个问题是因为默认的行高造成的,解决的方法也有很多,例如:overflow:hidden 　 zoom:0.08 　 line-height:1px <br /><br />16.怎么样才能让层显示在FLASH之上呢 <br /><br />解决的办法是给FLASH设置透明 <br />＜param name="wmode" value="transparent" /&gt; <br /><br />17.怎样使一个层垂直居中于浏览器中 <br /><br />这里我们使用百分比绝对定位,与外补丁负值的方法,负值的大小为其自身宽度高度除以二 <br />＜style type="text/css"&gt; <br />＜!-- <br />div { <br />position:absolute; <br />top:50%; <br />lef:50%; <br />margin:-100px 0 0 -100px; <br />width:200px; <br />height:200px; <br />border:1px solid red; <br />} <br />--&gt; <br />＜/style&gt;FF与IE <br /><br />1. Div居中问题 <br /><br />div设置 margin-left, margin-right 为 auto 时已经居中，IE 不行，IE需要设定body居中，首先在父级元素定义text-algin: center;这个的意思就是在父级元素内的内容居中。 <br /><br />2.链接(a标签)的边框与背景 <br /><br />a 链接加边框和背景色，需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。 <br /><br />3.超链接访问过后hover样式就不出现的问题 <br /><br />被点击访问过的超链接样式不在具有hover和active了,很多人应该都遇到过这个问题,解决方法是改变CSS属性的排列顺序: L-V-H-A <br />Code: <br />＜style type="text/css"&gt; <br />＜!-- <br />a:link {} <br />a:visited {} <br />a:hover {} <br />a:active {} <br />--&gt; <br />＜/style&gt; <br /><br />4. 游标手指cursor <br /><br />cursor: pointer 可以同时在 IE FF 中显示游标手指状， hand 仅 IE 可以 <br /><br />5.UL的padding与margin <br /><br />ul标签在FF中默认是有padding值的,而在IE中只有margin默认有值,所以先定义 ul{margin:0;padding:0;}就能解决大部分问题 <br /><br />6. FORM标签 <br /><br />这 个标签在IE中,将会自动margin一些边距,而在FF中margin则是0,因此,如果想显示一致,所以最好在css中指定margin和 padding,针对上面两个问题,我的css中一般首先都使用这样的样式ul,form{margin:0;padding:0;}给定义死了,所以后面就不会为这个头疼了. <br /><br />7. BOX模型解释不一致问题 <br /><br />在FF和IE中的BOX模型解释不一致导致 相差2px解决方法：div{margin:30px!important;margin:28px;} 注意这两个margin的顺序一定不能写反， important这个属性IE不能识别，但别的浏览器可以识别。所以在IE下其实解释成这样： div{maring:30px;margin:28px}重复定义的话按照最后一个来执行，所以不可以只写margin:xx px!important; <br />#box{ width:600px; //for ie6.0- w\idth:500px; //for ff+ie6.0} <br />#box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width /**/:500px; //for ie6.0-} <br /><br />8.属性选择器(这个不能算是兼容,是隐藏css的一个bug) <br /><br />p[id]{}div[id]{} <br />这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用.属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的. <br /><br />9.最狠的手段 - !important; <br /><br />如果实在没有办法解决一些细节问题,可以用这个方法.FF对于&#8221;!important&#8221;会自动优先解析,然而IE则会忽略.如下 <br />.tabd1{ <br />background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/ <br />background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */} <br />值得注意的是，一定要将xxxx !important 这句放置在另一句之上，上面已经提过 <br />FF与IE <br /><br />1. Div居中问题 <br /><br />div设置 margin-left, margin-right 为 auto 时已经居中，IE 不行，IE需要设定body居中，首先在父级元素定义text-algin: center;这个的意思就是在父级元素内的内容居中。 <br /><br />2.链接(a标签)的边框与背景 <br /><br />a 链接加边框和背景色，需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。 <br /><br />3.超链接访问过后hover样式就不出现的问题 <br /><br />被点击访问过的超链接样式不在具有hover和active了,很多人应该都遇到过这个问题,解决方法是改变CSS属性的排列顺序: L-V-H-A <br />Code: <br />＜style type="text/css"&gt; <br />＜!-- <br />a:link {} <br />a:visited {} <br />a:hover {} <br />a:active {} <br />--&gt; <br />＜/style&gt; <br /><br />4. 游标手指cursor <br /><br />cursor: pointer 可以同时在 IE FF 中显示游标手指状， hand 仅 IE 可以 <br /><br />5.UL的padding与margin <br /><br />ul标签在FF中默认是有padding值的,而在IE中只有margin默认有值,所以先定义 ul{margin:0;padding:0;}就能解决大部分问题 <br /><br />6. FORM标签 <br /><br />这 个标签在IE中,将会自动margin一些边距,而在FF中margin则是0,因此,如果想显示一致,所以最好在css中指定margin和 padding,针对上面两个问题,我的css中一般首先都使用这样的样式ul,form{margin:0;padding:0;}给定义死了,所以后面就不会为这个头疼了. <br /><br />7. BOX模型解释不一致问题 <br /><br />在FF和IE中的BOX模型解释不一致导致 相差2px解决方法：div{margin:30px!important;margin:28px;} 注意这两个margin的顺序一定不能写反， important这个属性IE不能识别，但别的浏览器可以识别。所以在IE下其实解释成这样： div{maring:30px;margin:28px}重复定义的话按照最后一个来执行，所以不可以只写margin:xx px!important; <br />#box{ width:600px; //for ie6.0- w\idth:500px; //for ff+ie6.0} <br />#box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width /**/:500px; //for ie6.0-} <br /><br />8.属性选择器(这个不能算是兼容,是隐藏css的一个bug) <br /><br />p[id]{}div[id]{} <br />这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用.属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的. <br /><br />9.最狠的手段 - !important; <br /><br />如果实在没有办法解决一些细节问题,可以用这个方法.FF对于&#8221;!important&#8221;会自动优先解析,然而IE则会忽略.如下 <br />.tabd1{ <br />background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/ <br />background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */} <br />值得注意的是，一定要将xxxx !important 这句放置在另一句之上，上面已经提过 <br />FF与IE <br /><br />1. Div居中问题 <br /><br />div设置 margin-left, margin-right 为 auto 时已经居中，IE 不行，IE需要设定body居中，首先在父级元素定义text-algin: center;这个的意思就是在父级元素内的内容居中。 <br /><br />2.链接(a标签)的边框与背景 <br /><br />a 链接加边框和背景色，需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。 <br /><br />3.超链接访问过后hover样式就不出现的问题 <br /><br />被点击访问过的超链接样式不在具有hover和active了,很多人应该都遇到过这个问题,解决方法是改变CSS属性的排列顺序: L-V-H-A <br />Code: <br />＜style type="text/css"&gt; <br />＜!-- <br />a:link {} <br />a:visited {} <br />a:hover {} <br />a:active {} <br />--&gt; <br />＜/style&gt; <br /><br />4. 游标手指cursor <br /><br />cursor: pointer 可以同时在 IE FF 中显示游标手指状， hand 仅 IE 可以 <br /><br />5.UL的padding与margin <br /><br />ul标签在FF中默认是有padding值的,而在IE中只有margin默认有值,所以先定义 ul{margin:0;padding:0;}就能解决大部分问题 <br /><br />6. FORM标签 <br /><br />这 个标签在IE中,将会自动margin一些边距,而在FF中margin则是0,因此,如果想显示一致,所以最好在css中指定margin和 padding,针对上面两个问题,我的css中一般首先都使用这样的样式ul,form{margin:0;padding:0;}给定义死了,所以后面就不会为这个头疼了. <br /><br />7. BOX模型解释不一致问题 <br /><br />在FF和IE中的BOX模型解释不一致导致 相差2px解决方法：div{margin:30px!important;margin:28px;} 注意这两个margin的顺序一定不能写反， important这个属性IE不能识别，但别的浏览器可以识别。所以在IE下其实解释成这样： div{maring:30px;margin:28px}重复定义的话按照最后一个来执行，所以不可以只写margin:xx px!important; <br />#box{ width:600px; //for ie6.0- w\idth:500px; //for ff+ie6.0} <br />#box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width /**/:500px; //for ie6.0-} <br /><br />8.属性选择器(这个不能算是兼容,是隐藏css的一个bug) <br /><br />p[id]{}div[id]{} <br />这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用.属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的. <br /><br />9.最狠的手段 - !important; <br /><br />如果实在没有办法解决一些细节问题,可以用这个方法.FF对于&#8221;!important&#8221;会自动优先解析,然而IE则会忽略.如下 <br />.tabd1{ <br />background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/ <br />background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */} <br />值得注意的是，一定要将xxxx !important 这句放置在另一句之上，上面已经提过 <br />10.IE,FF的默认值问题 <br /><br />或 许你一直在抱怨为什么要专门为IE和FF写不同的CSS，为什么IE这样让人头疼，然后一边写css，一边咒骂那个可恶的M$ IE.其实对于css的标准支持方面，IE并没有我们想象的那么可恶，关键在于IE和FF的默认值不一样而已，掌握了这个技巧，你会发现写出兼容FF和 IE的css并不是那么困难，或许对于简单的css，你完全可以不用&#8221;!important&#8221;这个东西了。 <br />我们都知道，浏览器在显示网页的时候，都会根据网页的css样式表来决定如何显示，但是我们在样式表中未必会将所有的元素都进行了具体的描述，当然也没有必要那么做，所以对于那些没有描述的属性，浏览器将采用内置默认的方式来进行显示，譬如文字，如果你没有在css中指定颜色，那么浏览器将采用黑色或者系统颜色来显示，div或者其他元素的背景，如果在css中没有被指定，浏览器则将其设置为白色或者透明，等等其他未定义的样式均如此。所以有很多东西出现 FF和IE显示不一样的根本原因在于它们的默认显示不一样，而这个默认样式该如何显示我知道在w3中有没有对应的标准来进行规定，因此对于这点也就别去怪罪IE了。 <br /><br />11.为什么FF下文本无法撑开容器的高度 <br /><br />标准浏览器中固定高度值的容器是不会象IE6里那样被撑开的,那我又想固定高度,又想能被撑开需要怎样设置呢？办法就是去掉height设置min- height:200px; 这里为了照顾不认识min-height的IE6 可以这样定义: <br /><br />{ <br />height:auto!important; <br />height:200px; <br />min-height:200px; <br />} <br /><br />12.FireFox下如何使连续长字段自动换行 <br /><br />众所周知IE中直接使用 word-wrap:break-word 就可以了, FF中我们使用JS插入 <br />的方法来解决 <br /><br />＜style type="text/css"&gt; <br />＜!-- <br />div { <br />width:300px; <br />word-wrap:break-word; <br />border:1px solid red; <br />} <br />--&gt; <br />＜/style&gt; <br /><br />＜div id="ff"&gt;aaaaaaaaaaaaaaaaaaaaaaaaaaaa＜/div&gt; <br /><br />＜scrīpt type="text/javascrīpt"&gt; <br />/* ＜![CDATA[ */ <br />function toBreakWord(el, intLen){ <br />var ōbj=document.getElementById(el); <br />var strContent=obj.innerHTML; <br />var strTemp=""; <br />while(strContent.length&gt;intLen){ <br />strTemp+=strContent.substr(0,intLen)+" <br />"; <br />strContent=strContent.substr(intLen,strContent.length); <br />} <br />strTemp+=" <br />"+strContent; <br />obj.innerHTML=strTemp; <br />} <br />if(document.getElementById &amp;&amp; !document.all) toBreakWord("ff", 37); <br />/* ]]&gt; */ <br />＜/scrīpt&gt; <br />13.为什么IE6下容器的宽度和FF解释不同呢 <br /><br />＜?xml version="1.0" encoding="gb2312"?&gt; <br />＜!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; <br />＜meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt; <br />＜style type="text/css"&gt; <br />＜!-- <br />div { <br />cursor:pointer; <br />width:200px; <br />height:200px; <br />border:10px solid red <br />} <br />--&gt; <br />＜/style&gt; <br />＜div ōnclick="alert(this.offsetWidth)"&gt;让FireFox与IE兼容＜/div&gt; <br /><br />问 题的差别在于容器的整体宽度有没有将边框（border）的宽度算在其内,这里IE6解释为200PX ,而FF则解释为220PX,那究竟是怎么导致的问题呢？大家把容器顶部的xml去掉就会发现原来问题出在这,顶部的申明触发了IE的qurks mode,关于qurks mode、standards mode的相关知识,请参考:http://www.microsoft.com/china/msdn/library/webservices /asp.net/ <br />ASPNETusStan.mspx?mfr=true <br /><br />IE6,IE7,FF <br /><br />IE7.0出来了，对CSS的支持又有新问题。浏览器多了，网Bpx; /*For IE7 &amp; IE6*/ <br />_height:20px; /*For IE6*/ <br /><br />注意顺序。 <br /><br />这样也属于CSS HACK，不过没有上面这样简洁。 <br />#example { color: #333; } /* Moz */ <br />* html #example { color: #666; } /* IE6 */ <br />*+html #example { color: #999; } /* IE7 */ <br /><br /><br />第二种，是使用IE专用的条件注释 <br /><br />＜!--其他浏览器 --&gt; <br />＜link rel="stylesheet" type="text/css" href="css.css" /&gt; <br /><br />＜!--[if IE 7]&gt; <br />＜!-- 适合于IE7 --&gt; <br />＜link rel="stylesheet" type="text/css" href="ie7.css" /&gt; <br />＜![endif]--&gt; <br /><br />＜!--[if lte IE 6]&gt; <br />＜!-- 适合于IE6及一下 --&gt; <br />＜link rel="stylesheet" type="text/css" href="ie.css" /&gt; <br />＜![endif]--&gt; <br /><br />第三种，css filter的办法，以下为经典从国外网站翻译过来的。. <br /><br />新建一个css样式如下： <br />#item { <br />width: 200px; <br />height: 200px; <br />background: red; <br />} <br /><br />新建一个div,并使用前面定义的css的样式： <br />＜div id="item"&gt;some text here＜/div&gt; <br /><br />在body表现这里加入lang属性,中文为zh： <br />＜body lang="en"&gt; <br /><br />现在对div元素再定义一个样式： <br />*:lang(en) #item{ <br />background:green !important; <br />} <br /><br />这样做是为了用!important覆盖原来的css样式,由于:lang选择器ie7.0并不支持,所以对这句话不会有任何作用,于是也达到了 ie6.0下同样的效果,但是很不幸地的是,safari同样不支持此属性,所以需要加入以下css样式： <br />#item:empty { <br />background: green !important <br />} <br />:empty选择器为css3的规范,尽管safari并不支持此规范,但是还是会选择此元素,不管是否此元素存在,现在绿色会现在在除ie各版本以外的浏览器上。</p> <img src="http://www.cnblogs.com/cosiray/aggbug/1626884.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cosiray/archive/2009/12/18/1626884.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cosiray/archive/2009/12/18/1626884.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务汇总</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/>· <a href="http://news.cnblogs.com/n/56821/" target="_blank">视频网站2010年格局之变：七成企业将被淘汰</a><span style="color:gray">(2010-02-10 11:48)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>【精华】Asp优化之缓存技术</title><link>http://www.cnblogs.com/cosiray/archive/2009/12/10/1620866.html</link><dc:creator>酷赛瑞</dc:creator><author>酷赛瑞</author><pubDate>Thu, 10 Dec 2009 02:10:00 GMT</pubDate><guid>http://www.cnblogs.com/cosiray/archive/2009/12/10/1620866.html</guid><description><![CDATA[<p>阅读: 12 评论: 0 作者: <a href="http://www.cnblogs.com/cosiray/" target="_blank">酷赛瑞</a> 发表于 2009-12-10 10:10 <a href="http://www.cnblogs.com/cosiray/archive/2009/12/10/1620866.html" target="_blank">原文链接</a></p>一、何谓ASP缓存/为什么要缓存<br />当你的web站点采用asp技术建立的初期，可能感觉到的是asp动态网页技术带来的便利性，以及随意修改性、自如的http控制。但是，随着访问量的增加，你一定会发现自己的站点访问速度越来越慢，IIS重新启动得越来越频繁。接下来，你一定想优化asp，诸如更换性能更优异的数据库、建立索引、编写存储过程等等。这些措施有些不需要增加成本压力，有些则成本压力很大（譬如丛access到SQL），而且效果还不一定。<br />面对web访问压力，我认为最经济的办法是利用缓存优化技术来实现缓解web的服务压力。<br />Web访问量增加通常意味着以下资源需求的快速增长：<br />1、 网卡流量增加，需要消耗更多的CPU处理网络流量和网络I/O线程。<br />2、 需要更频繁的打开/关闭数据库连结（如果使用数据库技术&#8212;通常asp都会采用数据库作为数据存储），严重消耗资源的事物数量、以及事务相互竞争资源引起的死锁、会增加网络I/O或者CPU消耗。<br />3、 如果采用session的话，IIS为了维持状态，会消耗更多内存，而内存消耗可能会引发物理内存不够，引起物理内存同辅存间的频繁交换，从而引起代码执行的停顿，web响应阻滞。<br />4、 由于访问的不到及时响应，会引起网页访问故障，导致用户刷新，从而加剧CPU、内存等资源需求。<br />实际上，考虑通常的web应用程序，很多时候的动态代码执行是不必要的。 <br /><br /><br />二、asp缓存的分类<br />擅自总结，asp的缓存可以分为两类：<br />1、 文件缓存<br />所谓文件缓存，就是根据逻辑判断，一段时间内某个asp的特定执行将不会有很大的变动，因而将内容以静态html的形式存放，然后以web的重定向技术让客户端访问静态文件，以达到减少CPU、数据库资源等的需求。这样的应用很多，譬如很多论坛就是在回复贴子的时候将整个贴子重新生成一个静态文件，然后进行重定向的，例如 donews.com的论坛。该成静态还有一个副作用（好处）--可以很容易被google等搜索引擎收录。一些所谓新闻发布系统的都采用了此技术。<br />2、 文件片断缓存<br />所谓文件缓存，也是基于逻辑判断，某部分数据（通常是需要消耗资源的大容量数据库查询取得）在一定时间内不会改变，所以我们可以将这些数据利用文件的形式进行存储，当需要时候，可以通过读取文件来获取数据，避免增加数据库的负担。例如，我们通常将一些数据以xml格式存储，然后利用xslt技术实现显示（xml处理通常需要大量CPU资源，所以通常是IE直接读取xml到客户端在客户的CPU上进行处理）。CSDN的论坛就是这样处理的。<br />3、 主存缓存<br />除此之外，还可以考虑在内存中处理缓存，将需要及时响应的内容存储在内存中，一旦访问需求，立即从快速的贮存中输送出去。如果极大量的访问需求集中在几个少量的页面或者主存足够多，我想采用主存缓存一定可以大幅度提高web访问性能。<br /><br /><br />三、如何实现/使用缓存<br />实现缓存需要考虑以下问题：<br />1、 哪些页面会在短时间内不会改变？<br />分析自己的站点，这样的页面很多。譬如一个站点通常都有新闻资讯类的栏目，这些栏目通常都是站点维护人员在一天的某个时间发布资料，之后很少改动页面。那么这些页面就适合于采用静态文件缓存。实际上，所谓新闻发布系统就是这么做的，那么那也可以参考这些系统的思想改造自己的原有动态asp页面。<br /><br /><br />2、 那些页面针对全部访问者都采用同一个逻辑生成（也就是不区分访问者）。<br />除了新闻资讯之类的栏目所有访问者都看一个界面外，论坛等消耗资源的应用一般也可以设计成统一逻辑生成（同一个贴子，张三李四看的都一样），针对这类应用页面我们也可以采用静态缓存来实现。也可以考虑将数据片断化，利用脚本技术在服务器处理能力之外也就是客户端浏览器进行处理。<br /><br /><br />3、 采用缓存的代价和收获。<br />主要就是&#8220;空间换（响应）时间&#8221;。利用缓存技术将之后频繁需要的内容进行预处理，使之提高web服务器响应能力，更重要赢得访问者的欢心。<br />代价就是web空间需求增加，同时又可能影响到访问效果。<br />但我认为适当的缓存，是利大于弊的。<br /><br /><br />4、 那些地方不适宜采用缓存<br />动态查询页面，每个人的查询内容不一样，所以显示结果不大一样，所以不大可能将查询结果生成缓存，所以采用缓存较为复杂且缓存利用率底下，造成管理成本上什（假设你缓存了1000个查询关键字，那么管理这些关键字同缓存的对应也是麻烦事）。<br /><br /><br />四、实例分析<br />假设一个建议论坛的原有布局如下：<br />根目录下：<br />default.asp 首页，一般是精华、推荐之类<br />listBorad.asp 该文件列出全部分栏目的名称和介绍，如果携带参数MainBID就表示要列出板块下的栏目<br />listThread.asp 该文件如果不携带任何参数表示列出全部的贴子，携带MainBID表示列出某块的全部贴子。如果携带subBID表示列出具体栏目的贴子。如果携带page参数表示分页列出主题。<br />ViewThread.asp 列出某个贴子内容。我们假设贴子显示为一个发言，任意跟贴全部列在后面。ID参数为要显示的贴子。<br />Reply.asp 回应某个贴子，携带参数Id回应某个贴子<br />其它的暂不讨论。<br />以上，我们可以看到，如果全部是采用原始的ASP/PHP来做，那几乎每一个asp文件的执行都需要数据库操作，频繁的查询，多表查询。要知道查询数据库最终会带来性能的下降，响应速度下降，带给访问者缓慢的浏览影响，不利于web的质量。更重要的是对于甲乙两个人来将，他们访问ViewThread.asp之类的如果ID一致，那么很多时候他们会看到同样的内容（他们的浏览器收到的HTML代码几乎一样），但是为了这&#8220;同样的内容&#8221;，服务器需要打开数据库连结、查询，读取纪录，显示，关闭纪录、数据库连结。。。。以下列的消耗服务器资源的操作，如果是更多的人来访问，最终的结果是这些人加剧消耗服务器资源。实际上，这些为了&#8220;同样的内容&#8221;所做的重复劳动是可以利用缓存技术进行优化避免的。譬如：<br />在reply.asp提交内容后，我们立即调用生成静态的功能，将整个贴子内容存储为viewThread_xxxx.htm之类的静态html文件，再通常情况下访问viewThread.asp?ID=xxxx的时候，系统自动redirect到对应的静态文件viewThreadxxxx.htm去。这样，当一个贴子没有最新发布时候，他始终是静态内容提供给浏览者；一旦有了新的提交，将会更新到静态文件中去，这样，将会节省很多次数据库操作，大大提高响应速度。<br />listBorad.asp也可以实施静态化。我们可以分析其可能携带的参数，将缓存文件名设定为listBoard_xx.htm，在增加新的栏目时候进行更新listBoard_xxx.htm。listThread.asp也类似，只不过由于其参数更多，所以缓存文件也会很多。击若要缓存listThread.asp? subBID=xxx&amp;page=2，那么对应的静态文件是listThread_xxx_p2.htm。default.asp也一样。<br />那么如何判断什么时候更新？在什么时机更新？<br />讨论listThread.asp? subBID=xxx&amp;page=2，我们在执行listThread.asp俄时候提取subID和page，然后探测listThread_xxx_p2.htm是否存在，如果不存在就调用静态生成功能进行生成该文件，最终重定向到此静态文件。注意，此处的不存在就意味着出现了新的内容需要我们进行更新。<br />那如何造成文件不存在呢？删除。我们在发表一个新的贴子、删除贴子、移动贴子的时候我们可以将类似listThread_xxx_p2.htm之类的静态文件全部删除。这样就通知了何时要进行缓存。<br />现在还剩下一个问题，如何生成静态文件？<br />我们注意到，之前我们提到的&#8220;同样的内容&#8221;。我们可以将改造前的default.asp、listThread.asp等拷贝一个副本，取名为default_d.asp、listThread_2.asp，且在同一个目录中（理论上listThtrad.asp?subID=123同LISTtHREAD_D.ASP?SUBID=123的访问结果会是同样的内容），这样我们在需要生成静态文件的逻辑中，通过WEB访问请求的方式调用改造前的副本，得到html代码，并存储为静态文件。这个web请求实际上相当于在任何真实浏览者访问静态内容之前，由服务器自身现察看将会输出的html，然后返回这些代码，利用文件操作功能存储为静态文件。这样，缓存文件就在真正浏览者之前被创建。<br />这样的方案几乎不触动原来的布局，几乎不会造成因为改造出现404之类的错误。其次，静态文件也会帮助你的站点容易被被google之类的搜索引擎收录。何乐而不为？<br />最后，提醒，通过web访问，asp编程环境下，很多人采用xmlHTTP组件访问，这会造成很多问题。xmlhttp自身会cache请求的资源，导致我们通过此组件请求得到的内容不是最新的，造成逻辑上的混乱。所以，应当选择xml Server http对象或者winhttp组件来实现web请求资源。<br />使用ASP中的缓存技术可以很大程度上提高你的网站性能，其实这些实现方法是非常的简单，它将说明如何在服务器上的缓存是如何工作以及你如何使用一种被称为断开连接的ADO连接技术。 <br />　　在介绍这些技术之前先说明一下到底什么是ASP的缓存技术。 <br />　　所谓缓存其实就是在内存中开辟一个用来保存数据的空间，使用缓存你就不用频繁的访问你保存在硬盘上的数据了，灵活的使用缓存你就免去了心疼的看着可怜的硬盘饱受读数据时的折磨了。当你一旦执行了一个查询动作，并且将查询结果放入缓存中后，你就可以很迅速的重复访问这些数据了。而如果你不把数据放入缓存的话，当你再次执行这个查询时，服务器会将进程耗费在从数据库中获取并排序上了。 <br />　　当数据保存在缓存中时，再次查询时耗费的时间主要是在显示数据的时间上了。 <br />也就是说，我们不应该把经常需要改变的数据放到服务端的缓存中，我们应该把改变少，但是又需要经常访问的数据放到缓存中。 <br /><br />　　现在我们先讨论ASP在服务端使用缓存的技术，过会再讨论ASP如何在客户端使用 <br />缓存的技术。 <br />　　当你有大量的数据（静态的，就是说变动比较少的）需要显示给客户端时，你就可以考虑使用服务端的缓存技术了。这种技术尤其适用于那些显示风格一致性比较强的网站（呵呵，对于非主流的网站可不好用的说。） <br />　　其实实现方法特别的简单，大家只要看看下面这个简单的例子就明白了。 <br />　　这是一个用来显示书籍分类的例子程序 <br />DisplayBooks.ASP文件： <br /><br />&lt; %@ LANGUAGE=JavaScript % &gt; <br />&lt; html &gt; <br />&lt; body &gt; <br />&lt; form method=post &gt; <br />书籍分类； &lt; %= getBooksListBox() % &gt; <br />&lt; p&gt; <br />&lt; input type=submit &gt; <br /><br /><br />&lt; % <br />function getBooksListBox() <br />{ <br />BooksListBox = Application("BooksListBox") <br />if (BooksListBox != null) return BooksListBox; <br />crlf = String.fromCharCode(13, 10) <br />BooksListBox = "&lt; select name=Books&gt;" + crlf; <br />SQL = "Select * FROM Books orDER BY Name"; <br />cnnBooks = Server.CreateObject("ADODB.Connection"); <br />cnnBooks.Open("Books", "Admin",""); <br />rstBooks = cnnBooks.Execute(SQL); <br />fldBookName = rstBooks("BookName"); <br />while (!rstBooks.EOF){ <br />BooksListBox = BooksListBox + " &lt; option&gt;" + <br />fldBookName + "" + crlf; <br />rstBooks.MoveNext(); <br />} <br />BooksListBox = BooksListBox + "" <br />Application("BooksListBox") = BooksListBox <br />return BooksListBox; <br />} <br />% &gt; <br />　　很简单把，其实就是用了很简单的Application技术，而且就一句话的不同： <br />　　Application("BooksListBox") = BooksListBox <br />　　你可以验证一下你就会发现服务器上的请求数量会降低不少的。这种情况尤其适合与那些更新不是很频繁的网站内容，例如你一天（或则很长时间）只更新一次。 <br /><br />　　下面再讨论一种客户端的缓存技术这种技术也叫断开连接的ADO连接技术（翻译水平太次，听上去怎么这么别扭）。这种技术主要使用在用来保存用户个人信息，例如用户的密码，代号等等上面。它主要使用了ADO的一些属性。同时也回答了一些网友曾经提到过的能否在Applocation中使用ADO对象的问题。解释不清楚，下面让代码来发言： <br />文件GLOBAL.ASA： <br />&lt; !--METADATA TYPE="TypeLib" FILE="C:\Program Files\Common <br />Files\system\ado\msado15.dll"-- &gt; <br />&lt; SCRIPT LANGUAGE=VBScript RUNAT="Server" &gt; <br />Sub Application_OnStart <br />SQL = "Select UserName, Password FROM UserInfo" <br />cnnUsers = "DSN=User" <br />Set rsUsers = Server.CreateObject("ADODB.Recordset") <br />'注意下面这两句话，就是用来实现那个叫可用的断开连接的ADO技术 <br />rsCustomers.CursorLocation = adUseClient <br />rsCustomers.Open SQL, cnnAdvWorks, adOpenStatic, AdLockReadOnly <br />' 断开RecordSet的和数据库的连接 <br />rsCustomers.ActiveConnection = Nothing <br />Set Application("rsCustomers") = rsCustomers <br />End Sub <br /><br /><br />文件Users.ASP <br />&lt; % <br />'Clone方法使得每个用户拥有自己的一个RecordSet集合 <br />Set yourUsers = Application("rsUsers").Clone <br />Set UserName = yourUsers("UserName") <br />Set Password = yourUsers("Password") <br />Do Until yourUsers.EOF <br />% &gt; <br />用户姓名：&lt; %= UserName % &gt; 用户密码：&lt; %= Password % &gt; <br />&lt; % <br />yourUsers.MoveNext <br />Loop <br />% &gt;<img src="http://www.cnblogs.com/cosiray/aggbug/1620866.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cosiray/archive/2009/12/10/1620866.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cosiray/archive/2009/12/10/1620866.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务汇总</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/>· <a href="http://news.cnblogs.com/n/56821/" target="_blank">视频网站2010年格局之变：七成企业将被淘汰</a><span style="color:gray">(2010-02-10 11:48)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>【原创】房价啊房价，我为你哭泣……</title><link>http://www.cnblogs.com/cosiray/archive/2009/12/02/1615284.html</link><dc:creator>酷赛瑞</dc:creator><author>酷赛瑞</author><pubDate>Wed, 02 Dec 2009 05:51:00 GMT</pubDate><guid>http://www.cnblogs.com/cosiray/archive/2009/12/02/1615284.html</guid><description><![CDATA[<p>阅读: 20 评论: 0 作者: <a href="http://www.cnblogs.com/cosiray/" target="_blank">酷赛瑞</a> 发表于 2009-12-02 13:51 <a href="http://www.cnblogs.com/cosiray/archive/2009/12/02/1615284.html" target="_blank">原文链接</a></p>看着日益上涨的房价心里实在憋屈，索性出来说几句，以表心中的不满！<br /><br />这个世界并不是所有的买卖都是稳赚不赔的，为何现在房价这么高，很明显大利益集团（包括ZYZF的兄弟姐妹在搞投资的）在硬撑着，他们有钱撑着房价不跌除了多赚就是保本，因为他们买地的时候给了ZF不少钱，总不能赔钱给百姓做好事吧？所以就只能大投入硬撑着了，只要前期资本或成本一回笼，好听点赚够了，这些大资本家必会迅速撤资，不愿意做ZF的牺牲品。到时候中国房价下跌不说没准还会出现N多个类似房地美房利美的房产商作为这些炒房杂种们的炮灰。你说哪个战战兢兢的房产商愿意做自我牺牲啊？当然谁牺牲谁不牺牲只有ZF说了算，如果你后台不硬敢在全国人民的狂轰滥炸中足足坚持几年不倒也实在不比某某元首的厚颜无耻逊色啊？要不然人家也不会叫中国特色的市场经济，对吧？<br /><br />其次，中国人一向要面子，ZF同样如此，你想想，年初定了个8%的GDP增长目标，总不能年末达不到而把面子丢给百姓吧？这不是泥菩萨给自己身上抹黑吗？鬼才干，所以肯定得想点办法来达到这个目标啊，你看看，在内需方面牺牲房奴利益也就罢了，还把脏手伸向国外，人家老外傻B啊？等着被你欺诈，因此后来出现的澳大利亚啊，美国啊，欧盟啊，等等都不愿意跟ZGZF合作，而且还要加重反倾销关税，原因太简单不过了，房价涨到顶峰它就自己不涨了，老百姓也不傻啊，你骗一个两个可以，想骗绝大多数，聪明过头了吧？再涨中国百姓是要内乱的，所以就只能夹着尾巴在外面下功夫了。这下好了，各位，你们听说过中国历史上哪一年有今年这么多的国外对华贸易保护政策纠纷吗？奥巴马刚离开这个伟大的国度几天，人家就对中国加贸易关税，加得还不轻，人家才不会给你这个面子。人家也要考虑自己的利益是不？你以为你的面子能在全世界通用？真是傻得天真！<br /><br />各位，房子既然是个商品，它就一定会遵守市场规律，这是亘古不变的真理，目前的高房价已经被硬撑太久了，总有撑不住的时候的，人家ZF也不是傻B，人家也不想在自己国内爆发经济危机，所以还是会&#8220;宏观调控&#8221;干预房市走上正轨的，所以各位YUYU别太悲观，观望就成，就当做一回ZF的看客。<br /><br />这样吧，做个调查好了，就目前而言，各位YUYU们谁能接受目前房价，报名好了，顺便说下自己什么身份以便得到大家的理解和支持。<br /><br />我先报名好了：本人坚决抵制房价上涨的势头并坚持不会在近两年买房，本身也买不起。<br />观点：现在的房子已经不是商品了，快变成货币了，流通得比黄金还快！<br />身份：IT研发工程师<br /><br />以下跟帖，可攻击LZ本人和LZ观点以及LZ思想道德品质，其余不相干人等一律免责！谢了！<br /><br />2009年12月2日 于厦门滨北<br /><img src="http://www.cnblogs.com/cosiray/aggbug/1615284.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cosiray/archive/2009/12/02/1615284.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cosiray/archive/2009/12/02/1615284.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务汇总</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/>· <a href="http://news.cnblogs.com/n/56821/" target="_blank">视频网站2010年格局之变：七成企业将被淘汰</a><span style="color:gray">(2010-02-10 11:48)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>【原创】总理啊，你怎能叫我不骂您？</title><link>http://www.cnblogs.com/cosiray/archive/2009/12/01/1614434.html</link><dc:creator>酷赛瑞</dc:creator><author>酷赛瑞</author><pubDate>Tue, 01 Dec 2009 04:25:00 GMT</pubDate><guid>http://www.cnblogs.com/cosiray/archive/2009/12/01/1614434.html</guid><description><![CDATA[<p>阅读: 37 评论: 1 作者: <a href="http://www.cnblogs.com/cosiray/" target="_blank">酷赛瑞</a> 发表于 2009-12-01 12:25 <a href="http://www.cnblogs.com/cosiray/archive/2009/12/01/1614434.html" target="_blank">原文链接</a></p><p>总理啊，您可知道您的人民目前正处于水深火热之中？</p>
<p>总理啊，您可知道您的人民在这个世界上生存究竟要背负多大的压力？</p>
<p>总理啊，您可知道您的人民所生活的这个城市幸福指数正在每况日下？</p>
<p>总理啊，您可知道您的人民还有几千万大学生为了求职而四处奔波飘泊不定？</p>
<p>总理啊，您可知道现在的女大学生为了就业去参军面试还得通过才艺表演吗？</p>
<p>总理啊，您可知道您的人民生病看医生得动辄花费好几百块动辄就被医生做CT检查动辄就得花上好几个工作日？</p>
<p>总理啊，您可知道您的人民在看了2012后会为&#8220;党和国家一定会给大家重建家园&#8221;而发笑不已？</p>
<p>总理啊，您可知道您的人民买套房子得祖宗三代倾家荡产还要背负累累负债？</p>
<p>总理啊，我真想用房价作为导火索对您开骂，可想想您的仁慈已感化了无数世人，您叫我如何开口如何忍心对您作不敬的言辞和评论？</p>
<p>总理啊，我想了很久还是决定用诉苦的方式吧，因为我觉得只有这样我的人身安全才会得已保障。</p>
<p>总理啊，您知道吗？在这个国度有多少人是您的粉丝有多少人会不顾一切得爱戴和崇敬您吗？</p>
<p>总理啊，您能否让&#8220;您好我好大家好&#8221;的风气渐渐消退而多为人民的实际问题寻求真实有效的解决方案呢？因为这真的已经成为了这个国家和民族发展的顽疾。</p>
<p>总理啊，你能否多去关注下西部的欠发达地区？能否多关心下那些真正受贫困折磨的人民？难道他们就不是您的人民吗？他们就不需要您的呵护吗？难道你忍心忽略那些地方的人民吗？</p>
<p>总理啊，您可知道我想对您说的不仅仅是您的人民，还有您的官员，我们的父母官。</p>
<p>总理啊，您可知道您的官员有多少正在此刻携手自己的二奶在大街上闲逛？</p>
<p>总理啊，您可知道您的官员有多少正在此刻将贪污的黑心钱存入他国银行？</p>
<p>总理啊，您可知道您的官员有多少正在此刻夜总会的灯红酒绿下奢靡偷欢？</p>
<p>总理啊，我知道您忙，我知道您根本没时间去关注我所说的这些问题，可您知道吗？大船和小虫正是在这种微不足道的环境里滋生和萌发的？</p>
<p>总理啊，我要是您，我绝对不会让那多么多农村学生上大学，因为城市的承载能力真的有限。他们在农村仅仅承受的是物质贫乏的苦恼，可现在到了城里承受的不仅仅是物质匮乏的痛苦而且还得遭遇精神上的折磨。仿佛上了大学就跟上了贼船，因为他们只会收学费而已。</p>
<p>总理啊，我要是您，我会让中国人的&#8220;关系&#8221;合法话，因为阳光下的&#8220;关系&#8221;可能会比背后暗箱操作更真实更符合人情世故。</p>
<p>总理啊，我要是您，我绝对不会让央视的镜头每天都只对准政府要员而是更多的对准劳苦大众，这至少不会让国民观众审美疲劳到极点？</p>
<p>总理啊，我要是您，我绝对不会因为保住8%的GDP增长而牺牲老百姓的利益。您知道吗？现在的房价已经不是说超过了老百姓的购买能力，而是已经变性为房产奸商和政府官员勾结贪污的标的赃物了，炒作是他们，报价是他们，而买单的却是百姓。对于一个房奴而言，房子已经不是自己的窝了，而是自己的坟墓。而房价也好像不再是房价了，而是奴价了，工薪阶层一家两口人一辈子做牛做马不吃不喝赚来的钱都买不起一套普通的房子啊？</p>
<p>总理啊，您可知道，现在的央视处理政府和老百姓的纠纷要比当地政府官员自己处理来得迅速和有效？为什么当地政府协调不了的问题一报央视就解决得那么神速那么合乎情理？为什么这些矛盾一经央视报道当地政府就会连夜召开紧急会议马上解决问题了呢？白天他们都干吗去了？他们是在作秀吗？</p>
<p>总理啊，面对这些复杂而又现实的问题，怎能让一个身为百姓的我不寒心？怎能不让你的人民&#8220;颇有微辞&#8221;？您说我不骂您我骂谁啊？我不下地狱谁下地狱？</p>
<p>&nbsp;</p>
<p>2009年11月30日 于厦门思北寓所<br />
</p> <img src="http://www.cnblogs.com/cosiray/aggbug/1614434.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/cosiray/archive/2009/12/01/1614434.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cosiray/archive/2009/12/01/1614434.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务汇总</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/>· <a href="http://news.cnblogs.com/n/56821/" target="_blank">视频网站2010年格局之变：七成企业将被淘汰</a><span style="color:gray">(2010-02-10 11:48)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>【讨论】宋思明是完美男人吗？我的答案：YES</title><link>http://www.cnblogs.com/cosiray/archive/2009/11/30/1613652.html</link><dc:creator>酷赛瑞</dc:creator><author>酷赛瑞</author><pubDate>Mon, 30 Nov 2009 05:24:00 GMT</pubDate><guid>http://www.cnblogs.com/cosiray/archive/2009/11/30/1613652.html</guid><description><![CDATA[<p>阅读: 25 评论: 0 作者: <a href="http://www.cnblogs.com/cosiray/" target="_blank">酷赛瑞</a> 发表于 2009-11-30 13:24 <a href="http://www.cnblogs.com/cosiray/archive/2009/11/30/1613652.html" target="_blank">原文链接</a></p><div id="postmessage_54748414" class="t_msgfont">看完蜗居的人都不得不思考一些关于这部电视剧而引发争议的话题，既然是争议那就参与下好了，以下观点属个人看法，意见不同的可攻击LZ本人以及LZ的思想道德品质，别攻击我家人和除我之外的任何不相干的人，作个有责任心的YUYU，拜托！<br /><br />看到最后的结局第一感觉是假，是编剧的造假，结尾太牵强：宋不该死，海藻不该少了子宫，其他人不值得议论，不过作为一个在观众心里应该受到惩罚的男女主角们，编剧们非得这么安排，要不然他们会&#8220;不得好死&#8221;。<br /><br />站在一个男性的立场，我觉得宋是我心目中的完美男人，是社会的佼佼者，社会需要这样的男人，他的优秀可以让他的人生价值得以最大化实现也就是化学实验中讲的完全燃烧，不留任何残渣和遗憾。他个人作为社会的一份子可以让社会的优质资源得意最充分的发挥、利用和分配。尽管牺牲了个别人的利益，可就为社会的贡献来看，黑暗的官场象他这么清白单纯的应该算是比买彩票中大奖还少有的，他算是人民大众的大幸了。看他走向堕落的动机吧，他是个只追求&#8220;自己年轻时失去的爱情&#8221;的男人，作为一个对人生遗憾的弥补，以前没得到的他现在要尽自己最大的努力和权力得到并且珍惜和投入感情，这种男人在现如今用世所罕见来形容也不足为过啊。再看看我们现实中的其他官员，这些禽兽大多都是用来满足自己兽欲的，投入感情的少。很多官员都是打一枪换地方，也有打很多枪换地方的，不过行径几乎雷同，都一德性，很少有宋这么专一的，也没见他嫖过多少漂亮的明星，玩过多少处女模特啊？海藻实话讲她的&#8220;条件&#8221;实在很平庸，不要说小贝配她绰绰有余，就连掏粪的大爷找她做老婆也未尝不可啊。她们之间真的是爱情，只要是爱情就是伟大和神圣的，就是要受到别人尊重和祝福的。更何况这种爱情的几率多小啊？很多人不都是跟遇到鬼一样的心态来对待自己所谓的爱情吗？你们遇到了吗？遇到爱情了吗？如果遇到了那我祝福你并想对你说：不久的将来你一定会遇到鬼的，好听点的你去买彩票吧。<br /><br />再看看这个男人的衣着和坐骑，就发现他不是个爱慕虚荣奢华浮躁的人，别人买宝马让他破处，他一句&#8220;没兴趣&#8221;给打发了，海藻买高档衬衣给他他说不适合自己的身份给拒绝了，这不正是一个官员最优良的表现吗？你看看被曝光那些个贪官杂种们哪个不是人面兽心，表里不一的牲口，上班冠冕堂皇，下班衣冠禽兽，换车比换女人还勤快，哪还有保持这种两袖轻风的关荣传统的？奇了怪了。<br /><br />这个完美男人的唯一缺点就是不该让海藻给他生孩子，这点有些不负责任加自私，他让海藻为他生孩子的目的很明显：一是想传宗接代，因为他没儿子；二是想把孩子作为感情的筹码，想一辈子拴住自己现在爱的女人；三是他想把在自己女儿身上失去的父爱体现在他和海藻的这个孩子身上，有点西式的浪漫。以上三点对于一个男人本人来说并没有错误，因为自私并不是一个男人的本性，而是一个人（男女）作为个体的本性，这个对于他来说并无过错。可对于人的社会属性面来看，他是个错误，不该没有社会责任心。他没明白自己活着不仅仅是为了自己而是为了更多的人活得更幸福的这个道理，就算死也不能自己说了算，而是社会说了算，这就是一个人生活在这个世界上所付出的代价抑或是应尽的义务。<br /><br />再谈谈女人究竟喜欢宋是对还是错的问题，现在女人喜欢的不是宋，是他的钱和他的光环，因为这些都是大多数女人没有得到的，你若是女人况且是当事人我想你也会经不起诱惑的，恐怕就连尼姑也会被他给诱奸的更别说普通女人了，他的成熟，稳重，霸气，有钱，有势，有智慧，有情感，有责任心，有安全感，有车，有房，该有的都有了，人品也不赖，能力方面又无所不能，性技巧又高，嘴巴又甜，长相又帅气，海拔也不低，这样完美的男人怎能不让小女人动心？粗略估计99%的男人会倾慕他，99.9%的漂亮女人会喜欢他，不漂亮的就不用说了，根本高攀不上。各取所需，资源不浪费，在这个道德沦丧的时代，别那么纯贞了&#8230;&#8230;<br /><br />奉劝那些贪官，贪污的时候别贪污太多，象宋这样只贪污个养二奶的钱就行了，贪污太多没地方藏不说自己心里也不踏实，再说贪污那么多闲钱不仅造成社会资源的严重浪费，而且导致很多人因为钞票流通量的减少而缺钱花，买不起房和车别说了，就连基本生活质量也会下降，导致很多人因为经济问题而破坏社会和谐，甚至亡党亡国搞分裂的都有。你何不做做好事，把闲钱要么流入货币市场搞投资要么分给需要的人，大家一起分享你的劳动成果不是更具经济价值吗？你也会更快乐更充实啊。我要是政府官员我就贪点够花的就行，多余的给别人享受，一个人享受不仅一辈子花不完处理后事麻烦还得四处遭白眼被闲话而且心不安理不得甚至滋生阶级斗争，大家的快乐才是真的快乐嘛，只有这样才算是真正为和谐社会做贡献为和谐人民办实事。别说贪官都是坏人，更别说人家人品有问题，你要是当官也一样，人家爬到那个位置容易吗？不贪污干吗爬那么高？难道是为了实现伟大的共产主义奉献自己的青春和人生吗？有可能吗？基层不是更能服务大众吗？鬼才愿意干！<br /><br />贪官贪钱会拉动GDP增长，你信吗？真的哦，懂经济的会明白为什么&#8230;&#8230;<br /><br />我怀疑要是中国的所有贪官（也就是中国所有政府官员中的99.9%）都把藏家里或藏亲戚家里或藏地窖下的不管藏哪的CASH都拿出来的话可以重建好几个上海市了，大家别以为我在开玩笑，掐指一算小学生都会明白。<br /><br />人家都说世界上两样最肮脏的东西：一是官场，一是妓女的阴道，不过后者也是前者的受害者，不是有逼良为娼一说么？<br /><br />我说完了，大家发言吧，爱怎么骂怎么骂，我可以打着海纳百川的旗号接受你们的批判。<br /><br />2009年11月30&nbsp;&nbsp;于厦门滨北</div><img src="http://www.cnblogs.com/cosiray/aggbug/1613652.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cosiray/archive/2009/11/30/1613652.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cosiray/archive/2009/11/30/1613652.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务汇总</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/>· <a href="http://news.cnblogs.com/n/56821/" target="_blank">视频网站2010年格局之变：七成企业将被淘汰</a><span style="color:gray">(2010-02-10 11:48)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item></channel></rss>