我们把Counter-Strike的发展划分为以下几个时代:
- 起源
- 测试期
- 正式版
- Steam
- 展望CS:S
起源:
Counter-Strike,按照创始人CLIFFE的说法“是基于团队起主要作用的游戏:一队扮演恐怖分子的角色,另一队扮演反恐精英的角色。每一边能够使用不同的枪支、装备,这些枪支和装备具有不同的作用。地图有不同的目标:援救人质,暗杀,解雷,土匪逃亡等等”。这款游戏是在1999年夏天诞生的,创始人是Jess Cliffe 和 Minh 'Gooseman' Le-他们现在仍然是正在成长壮大中的Valve团队中的成员。
Jess Cliffe
在Counter-Strike两个创始人中更为人们所知,这应归于他在Steam 和Valve中所扮演的比较活跃的角色。Cliffer在这款游戏的制作中主要担任以下职责: 经理,2D图形,新闻发言人,测试,音响效果,游戏设计等。然而自从STEAM 和Condition Zero的发布后,他在Valve团队中所起的新闻发言人的角色,变得越来越活跃了。
Minh 'Gooseman' Le
属于Counter-Strike二人唱中的第二人,Gooseman出名是由于在这款游戏中担任模型的总管,并创建了所有的武器模型及玩家力学。Minh Le也是项目领导人,程序员,现在成了Valve 团队的职业玩家。他过去的项目包括制作出了适用于Quake系列的MOD,例如:Navy Seals 和 Quake Action 2.
从评论家的角度来看- Counter-Strike使用的是Half-Life的引擎去创建MOD以便与其他的游戏进行竞争。他的目标是带给处于在线游戏的环境中的玩家,模仿现实武器的射击状态,以动态的团队形式进行对战- Counter-Strike有着模仿现实的精确的地图和各种各样的游戏关卡。
测试期:
Counter-Strike是在经过最初的测试后,于1999年6月19日投放市场。从一系列的测试版开始,最终形成了我们现在所看到的游戏。,我们在其发展过程中,以论及每一版本主要的改变、探究详细的核心资料、画出每一个版本的大致轮廓的方式,来回顾整个测试版的历史。
Beta 1.0
这是Counter-Strike的第一个版本,于1999年6月19日发布,在游戏中只有非常少的几个地图孤零零地存在(cs_siege, cs_mansion, cs_prison &cs_wpndepot)。这个时期的游戏在人物模型、武器和客户系统上都存在非常明显的BUG。
Counter-Strike仅有援救人质游戏关,突出说明这一点非常重要-因为以DE_开头的安放C4的地图并不存在。正是由于这些,玩家仅有几少量的武器可以使用。这包括:USP, Glock, Shotgun, M4A1, MP5 Navy, TMP, AWP 和 M249 Para
cs_wpndepot大约在第一个Counter-strike测试版发布后的一个星期,第二个测试版于同月27日发布了。升级的内容包括BUG修正的第一步(已经使游戏非常精炼了),在其发布后的一个星期,从玩家反馈来的消息来看,下面的修正是非常成功的:
- 增加了服务器的稳定性-减少了系统崩溃。
- 修正了弹药和盔甲的重新设置的错误
- 增加了现在非常流行的"mp_friendlyfire"命令
- 修正了地图旋转溢出的错误
- 修正了cs_siege cs_wpndepot地图部分溢出的错误
- 增加了新地图:cs_assault 和 cs_desert
也就是在前一个版本发布之后的一个月左右,该版本于1999年7月20日发布,这个测试版比起原来一系列的BUG修正来讲,更注意“优化升级”的内容。这个版本升级不象其他的升级,没有增加新地图。但增加了以下内容:
- 在每局最开始增加了5秒的悬停时间,以杜绝rushing战术。
- 在服务器管理员和玩家都增加了踢人选项。
- 增加了Kevlar射击点。
- 引入减少跳射的准确率的机制。
- 优化了金钱系统
- 增加了闪光弹的效力范围
Beta 2.0
尽管命名为Beta 2,这实际上仅是1.2的第二版-该次升级的内容,比起其他的邻近版本之间升级的内容都要多。该版本于同年的8月13日发布,也就是在第一版之后的两个月左右。这个测试版由于新武器多样化的实施而广受争议;包括增加了现深受欢迎的AK-47 和 Deagle。我们也看到了USP和M4A1的消音器的引入,正如模型的优化一样受大家喜爱。
下面是这个非常重要的测试版升级过程中改变之处的列表:
- 正如上面提及的样,增加了3种武器:Sig 522 Commando, AK-47 和沙漠之鹰
- 为USP.45和M4A1增加了消音器。
- 一个非常有用的升级,增加了每局定时器和比分表
- 夜视器的引入
- 优化了人物模型
- 增加绑定键功能
Beta 2.1
这只升级版仅仅只在Beta 2后五天就发布了:只做了很少的BUG修正,
- 增加了cs_assault的新版本(与hlserver.exe兼容)
- 为hlserver.exe增加了科学家人物模型
- 修正了电视画面中碎片的错误(cs_alley将不再有电视画面)
- 修正了掉武器的错误
- 修改了AK-47的价格
在2.1 BETA版发布一个月后,BETA 3来到了。随着大量的改进及修正错误,CS正飞速发展。在这个版本中,最重要也是最有用的改进就是无线电系统的增加。现在玩家可以能够用一种比较贴近现实的方法进行通讯了-讲述的都是与反恐有关的术语。伴随而来的是刀具的增加,这在以前的游戏中并不存在。
这个版本中比较有趣的一点是增加了手雷冲击力。在这个早期的测试版中,手榴弹不仅使你眩目,也可以由于手雷碎片给你一定的伤害。下面就是升级内容列表:
- 增加了护甲和头盔的组合保护
- 极大地改进了人质走路的人工智能(AI)
- 在闪光弹中增加了发射碎片产生破坏力的作用
- 增加了新武器:P90自动步枪
- 增加了无线电系统
- 修改了记分板
- 修改了鸟枪
Beta 4.0
在取消了3.1beta和其他的“临时升级”等中间环节后,最令人好奇的BETA 4版于1999年11月5日发布。这是一个顺利而又重要的升级,也保留了大量的改变,改进,修正和升级。其中一项武器的增加,这项武器我想是现代玩家不能没有的常用装备:高爆手雷(HE)。但这也不是最重要的改变之处。
在这次测试版中对于CS最重要的改变就是增加了拆雷任务或者称之为"de"系统。现在在游戏关卡中一项新的任务产生了:没有了人质,代替的是T或CT团队对于C4的安放或拆解。这最终在Counter-Strike定型为最受喜爱的竞赛模式,我想这也是游戏为什么这么普及的原因吧。
下面是完整的改变列表:
- 增加了Sig P228手枪和Steyr Scount 来复枪。
- 增加了新的拆解C4爆炸物的游戏任务
- 增加了高爆(HE)手雷
- 修改了人质解救任务
- 修改了投票踢人系统
- 改变了救人质的金钱奖励值。
- 增加了 cs_station, de_nuke, de_dust, de_prodigy四个地图
- 全自动flashbang.wav回放。
- 在cs_ship, cs_siege, cs_tire 地图中增加了新的人质点
de_nuke
de_dust
de_prodigy
de_station
Beta 5.0
由于4.1版只简单地对服务器端作了很少的修正,我们省略了对他的介绍并移到下一个作了比较大修改的部分:beta 5,这个版本在1999年圣诞节前几天发布,这是一个与前面变化差不多的版本。Beta 5包含了大量的对原来系统的精简-这些变动改进了新出的解C4任务,并使之更符合现实,而且增加了可玩性。
新的武器、新地图增加了,同样新的人物模型也增加了,改进了像HUD的视觉效果和一些其他的游戏改变。我想说的是:当这些升级是一个小变化的集合时,由小及大,从而对于游戏整体是一个巨大的变化。
- 增加了Benelli XM 1014全自动步枪
- 新的人质模型和两个新的人物皮肤贴图
- 增加了一个新的CT人物模型(SAS)
- 增加了CS_BACK和de_train
- 新的HUD图标
- 在地图的HUD中增加了购买区域和炸弹目标区
- C4仅能植放在专门的炸弹安放区内
- CTS没有解雷钳拆弹需要10秒钟
- CTs用解雷钳拆弹只要5秒种
- 增加了一个指示拆弹的进度尺条
- 为Ts增加了指示安装炸弹的进度尺条
- 拆弹成功也意味着Counter Terrorists在本局中的胜利
- C4可以扔给其他的队友
- 新的无线电信息和无线电的键位集合
- 能够听到其他玩家装填子弹的声音。
Beta 6.0 to 6.6
在BETA5之后有一个BETA 5.2,只作了少量的改动,随之而来的是BETA 6中一系列的升级,我将把Beta 6.0 to 6.6中一系列的测试版汇总在一起进行说明。Beta 6.0最早是在2000年3月3日发布的,这是Counter-Strike发展中的一个新的里程碑。
在这个时期的改变又进一步消除了原游戏中存在的少量BUG,允许玩家有更多的游戏功能。在下面分门别类地列出了不同的改变类型及相关的具体内容。
武器系统的改变:
在6.0-6.6中只有不多的武器种类增加。
- 增加了MAC-10
- 增加了Steyr Aug
- 增加了烟雾弹
- 重新增强了夜视镜。
人物模型和地图改变:
- 增加了左手右手持枪的功能
- 增加了新的队友雷达跟踪定位
- 增加了新的土匪Arctic人物模型
- 增加了新的警察GIGN人物模型
- 增加了as_oilrig, as_riverside, cs_747,de_cbble.bsp, de_aztec.bsp, cs_italy地图
在Beta 6.0 和 6.6之间,对整个游戏都进行了大量的改进,新增的人物类型,改进了玩家的视觉感受并创造出新的大众化的地图。所有这些,使人们看到了CS美好的未来。
de_azte
de_italy
de_cbble
cs_747
Beta - 7.1
在众多的升级和改进之后,最后的BETA 7.1完全安装版在2000年9月13号发布了。我们看到了一个主要的变化就是在射击的准确性方面。在单发射击和扫射中弹后的移动速度的减缓对于双方的影响都进行改进,同样,瞄准镜的改进也使游戏双方更趋于平衡。
我们现在已经了解了CS是由谁开发的,他们为这个游戏作了什么,取得了那些成就。我们也讲到了Beta版本时期一些革命性的改变。现在,我们看到的完整版CS几乎是没有Bug的了,而在这样的情况下,也造成了它全球轰动的开始。
正式版
Version 1.0
在2000年9月11号提供给大众下载,虽然他们一开始对发行这个游戏的期望很高,但是很多玩家觉得他们加了很多不重要的细节,所以刚发行的时候并没有受到太多的回响。
VALVE他们新介绍了三把枪,但是玩家却认为这三把枪的实用性并不大,这三把分别是:
- Five Seven 手枪
- UMP.45
- SIG SG-550 狙击枪
Five Seven 手枪原本的好处是不管远近都有一定的准度,但是实际上却发现其实只有近距离时相当准确,但是远距离却比不上"USP"以及"Glock",并且它的伤害性也比"USP"以及"Glock"要来的低,价格却又偏高,所以成为了鲜少人使用的枪枝。
UMP.45 这一把枪是警察和歹徒端都可以购买的,是MP5以外的另外一个选择,可是他的价钱比MP5贵了200元,射速也比MP5要来的慢。虽然UMP.45的准度在中距离要比MP5要来的好,但是列在小型机关枪的购买选单里,应该是要以近距离的射击为主,所以也就成为一把几乎无人使用的枪枝。
SIG SG-550: 在游戏中的表现不彰...
SIG SG-550狙击枪是警察的专用武器,他的价钱太贵,虽然连射狙击枪让它听起来好象很棒,但是强大的后座力使得它的并无法拥有太大的用处,到后来也就渐渐乏人问津了。
Version 1.1
不像Beta版本的更新一样,这些正式版本都需要花比较多的时间去做更新动作。V1.1是在2001年3月10号所释出的,因为增加了第六人称(Spectator mode)的观看视角,所以此版本是一个让大家所期待的版本,同时这也影响了日后HLTV的发展。
观看模式进驻游戏...
另外一个受欢迎的改变是AWP击中了脚部位置并不会一枪就死亡,并且AWP不开镜就不会有准确度。详细更动内容如下:
- 增加观看模式
- 歹徒持有C4的人背后看起来会有一个背包
- 玩家的人物模块变成512*512的分辨率
- 歹徒的defuse kit(拆弹包)重新加入 (原文可能是笔误,应该是CT吧!!)
- 在空中射击的准确度再次下降
- 没有开狙击镜的时候将不会有准心出现
- 狙击枪射中脚的部位不会一枪致命
- 人物的模块有了游泳的姿势
- 右上角的人物死亡显示有了警察端以及歹徒端各自的颜色(CT是蓝色,TS是红色)
- 增加了字符串文件,也因此更改了武器名称(像是AK47变成CV47)
- 游戏结束时可以撷取游戏画面
- 新增地图 cs_thunder、de_rotterdam、de_inferno、de_dust2
- 更新了一些热门地图
Version 1.3
2001年9月19号,这是正式版至目前为止大家最为喜欢的版本,因为在这个版本达到了很多目标 ,并且拿掉了Bunny Hopping(连续跳跃)。虽然有的人不喜欢,但是大部分的人都乐于接受这个改变。
另外一个重大改变是增加了麦克风的系统。这个系统是很多玩家从Beta版就所期待增加的,这样可以快速的下达战略以及沟通,但在刚出现这个系统的时候麦克风通讯会吃掉相当多的网络资源。
麦克风系统让许多重要讯息更容易传达
此外,Version 1.3版本增加了敌人使用Radio(无线电通讯)我们也可以听的到的设定。作者本身认为这是一个相当好的构想,这也是CS中一个非常有创意性的设定。
这个版本也进一步的修改了更多的Bug,详细更动内容如下:
- 改善了玩家端与SERVER端射击位置信息不同步的Bug
- 改善了一些CONFIG的问题
- 解决了"screenshots"(画面撷取)第二张会盖掉第一张的Bug
- Buffer overflow 的行为修正
- "condump" "cmdlist" "cvarlist"只会写到我们的游戏资料夹里面
- 修正了第六人称视角的Bug
- 最重要的是修正了HIT BOX(命中区域)的问题
- 改善了夜视镜的Bug
- 修正了"slot10"的不正常运作
Version 1.4
在Version 1.4这个版本里有很巨大的进化,可是时间却很短暂,最主要是改善了模块的动作以及子弹射出后服务器端的判定 。有调整手枪在空中射击的准确性,还有手枪移动中射击的准确性,不过虽然可以边跳边射,但是却增加了一个跳跃后落地会延迟的设定 ,这个设定也成为许多玩家的恶梦。
第六人称也增加了可以使切换第一人称观看的视角同时此版本也改善了HLTV烟雾弹的问题还有角度选取问题跟一些显示上的问题
当然,在此版本中也修正了许多的Bug,详细更动内容如下:
- 烟雾弹问题的修正
- Radio command(无线电讯息)的改善
- 改善了AGP的重复武器显示
- 将跑步的声音改善的比较准确
- 在水中的动作会保持一样的速度(在此之前水中的动作会忽快忽慢)
- 改善了服务器端因为各种炸弹的使用而当机的问题
- 改善了弹夹中子弹数量的问题
- 修正了一个歹徒和警察模块对换的问题
最终的 Version 1.5
这是Steam出现之前的最后一个版本。1.5跟1.4的差别其实并没有很大,只是将一些细节问题的修正做的更为完善,这也是当初Beta版本所想要达到的目标 。
很多玩家都觉得此版本是最适合比赛的版本。因为很多玩家反对利用Steam,而这个问题一直到现在这都还倍受争议
Steam的推出让很多人怀疑以后是否会变成收费机制,但这一切都还不能确定...
"Steam &Version 1.6"
Steam是2003年9月开始和CS1.6同时推出,因为Steam的功能非常丰富,所以CS搭配着Steam的脚步,是让大家认为非常合逻辑的部份。不过全世界的玩家都对Steam有着相当的不满,因为觉得游戏被改变的太多,而且并没有重视玩家方面所发出的声音。
但是Steam并没有因为这样子就渐渐淡去,它还是一着持续的发展,直到现在越来越受到大众的接受...
Steam 的自动更新系统
虽然这个系统相当的方便,但是常常会有玩家再更新的时候发生当机的情形。不过Steam方面也有认真的在改善这些问题 ,使的这个系统越来越实用。
一开始Steam也有频宽不够的问题,因为这个自动更新系统会自动的选择最快速的服务器来提供给玩家更新档案 。这个问题一直到了Valve跟Steam联合起来寻求更多的外来赞助后,才慢慢的获得改善。
许多玩家都是在更新时遇到这种问题...更新到一半就不动了.....
好友系统
好友系统(Friends System)在CS1.6版的Steam系统里正式引荐给广大的玩家们认识,也因此让玩家们有了全新的交流方式。
这个系统增加了全新玩家方面的沟通。好友系统就跟MSN一样可以储存好友的名单,可以看到好友的状况是否上线或是忙碌之类的状态。可以看到好友们在全球网络上的哪一个服务器游戏,因此能够快速的与朋友获得联系,愉快的和朋友一起玩乐。
因此,许多的玩家都觉得这是一个相当不错的系统。
想与你的朋友聊天吗?
游戏列表 在Steam系统里新加入的游戏列表(Games List)。这个选单可以让玩家轻易的选择Half-Life里的各种模块 进行游戏,也可以更轻易的下载各种自己想要玩的模块,节省了玩家的许多时间。
此游戏列表在未来将会更加的简单、容易,并且加入许多的功能成为一个方便的游戏管理工具。
玩家只需在游戏图片上点一下即可下载到他们所想要的游戏,或是在激活游戏时轻易的下载更新它们。
hmm,今天你想要玩哪一款啊?
下面显示的是关于“自动升级”选项的图例:
服务器控制台
这也让玩家感到相当的方便,因为不需要激活游戏就可以看到服务器的状况 ,包括了服务器名称、玩家数量、线路状况。也可以加入自己最爱的服务器,还有LAN的服务器。
除了这些旧有的功能之外还包括了一个历史纪录 ,记录着你所曾经玩过的所有服务器。还有HLTV有独立的服务器列表,还可以利用此系统知道到朋友在哪个服务器游戏。完整功能如下:
- 历史纪录列表让玩家轻易知道曾去过的服务器
- 观看列表可单独的只列出HLTV服务器
- 朋友列表可陈列出朋友正在哪一个服务器
- 使用鼠标右键轻易的将喜爱的服务器加入最爱列表
Server Console 的众多功能让玩家方便许多
游戏的改变
尽管在玩家端有增加许多的功能以及一些相关改进,但在游戏中仍有许多的发展及改进的地方。Steam有改变CS里面的一些改变,详细更动内容如下:
- 可以随意的更改Steam的外观
- 有搜寻到的服务器会显示服务器的所在区域
- 不再需要WON的认证
- 增加了购买武器的简用名称
- Graphical以及HUD的陈列改变
- 改善了很多Bug像是"Smoke"还有"Flashbang"
- 增加了不透明的雷达
- 增加了新的武器还有装备
- 新的金钱模式
- C4时间对于Roundtime的影响
- 增加了很多网络参数的设定
- 增加了枪枝的准确性
- 准心大小的改变
职业玩家的影响
职业玩家影响了一些1.6的设定,如金钱系统。这个问题是由NoA战队的"Shaguar"提出来的 ,他写了一整篇文章给Steam,文章内容提到了之前的系统规则,使得电子竞技的比赛中节奏变得缓慢而且并不精采。 "...When 3D, and following their CPL performance pretty much every top notch European team (many US teams have still yet to see the importance of round camping as the offensive side, which I will expand on later) began camping out terrorists rounds, it started a trend that has turned Counter-Strike into a slow, less spectator friendly game. What makes camping out terrorist rounds so effective? The Counter-Terrorists get punished for it. They get practically half of what they would get if they were to win the round by defusal and/or killing all 5 Terrorists..."
Shaguar
译文:
“当3D,以及随后纷纷效仿的北欧顶尖战队们(很多美国战队至今仍然认为在T经济局camp是一种很无礼的行为,关于这些我在后面的文章中会提到)越来越频繁地在T经济局中camp(编者: 另一种说法是save out,专指在一局已经没有希望获胜的情况下躲起来)的同时,CS也正在逐渐变成一种越来越慢,越来越不利于观看的游戏。是什么让如此多的顶尖战队喜欢在T的经济局中camp?或者说,T经济局的camp为什么这么有效?——CS为它设计上的不合理而遭到惩罚。实际上,相比较击毙T的5名队员或者成功拆弹,CT如果在T进行camp的时候没有杀光对方全部5人,那么他们只得到了应该得到的奖励金的一半。 ”
随后,Valve改进了游戏中金钱制度使得CS变的比较像是快节奏的游戏。
"Counter-Strike: Source"
这个版本是大家所期望的使用全新的Half-Life 2 Source引擎。基本上CS: Source的玩法会和现在的1.6玩法差不多,只是使用了一个全新的绘图引擎来替代五年前的Half-Life旧引擎。
这个Source给了CS一个全新的面貌以及设计。以下是CS: Source的图片
改进后的绘图引擎
生动的地图对象及新的物理参数设定
Source带来新的光源贴图效果
让你耳目一新的Aztec
Source or Counter-Strike 2?
很多玩家都很期待着"Counter-Strike 2",然后很多人也搞不清楚"Counter-Strike 2"以及"CS: Source"的差别 ,也不清楚是否"CS: Source"就是"Counter-Strike"以后的发展版本。这个想法并不是完全正确的。
其实CS: S跟1.6是一模一样的,只是使用了全新的Source引擎去开发这个游戏,而"Counter-Strike 2"才是以后会出现的版本,并且依然会使用Source引擎,只是会有更多的变动。
CZ在未来也会推出Source版本,CS: S最大的目标就是测试Source的问题,这样才有办法推出接下来的"Counter-Strike 2"
向叠罗汉说再见???
虽然CS: S和1.6在大 体上都一样,只是改变了视觉上的外观,但是也改变了一个游戏的玩法,就是将叠罗汉拿掉了。这个更动有可能引起许多职业玩家的不满,因为职业玩家使用叠罗汉会有许多的好处 ,包括达到平常不能去的地方,拥有比较好的视野,叠人墙的战术。
Valve做了这个更动是为了达到更真实的游戏效果 ,不过这也可能破坏了游戏的独特性。这个改变,会让这个游戏的支持度降低,或只是纯粹的改变战术,这得要等游戏推出了才会知道了。
问题与解答
Counter-Strike:Source预计会在今年的八月十号释出Beta版(编者注:已经如期发布),但并不是所有的玩家都可以取得CS: S,必须是与Valve有合作关系或是有购买Condition Zero(一触击发)的Steam正规用户方能透过Steam下载到Counter-Strike:Source Beta版。
以下是Valve的Cliffe为大家所做的一些问题解答:
Counter-Strike:Source BETA1.0什么时候会推出?
今年暑假的后期
从哪里才可以取得Counter-Strike:Source BETA1.0?
一开始可以向VALVE报名取得测试员资格 ,之后才会提供给有CS: CZ的玩家下载
如果有申请测试员或是有CS:CZ,要怎么知道Counter-Strike:Source什么时候会推出?
只需要激活Steam的游戏选单就可以下载了
如果没有申请或是没有CS:CZ那还可以取得CS: S吗?
不行的
CS: S跟Half-Life一代有什么不同?
CS: S有CS的团队玩法以及高科技的游戏画面
CS: S最低计算机需求
1.2 GHz Processor
256MB RAM
DirectX 7 graphics card
Windows 2000/XP/ME/98
鼠标
键盘
CS: S建议计算机需求
2.4 GHz ProcessorB 512MB RAM
DirectX 9 graphics card
Windows 2000/XP
键盘
鼠标
6.0以下?你是说IE浏览器吗?
那就别用CSS和DIV了,用表格吧
5.0和5.5对DIV支持不好,会卡
如果只是为了6.0用CSS就很好了
觉得 首先要清楚每个浏览器不同之处 bug 之类的然后 还可以用一些 hack 来针对不同的浏览器 进行单独调整
IE 6 是最烦的 ie和 遨游 效果基本相同 ff 和 op 差不多
总之你慢慢来么 断点调试css代码
一下收集的一些资料 你看看
浏览器的不兼容,大家肯定都是深恶痛绝的,往往我们只是去做修补,却忘了更重要的事情,那就是追溯根源,避免类似的不兼容再次出现。在下不才,归纳几点html编码要素,望能指点各位:
1.文字本身的大小不兼容。同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff下实际占高17px,上留白1px,下留白3px,opera下就更不一样了。解决方案:给文字设定 line-height 。确保所有文字都有默认的 line-height 值。这点很重要,在高度上我们不能容忍1px 的差异。
2.ff下容器高度限定,即容器定义了height之后,容器边框的外形就确定了,不会被内容撑大,而ie下是会被内容撑大,高度限定失效。所以不要轻易给容器定义height。
3.还讨论内容撑破容器问题,横向上的。如果float 容器未定义宽度,ff下内容会尽可能撑开容器宽度,ie下则会优先考虑内容折行。故,内容可能撑破的浮动容器需要定义width。
小实验:有兴趣大家可以看看这段实验。在不同浏览器下分别测试以下各项代码。
a.<div style=”border:1px solid redheight:10px”></div>b.<div style=”border:1px solid redwidth:10px”></div>
c.<div style=”border:1px solid redfloat:left”></div>d.<div style=”border:1px solid redoverflow:hidden”></div>
上面的代码在不同浏览器中是不一样的,实验起源于对小height 值div 的运用,<div style=”height:10pxoverflow:hidden”></div>,小height 值要配合overflow:hidden一起使用。实验好玩而已,想说明的是,浏览器对容器的边界解释是大不相同的,容器内容的影响结果各不相同。
4.浮动的清除,ff下不清除浮动是不行的。
纠正大家一个误区,遇到不兼容就说ff烂是不对的,其实更多时候是ie的奇怪表现让我们无所适从。以下列出ie6的种种劣迹。
5.最被痛恨的,double-margin bug。ie6下给浮动容器定义margin-left 或者margin-right 实际效果是数值的2倍。解决方案,给浮动容器定义display:inline。
6.mirrormargin bug,当外层元素内有float元素时,外层元素如定义margin-top:14px,将自动生成margin-bottom:14px。padding也会出现类似问题,都是ie6下的特产,该类bug 出现的情况较为复杂,远不只这一种出现条件,还没系统整理。解决方案:外层元素设定border 或 设定float。
引申:ff 和ie 下对容器的margin-bottom,padding-bottom的解释有时不一致,似乎与之相关。
7.吞吃现象,限于篇幅,我就不展开了。还是ie6,上下两个div,上面的div设置背景,却发现下面没有设置背景的div 也有了背景,这就是吞吃现象。对应上面的背景吞吃现象,还有滚动下边框缺失的现象。解决方案:使用zoom:1。这个zoom好象是专门为解决ie6 bug而生的。
8.注释也能产生bug~~~“多出来的一只猪。”这是前人总结这个bug使用的文案,ie6的这个bug 下,大家会在页面看到猪字出现两遍,重复的内容量因注释的多少而变。解决方案:用“<!–[if !IE]>picRotate start <![endif]–>”方法写注释。
9.<li/>里加 float <div/>,这是一个典型的,棘手的兼容问题,希望引起大家正视 ,给li 不同的属性会有不同的解释效果,ff下的解释稍可理解,ie6下的解释会让你摸不着头脑,由于问题的复杂性,将另起一文专门讨论该问题。在《ul使用心得》一文里有相关成果,却没给出问题解决的过程。
10.使用了“float:leftdisplay:inline”的ul的奇怪表现。可以看出这句css是针对ie6下的double margin bug 而加上的display:inline,这也是我的css体系里的重要一环,在《ul使用心得》一文中有相关阐述。而这句css用在ul上会让你痛苦不堪。点到为止,这里不能多说哈。
11.img下的留白,大家看这段代码有啥问题:
<div>
<img src=”” mce_src=”” />
</div>
把div的border打开,你发现图片底部不是紧贴着容器底部的,是img后面的空白字符造成,要消除必须这样写
<div>
<img src=”” mce_src=”” /></div>
后面两个标签要紧挨着。ie7下这个bug 依然存在。解决方案:给img设定 display:block。
12.失去line-height。<div style=”line-height:20px”><img />文字</div>,很遗憾,在ie6下单行文字 line-height 效果消失了。。。,原因是<img />这个inline-block元素和inline元素写在一起了。解决方案:让img 和文字都 float起来。
引申:大家知道img 的align 有 text-top,middle,absmiddle啊什么的,你可以尝试去调整img 和文字让他们在ie和ff下能一致,你会发现怎么调都不会让你满意。索性让img 和文字都 float起来,用margin 调整。
13.链接的hover状态。a:hover img{width:300px} 我们想让鼠标hover时,链接里包含的图片宽度变化,可惜在ie6下无效,ie7、ff下有效。
14.非链接的hover状态。div:hover{} 这样的样式ie6是不认的,在ie7、ff下才有效果。
15.block化的a链接,其内套absolute层,absolute层内放置img,ie下,鼠标点击img不会有链接效果,ff、op下正常。
想不出来了,以后想到再加吧。上面的诸多问题如果你掌握了其中奥妙,90%的不兼容问题不需要另起css hack的。
16.无法彻底清除的float。如果让ul下的li具有了float属性,如何clear浮动的li呢?<ul><li class=”c”><></ul>或者 <ul><li><div>class=”c”></div><></ul>或者 <ul><li><><div>class=”c”></div></ul>或者 <ul><li><></ul><div>class=”c”></div>或者上述的组合?这个问题,我无法给出解答。下面有个例子与此相关
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<style type=text/css>
.c{clear:bothoverflow:hidden+overflow:visible}
.bd{border:1px solid red}
ul.ex{list-style:none}
ul.ex li{float:leftborder:1px solid green}
</style>
<ul class=ex>
<li>sfsdfsfdf<>
<li>sfsdfsfdf<>
</ul>
<div class=c></div>
<div class=bd style=margin-top:19px>sfsdfsfdf</div>
请在ie下 测试,仅仅将 margin-top:19px 改为margin-top:20px 你发现什么了?要素:doctype必须有,ie6、ie7下margin-top:19px还好好的,margin-top:20px 就出问题了,无法解释。。。大家还可以将 clear 层换不同的位置测试。
解决方案:给ul 属性zoom:1 (给li 加zoom:1 没用)
引申:clear层应该单独使用。也许你为了节省代码把clear属性直接放到下面的一个内容层,这样有问题,不仅仅是ff和op下失去margin效果,ie下某些margin值也会失效
<div style=”background:redfloat:left”>dd</div>
<div style=”clear:bothmargin-top:18pxbackground:green”>ff</div>
17.ie下overflow:hidden对其下的绝对层position:absolute或者相对层position:relative无效。解决方案:给overflow:hidden加position:relative或者position:absolute。另,ie6支持overflow-x或者overflow-y的特性,ie7、ff不支持。
18.ie6下严重的bug,float元素如没定义宽度,内部如有div定义了height或zoom:1,这个div就会占满一整行,即使你给了宽度。float元素如果作为布局用或复杂的容器,都要给个宽度的。
19.ie6下的bug,绝对定位的div下包含相对定位的div,如果给内层相对定位的div高度height具体值,内层相对层将具有100%的width值,外层绝对层将被撑大。解决方案给内层相对层float属性。
20.ie6下的bug,<head></head>内有<base target=”_blank”/>的情况下,position:relative层下的float层内文字无法选中。这个bug迫使我修公用样式库。
21.终于来了个ff的缺点。width:100%这个东西在ie里用很方便,会向上逐层搜索width值,忽视浮动层的影响,ff下搜索至浮动层结束,如此,只能给中间的所有浮动层加width:100%才行,累啊。opera这点倒学乖了跟了ie。