Javascript在IE和FireFox中的兼容问题
2009/05/19 18:27 ArthurXF
1.document.formName.item("itemName") 问题
说明:IE下,可以使用document.formName.item("itemName")或document.formName.elements["elementName"];Firefox下,只能使用document.formName.elements["elementName"].
解决方法:统一使用document.formName.elements["elementName"].
2.集合类对象问题
说明:IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[]获取集合类对象.
解决方法:统一使用[]获取集合类对象.
3.自定义属性问题
说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性.
解决方法:统一通过getAttribute()获取自定义属性.
4.eval("idName")问题
说明:IE下,,可以使用eval("idName")或getElementById("idName")来取得id为idName的HTML对象;Firefox下只能使用getElementById("idName")来取得id为idName的HTML对象.
解决方法:统一用getElementById("idName")来取得id为idName的HTML对象.
5.变量名与某HTML对象ID相同的问题
说明:IE下,HTML对象的ID可以作为document的下属对象变量名直接使用;Firefox下则不能.Firefox下,可以使用与HTML对象ID相同的变量名;IE下则不能。
解决方法:使用document.getElementById("idName")代替document.idName.最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var,以避免歧义.
7.input.type属性问题
说明:IE下input.type属性为只读;但是Firefox下input.type属性为读写.
9.event.x与event.y问题
说明:IE下,even对象有x,y属性,但是没有pageX,pageY属性;Firefox下,even对象有pageX,pageY属性,但是没有x,y属性.
解决方法:使用mX(mX = event.x ? event.x : event.pageX;)来代替IE下的event.x或者Firefox下的event.pageX.
10.event.srcElement问题
说明:IE下,event对象有srcElement属性,但是没有target属性;Firefox下,event对象有target属性,但是没有srcElement属性.
解决方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)来代替IE下的event.srcElement或者Firefox下的event.target.
13.frame问题
以下面的frame为例:
(1)访问frame对象:
IE:使用window.frameId或者window.frameName来访问这个frame对象.
Firefox:只能使用window.frameName来访问这个frame对象.
另外,在IE和Firefox中都可以使用window.document.getElementById("frameId")来访问这个frame对象.
(2)切换frame内容:
在IE和Firefox中都可以使用window.document.getElementById("testFrame").src = "xxx.html"或window.frameName.location = "xxx.html"来切换frame的内容.
如果需要将frame中的参数传回父窗口,可以在frme中使用parent来访问父窗口。例如:parent.document.form1.filename.value="Aqing";
14.body问题
Firefox的body在body标签没有被浏览器完全读入之前就存在;而IE的body则必须在body标签被浏览器完全读入之后才存在.
例如:
Firefox:
IE&Firefox:
15. 事件委托方法
IE:document.body.onload = inject; //Function inject()在这之前已被实现
Firefox:document.body.onload = inject();
有人说标准是:
document.body.onload=new Function('inject()');
16. firefox与IE(parentElement)的父元素的区别
IE:obj.parentElement
firefox:obj.parentNode
解决方法: 因为firefox与IE都支持DOM,因此使用obj.parentNode是不错选择.
17.innerText在IE中能正常工作,但是innerText在FireFox中却不行.
解决方法:
if(navigator.appName.indexOf("Explorer") > -1){
document.getElementById('element').innerText = "my text";
} else{
document.getElementById('element').textContent = "my text";
}
18. FireFox中类似 obj.style.height = imgObj.height 的语句无效
解决方法:
obj.style.height = imgObj.height + 'px';
19. ie,firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChile方法也不管用。
解决方法:
//向table追加一个空行:
var row = otable.insertRow(-1);
var cell = document.createElement("td");
cell.innerHTML = " ";
cell.className = "XXXX";
row.appendChild(cell);
20. padding 问题
padding 5px 4px 3px 1px FireFox无法解释简写,
必须改成 padding-top:5px; padding-right:4px; padding-bottom:3px; padding-left:1px;
21. 消除ul、ol等列表的缩进时
样式应写成:list-style:none;margin:0px;padding:0px;
其中margin属性对IE有效,padding属性对FireFox有效
22. CSS透明
IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。
FF:opacity:0.6。
23. CSS圆角
IE:不支持圆角。
FF: -moz-border-radius:4px,或者-moz-border-radius-topleft:4px;-moz-border- radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius- bottomright:4px;。
24. CSS双线凹凸边框
IE:border:2px outset;。
FF: -moz-border-top-colors: #d4d0c8 white;-moz-border-left-colors: #d4d0c8 white;-moz-border-right-colors:#404040 #808080;-moz-border-bottom-colors:#404040 #808080;
25.ie支持document.all 而firefox 不支持
改用下面三个tag的其中一个来代替document.all
getElementsByTagName("tagName") 可以得到得到所有标签元素的集合
getElementById("idName") 可以按id得到某一元素
getElementsByName("Name") 可以得到按name属性得到某一元素
26、firefox 中使用innerHTML 的方法
document.all.online.innerHTML; //这种方法在IE中可以使用,但不是标准方法
document.getElementById("online").innerHTML; //这样firefox就能使用innerHTML了
27、eval()与window.execScript()执行脚本
IE、firerox均支持eval(),firefox不支持window.execScript()
解决:统一使用eval()
28、对事件处理函数的重写
解决:(例):如对document的onclick()重写,统一使用document.onclick = function(){…}
说明:IE下,可以使用document.formName.item("itemName")或document.formName.elements["elementName"];Firefox下,只能使用document.formName.elements["elementName"].
解决方法:统一使用document.formName.elements["elementName"].
2.集合类对象问题
说明:IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[]获取集合类对象.
解决方法:统一使用[]获取集合类对象.
3.自定义属性问题
说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性.
解决方法:统一通过getAttribute()获取自定义属性.
4.eval("idName")问题
说明:IE下,,可以使用eval("idName")或getElementById("idName")来取得id为idName的HTML对象;Firefox下只能使用getElementById("idName")来取得id为idName的HTML对象.
解决方法:统一用getElementById("idName")来取得id为idName的HTML对象.
5.变量名与某HTML对象ID相同的问题
说明:IE下,HTML对象的ID可以作为document的下属对象变量名直接使用;Firefox下则不能.Firefox下,可以使用与HTML对象ID相同的变量名;IE下则不能。
解决方法:使用document.getElementById("idName")代替document.idName.最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var,以避免歧义.
7.input.type属性问题
说明:IE下input.type属性为只读;但是Firefox下input.type属性为读写.
9.event.x与event.y问题
说明:IE下,even对象有x,y属性,但是没有pageX,pageY属性;Firefox下,even对象有pageX,pageY属性,但是没有x,y属性.
解决方法:使用mX(mX = event.x ? event.x : event.pageX;)来代替IE下的event.x或者Firefox下的event.pageX.
10.event.srcElement问题
说明:IE下,event对象有srcElement属性,但是没有target属性;Firefox下,event对象有target属性,但是没有srcElement属性.
解决方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)来代替IE下的event.srcElement或者Firefox下的event.target.
13.frame问题
以下面的frame为例:
(1)访问frame对象:
IE:使用window.frameId或者window.frameName来访问这个frame对象.
Firefox:只能使用window.frameName来访问这个frame对象.
另外,在IE和Firefox中都可以使用window.document.getElementById("frameId")来访问这个frame对象.
(2)切换frame内容:
在IE和Firefox中都可以使用window.document.getElementById("testFrame").src = "xxx.html"或window.frameName.location = "xxx.html"来切换frame的内容.
如果需要将frame中的参数传回父窗口,可以在frme中使用parent来访问父窗口。例如:parent.document.form1.filename.value="Aqing";
14.body问题
Firefox的body在body标签没有被浏览器完全读入之前就存在;而IE的body则必须在body标签被浏览器完全读入之后才存在.
例如:
Firefox:
IE&Firefox:
15. 事件委托方法
IE:document.body.onload = inject; //Function inject()在这之前已被实现
Firefox:document.body.onload = inject();
有人说标准是:
document.body.onload=new Function('inject()');
16. firefox与IE(parentElement)的父元素的区别
IE:obj.parentElement
firefox:obj.parentNode
解决方法: 因为firefox与IE都支持DOM,因此使用obj.parentNode是不错选择.
17.innerText在IE中能正常工作,但是innerText在FireFox中却不行.
解决方法:
if(navigator.appName.indexOf("Explorer") > -1){
document.getElementById('element').innerText = "my text";
} else{
document.getElementById('element').textContent = "my text";
}
18. FireFox中类似 obj.style.height = imgObj.height 的语句无效
解决方法:
obj.style.height = imgObj.height + 'px';
19. ie,firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChile方法也不管用。
解决方法:
//向table追加一个空行:
var row = otable.insertRow(-1);
var cell = document.createElement("td");
cell.innerHTML = " ";
cell.className = "XXXX";
row.appendChild(cell);
20. padding 问题
padding 5px 4px 3px 1px FireFox无法解释简写,
必须改成 padding-top:5px; padding-right:4px; padding-bottom:3px; padding-left:1px;
21. 消除ul、ol等列表的缩进时
样式应写成:list-style:none;margin:0px;padding:0px;
其中margin属性对IE有效,padding属性对FireFox有效
22. CSS透明
IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。
FF:opacity:0.6。
23. CSS圆角
IE:不支持圆角。
FF: -moz-border-radius:4px,或者-moz-border-radius-topleft:4px;-moz-border- radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius- bottomright:4px;。
24. CSS双线凹凸边框
IE:border:2px outset;。
FF: -moz-border-top-colors: #d4d0c8 white;-moz-border-left-colors: #d4d0c8 white;-moz-border-right-colors:#404040 #808080;-moz-border-bottom-colors:#404040 #808080;
25.ie支持document.all 而firefox 不支持
改用下面三个tag的其中一个来代替document.all
getElementsByTagName("tagName") 可以得到得到所有标签元素的集合
getElementById("idName") 可以按id得到某一元素
getElementsByName("Name") 可以得到按name属性得到某一元素
26、firefox 中使用innerHTML 的方法
document.all.online.innerHTML; //这种方法在IE中可以使用,但不是标准方法
document.getElementById("online").innerHTML; //这样firefox就能使用innerHTML了
27、eval()与window.execScript()执行脚本
IE、firerox均支持eval(),firefox不支持window.execScript()
解决:统一使用eval()
28、对事件处理函数的重写
解决:(例):如对document的onclick()重写,统一使用document.onclick = function(){…}
用盐美容4大招,亮肤明目除痘控油去黑頭
2009/05/12 17:30 ArthurXF
有时美容可以是件不昂贵的事情,它的成本可能降到最低,就比如我们平时吃的普通细盐,它就是上前很流行的一种美容妙方,下面我推荐几种盐美容方法:
一、盐亮肤
洗脸后,把一小勺细盐放在手掌心加水3-5滴,再用手指仔细将盐和水搅拌均匀,然后沾着盐水从额部自上而下的搽抹,边搽边做环开按摩。几分钟后,待脸上的盐水干透呈白粉时状时,用温水将脸洗净,涂上保湿乳液或继续正常的护肤步骤。持续进行,每天早晚洗脸后各一次。
这样有很好的清洁和去污效果,对于毛孔中积聚的油脂、粉刺、甚至是“黑头”都可以去掉。不过按摩时应该避开眼部周围的皮肤,而且敏感性皮肤谨慎些。千万不要把盐水弄到眼睛里去,以免造成眼结膜损伤。
二、盐明目
做完正常的清洁后,打半盆温清水,撒上少量盐让它融化,将脸部浸泡在淡盐水中,在水中睁开眼睛,上下左右活动眼球达到用淡水洗眼的效果。
不出二个星期,你会发现你的眼睛变得明亮且炯炯有神起来,这才是名副其实的“电眼美女”。
三、盐战痘
其实对于背部长有青春痘的“顽疾”,盐一样也有用。入浴后让身体充分温热,待毛孔张开后多抹些盐在后背,各个角落都要抹到。用浴刷按摩1分钟,不要太用力,只要让皮肤及刷子间的盐分移动即可,然后用海绵蘸上淡盐水,贴在背上10分钟,用清水洗干净。
洗几次再看看,背上的痘痘慢慢地被攻克了。
四、盐控油
对于分泌油脂旺盛的T字部位,即使到了秋天,很多油性皮肤的“产油量”还是源源不断的。对于局部区域,可以用细盐抹在事先润湿的皮肤上,轻轻按摩后休息3分钟,然后在鼻翼两侧毛孔张开的部位用中指指腹由下向上做挤压式按摩。
“油量”真的会随着你的坚持而减产哦。
一、盐亮肤
洗脸后,把一小勺细盐放在手掌心加水3-5滴,再用手指仔细将盐和水搅拌均匀,然后沾着盐水从额部自上而下的搽抹,边搽边做环开按摩。几分钟后,待脸上的盐水干透呈白粉时状时,用温水将脸洗净,涂上保湿乳液或继续正常的护肤步骤。持续进行,每天早晚洗脸后各一次。
这样有很好的清洁和去污效果,对于毛孔中积聚的油脂、粉刺、甚至是“黑头”都可以去掉。不过按摩时应该避开眼部周围的皮肤,而且敏感性皮肤谨慎些。千万不要把盐水弄到眼睛里去,以免造成眼结膜损伤。
二、盐明目
做完正常的清洁后,打半盆温清水,撒上少量盐让它融化,将脸部浸泡在淡盐水中,在水中睁开眼睛,上下左右活动眼球达到用淡水洗眼的效果。
不出二个星期,你会发现你的眼睛变得明亮且炯炯有神起来,这才是名副其实的“电眼美女”。
三、盐战痘
其实对于背部长有青春痘的“顽疾”,盐一样也有用。入浴后让身体充分温热,待毛孔张开后多抹些盐在后背,各个角落都要抹到。用浴刷按摩1分钟,不要太用力,只要让皮肤及刷子间的盐分移动即可,然后用海绵蘸上淡盐水,贴在背上10分钟,用清水洗干净。
洗几次再看看,背上的痘痘慢慢地被攻克了。
四、盐控油
对于分泌油脂旺盛的T字部位,即使到了秋天,很多油性皮肤的“产油量”还是源源不断的。对于局部区域,可以用细盐抹在事先润湿的皮肤上,轻轻按摩后休息3分钟,然后在鼻翼两侧毛孔张开的部位用中指指腹由下向上做挤压式按摩。
“油量”真的会随着你的坚持而减产哦。
要女孩电话号码的最佳方法
2009/05/12 17:26 ArthurXF
男:聊吗 女:不
男:为什么 女:忙
男:忙什么 女:玩
男:玩什么 女:游戏
男:什么游戏 女:好玩的
男:什么好玩的 女:烦
男:烦就跟我聊 女:滚
男:地不干净 女:靠
男:给你肩膀 女:找死啊
男:“死”在字典961页 女:晕
男:我有止晕药 女:我服了
男:服了药就不晕了 女:大哥
男:认你这个妹妹了 女:拜托
男:拜可以,不用脱 女:我要疯了
男:我打120 女:你神仙
男:不要迷信 女:还让人活吗
男:有了我你会活得更精彩 女:5
男:三五香烟虽好,但有害健康
女:去死吧
男:我在网吧,不是死吧
女:求你放过我
男:好,告诉我手机号我就不说了
女:要号干嘛
男:改给你发短信
男:为什么 女:忙
男:忙什么 女:玩
男:玩什么 女:游戏
男:什么游戏 女:好玩的
男:什么好玩的 女:烦
男:烦就跟我聊 女:滚
男:地不干净 女:靠
男:给你肩膀 女:找死啊
男:“死”在字典961页 女:晕
男:我有止晕药 女:我服了
男:服了药就不晕了 女:大哥
男:认你这个妹妹了 女:拜托
男:拜可以,不用脱 女:我要疯了
男:我打120 女:你神仙
男:不要迷信 女:还让人活吗
男:有了我你会活得更精彩 女:5
男:三五香烟虽好,但有害健康
女:去死吧
男:我在网吧,不是死吧
女:求你放过我
男:好,告诉我手机号我就不说了
女:要号干嘛
男:改给你发短信
FreeBSD、OpenBSD、NetBSD的详细介绍
2009/05/12 13:06 ArthurXF
如果提到Web或者阅读一本计算机杂志就不可能不涉及到Linux,它是由Linus Torvalds和其他人共同开发的伟大的操作系统。但是尽管Linux占据了最重要的位置,ISP和系统管理员们也经常选择BSD里的一种作为操作系统,BSD是一类建立在代码共享基础上的操作系统,在过去的20多年里,美国的顶尖学院都一直在对它进行研究。
BSD究竟是什么呢?如果你在寻找一个非Windows操作系统,又为什么应该考虑使用它们呢? 学术渊源BSD是Berkeley Software Distribution的缩写,这是一个由加州大学伯克利分校开发的软件集合。最初BSD只是作为AT&T的Unix早期版本的附加软件包出现,后来它就逐渐地发展为一个完整的,高度复杂的具有Unix风格的操作系统——它第一个集成了网络功能。
通过追求完美主义的学术机构的努力以及经过挑剔的几代学生的测试,BSD也许是最健壮、最安全和最值得信赖的操作系统。对以BSD为基础的操作系统来说运行几年无需维护或重启是很平常的事情。由于BSD是在代码公开的环境下发展起来的,因而它对所有的顾客(包括那些想把它植入商业产品的软件开发商)都是完全免费的。来自BSD的网络代码几乎是所有现代操作系统的中心部分,包括Linux、OS/2以及Windows 95以来几乎每个Windows版本。
秘密武器
如果BSD真是那么优秀,为什么他们没有像Linux那样成为市场的领先者呢?这其中最重要的原因就是文化。许多Linux开发商把他们自己看作软件革命者。但是学术团体(BSD真正扎根的地方)的成员们更注重于结果而不是让这个产品出名。BSD在系统管理员和ISP用户中也有一批忠实的追随者,但是这些人通常更喜欢把他们的BSD作为秘密武器,而不是到处宣扬他们正在使用这种操作系统。
结果,没有多少人认识到BSD的各个版本或为像Yahoo!一样的大型网站的基础,而且还对IBM InterJet和Maxtor的网络存储服务器这些高可靠性的嵌入式系统提供了有利的支持。BSD的一个变种NetBSD被认为是全世界最轻便的操作系统,它可以在不同的CPU(种类超过64个)和几百种不同品牌和型号的计算机上运行。
现在,共有5个流行的BSD操作系统,其中的三个——FreeBSD,NetBSD 和OpenBSD——得到了BSD的授权,操作系统和源代码都是免费的,任何人都可以用于任何目的。其余的两个BSD/OS和Mac OS X是商业产品,它们以开放的BSD代码为基础,具有特殊的优势和与众不同的技术。在本文中,我们将讨论免费的版本。至于对BSD/OS和Mac OS X以及建立在Linux General Public License基础上的BSD授权的优势的讨论,参见我们站点上的其它文章“More about BSD”。
BSD家族大观 --1.FreeBSD
FreeBSD是从386BSD的基础上发展起来的,而386BSD是由伯克利的计算机科学家Bill Jolitz 开发的针对Intel 80386芯片的一种BSD版本。因为这个原因,FreeBSD在32位体系的x86机器上总是运行得最好。在免费的BSD中,它与PC兼容机配合得最好,而且支持的PC兼容的外部设备的数量也最多。尽管FreeBSD也可以运行在Alpha处理器上,向其他体系结构的移植也在进行当中,但是你更应该把它看作是主要针对x86系统的操作系统。
在免费的BSD中,FreeBSD是名声最大的,它具有最强大的开发队伍,收到的反馈信件也最多,还拥有最多数量的用户。它还可能是所有免费操作系统中最容易安装的——尤其当你想通过Internet而不是购买光盘进行安装的话。
Linux的发行商经常把他们的拷贝弄得很难通过Internet安装。毕竟,他们的业务决定于光盘的销售。而FreeBSD就不是这样了:它的所有要求就是两张软盘(在FreeBSD Web站点上用工具和映射文件很容易创建)和速度适宜的网络连接。从第一张软盘开始启动,然后插入第二张。安装程序会帮助你选择配置选项,从网上下载整个系统并把所有的东西正确地安装好。而那些想要光盘的人也可以从Wind River Systems的FreeBSD Mall 那儿或者从Cheap Bytes那里得到。你也可以在FreeBSD Web站点上用一个ISO映射文件制作光盘。
FreeBSD另外一个强大之处在于它有广泛的应用软件支持——超过5800种免费程序都可以供你立即下载并添加在FreeBSD的系统上。事实上,所有你需要用来建立一个工作站或者一个商业服务器的软件都已经随FreeBSD安装或者可以随后自行添加进系统里。
此外,像OpenBSD和NetBSD一样,FreeBSD事实上能够运行所有针对Linux、SCO Unix或者Intel版本的Solaris 的程序。同Linux一样,FreeBSD使用X Window系统以及所有针对那个协议开发的的桌面和图形用户界面,包括KDE、GNOME和为这两者所写的程序。
最后,FreeBSD对新用户来说具有最多的参考资料。FreeBSD Handbook 为新的顾客提供了极好的使用说明。许多出版公司都推出了针对初级和高级用户所写的指导书。
简而言之,FreeBSD对Linux来说是一个强大的挑战者,它也许能提供出众的稳定性,安装的简易性和方便。
BSD家族大观 --2.OpenBSD
OpenBSD是另外一个免费BSD的派生物,被称为世界上最安全的操作系统。OpenBSD的主页(www. openbsd.org)报告说OpenBSD“在默认安装情况下四年内没有一个小的安全漏洞”,它的意思是说(其实任何人都知道)在过去的四年内发布的OpenBSD版本没有一个被来自Internet的袭击攻破。(当然,你也可以使得任何操作系统——包括OpenBSD——变得易受攻击,如果你没有正确配置服务器或者运行那些导致入侵者进入的不安全软件。) OpenBSD也完全集成了密码安全软件以保证数据安全。
OpenBSD并不是集成Unix组件功能最多的代表,它也不是运行最快的。但是在这些领域里,它也不是太差的。这个操作系统很小,但效率很高,它能在老的只有16MB内存的486机器上运行得很好——要知道这样一个硬件配置是不能运行Windows 2000的。其它的操作系统都没有任何一个享有OpenBSD在安全问题上创造的高可靠性纪录。一些远程根目录问题一般每个月都会发生在Microsoft的操作系统上,比如说Windows 2000。而最近发行的许多Linux已经成为Ramen蠕虫一类病毒的攻击对象。
像FreeBSD和NetBSD一样,OpenBSD也有很多应用软件支持,它包含了许多免费软件包的定制版本。它的软件库没有FreeBSD中的那么大,但是包含了大多数你想给Unix服务器或者工作站安装的工具。OpenBSD的x86版本也能够运行针对FreeBSD、Linux和Solaris创建的程序。OpenBSD支持10种计算机体系结构——比FreeBSD还多,但是没有NetBSD多。从OpenBSD自身或者Cheap Bytes那儿就可以得到OpenBSD光盘。然而,你却得不到ISO映射文件,因为开发组更愿意通过出售CD的方式作为对他们努力的支持。你可以通过网络来安装操作系统,只不过安装者的用户界面没有FreeBSD那么美观而已。 在这三种免费BSD中,OpenBSD的开发成员最少并且对Unix新手
来说是最难学的。但是如果你确实需要一个牢靠的网络防火墙或者服务器的话,OpenBSD正是合适的选择。
BSD家族大观 --3. NetBSD
NetBSD
NetBSD也是免费BSD的一种,它是基于BSD的最轻便的操作系统。目前能够在46种之多的不同硬件构架上运行(他们正在努力使之能够适应更多的构架),从原始的基于68K的Macintosh或者Amiga一直到AMD还没有发表的x86-64 Hammer结构,NetBSD都能够很好地运行。
这种便携性使得NetBSD成为嵌入式系统(在其它设备中运行的,看不见的计算机)的最佳选择。因为编写从一个平台到另一个平台的代码最容易暴露缺陷(否则的话是不会引人注意的),而来自NetBSD的代码却是少有的健壮;OpenBSD(最初是针对NetBSD对象设计的)和FreeBSD在过去都曾借鉴过它。NetBSD也是许多独立类型硬件的操作系统的选择,包括老的Sun工作站。
像FreeBSD和OpenBSD一样,NetBSD有一个巨大的应用软件库(比FreeBSD少而比OpenBSD多),并且能够运行针对Linux和其它版本Unix编译的商业程序。从Wasabi Systems,Cheap Bytes和其它一些NetBSD Web站点列出来的资源那儿我们可以得到NetBSD光盘。你可以下载ISO光盘映射文件,也可以通过FTP进行安装。
BSD究竟是什么呢?如果你在寻找一个非Windows操作系统,又为什么应该考虑使用它们呢? 学术渊源BSD是Berkeley Software Distribution的缩写,这是一个由加州大学伯克利分校开发的软件集合。最初BSD只是作为AT&T的Unix早期版本的附加软件包出现,后来它就逐渐地发展为一个完整的,高度复杂的具有Unix风格的操作系统——它第一个集成了网络功能。
通过追求完美主义的学术机构的努力以及经过挑剔的几代学生的测试,BSD也许是最健壮、最安全和最值得信赖的操作系统。对以BSD为基础的操作系统来说运行几年无需维护或重启是很平常的事情。由于BSD是在代码公开的环境下发展起来的,因而它对所有的顾客(包括那些想把它植入商业产品的软件开发商)都是完全免费的。来自BSD的网络代码几乎是所有现代操作系统的中心部分,包括Linux、OS/2以及Windows 95以来几乎每个Windows版本。
秘密武器
如果BSD真是那么优秀,为什么他们没有像Linux那样成为市场的领先者呢?这其中最重要的原因就是文化。许多Linux开发商把他们自己看作软件革命者。但是学术团体(BSD真正扎根的地方)的成员们更注重于结果而不是让这个产品出名。BSD在系统管理员和ISP用户中也有一批忠实的追随者,但是这些人通常更喜欢把他们的BSD作为秘密武器,而不是到处宣扬他们正在使用这种操作系统。
结果,没有多少人认识到BSD的各个版本或为像Yahoo!一样的大型网站的基础,而且还对IBM InterJet和Maxtor的网络存储服务器这些高可靠性的嵌入式系统提供了有利的支持。BSD的一个变种NetBSD被认为是全世界最轻便的操作系统,它可以在不同的CPU(种类超过64个)和几百种不同品牌和型号的计算机上运行。
现在,共有5个流行的BSD操作系统,其中的三个——FreeBSD,NetBSD 和OpenBSD——得到了BSD的授权,操作系统和源代码都是免费的,任何人都可以用于任何目的。其余的两个BSD/OS和Mac OS X是商业产品,它们以开放的BSD代码为基础,具有特殊的优势和与众不同的技术。在本文中,我们将讨论免费的版本。至于对BSD/OS和Mac OS X以及建立在Linux General Public License基础上的BSD授权的优势的讨论,参见我们站点上的其它文章“More about BSD”。
BSD家族大观 --1.FreeBSD
FreeBSD是从386BSD的基础上发展起来的,而386BSD是由伯克利的计算机科学家Bill Jolitz 开发的针对Intel 80386芯片的一种BSD版本。因为这个原因,FreeBSD在32位体系的x86机器上总是运行得最好。在免费的BSD中,它与PC兼容机配合得最好,而且支持的PC兼容的外部设备的数量也最多。尽管FreeBSD也可以运行在Alpha处理器上,向其他体系结构的移植也在进行当中,但是你更应该把它看作是主要针对x86系统的操作系统。
在免费的BSD中,FreeBSD是名声最大的,它具有最强大的开发队伍,收到的反馈信件也最多,还拥有最多数量的用户。它还可能是所有免费操作系统中最容易安装的——尤其当你想通过Internet而不是购买光盘进行安装的话。
Linux的发行商经常把他们的拷贝弄得很难通过Internet安装。毕竟,他们的业务决定于光盘的销售。而FreeBSD就不是这样了:它的所有要求就是两张软盘(在FreeBSD Web站点上用工具和映射文件很容易创建)和速度适宜的网络连接。从第一张软盘开始启动,然后插入第二张。安装程序会帮助你选择配置选项,从网上下载整个系统并把所有的东西正确地安装好。而那些想要光盘的人也可以从Wind River Systems的FreeBSD Mall 那儿或者从Cheap Bytes那里得到。你也可以在FreeBSD Web站点上用一个ISO映射文件制作光盘。
FreeBSD另外一个强大之处在于它有广泛的应用软件支持——超过5800种免费程序都可以供你立即下载并添加在FreeBSD的系统上。事实上,所有你需要用来建立一个工作站或者一个商业服务器的软件都已经随FreeBSD安装或者可以随后自行添加进系统里。
此外,像OpenBSD和NetBSD一样,FreeBSD事实上能够运行所有针对Linux、SCO Unix或者Intel版本的Solaris 的程序。同Linux一样,FreeBSD使用X Window系统以及所有针对那个协议开发的的桌面和图形用户界面,包括KDE、GNOME和为这两者所写的程序。
最后,FreeBSD对新用户来说具有最多的参考资料。FreeBSD Handbook 为新的顾客提供了极好的使用说明。许多出版公司都推出了针对初级和高级用户所写的指导书。
简而言之,FreeBSD对Linux来说是一个强大的挑战者,它也许能提供出众的稳定性,安装的简易性和方便。
BSD家族大观 --2.OpenBSD
OpenBSD是另外一个免费BSD的派生物,被称为世界上最安全的操作系统。OpenBSD的主页(www. openbsd.org)报告说OpenBSD“在默认安装情况下四年内没有一个小的安全漏洞”,它的意思是说(其实任何人都知道)在过去的四年内发布的OpenBSD版本没有一个被来自Internet的袭击攻破。(当然,你也可以使得任何操作系统——包括OpenBSD——变得易受攻击,如果你没有正确配置服务器或者运行那些导致入侵者进入的不安全软件。) OpenBSD也完全集成了密码安全软件以保证数据安全。
OpenBSD并不是集成Unix组件功能最多的代表,它也不是运行最快的。但是在这些领域里,它也不是太差的。这个操作系统很小,但效率很高,它能在老的只有16MB内存的486机器上运行得很好——要知道这样一个硬件配置是不能运行Windows 2000的。其它的操作系统都没有任何一个享有OpenBSD在安全问题上创造的高可靠性纪录。一些远程根目录问题一般每个月都会发生在Microsoft的操作系统上,比如说Windows 2000。而最近发行的许多Linux已经成为Ramen蠕虫一类病毒的攻击对象。
像FreeBSD和NetBSD一样,OpenBSD也有很多应用软件支持,它包含了许多免费软件包的定制版本。它的软件库没有FreeBSD中的那么大,但是包含了大多数你想给Unix服务器或者工作站安装的工具。OpenBSD的x86版本也能够运行针对FreeBSD、Linux和Solaris创建的程序。OpenBSD支持10种计算机体系结构——比FreeBSD还多,但是没有NetBSD多。从OpenBSD自身或者Cheap Bytes那儿就可以得到OpenBSD光盘。然而,你却得不到ISO映射文件,因为开发组更愿意通过出售CD的方式作为对他们努力的支持。你可以通过网络来安装操作系统,只不过安装者的用户界面没有FreeBSD那么美观而已。 在这三种免费BSD中,OpenBSD的开发成员最少并且对Unix新手
来说是最难学的。但是如果你确实需要一个牢靠的网络防火墙或者服务器的话,OpenBSD正是合适的选择。
BSD家族大观 --3. NetBSD
NetBSD
NetBSD也是免费BSD的一种,它是基于BSD的最轻便的操作系统。目前能够在46种之多的不同硬件构架上运行(他们正在努力使之能够适应更多的构架),从原始的基于68K的Macintosh或者Amiga一直到AMD还没有发表的x86-64 Hammer结构,NetBSD都能够很好地运行。
这种便携性使得NetBSD成为嵌入式系统(在其它设备中运行的,看不见的计算机)的最佳选择。因为编写从一个平台到另一个平台的代码最容易暴露缺陷(否则的话是不会引人注意的),而来自NetBSD的代码却是少有的健壮;OpenBSD(最初是针对NetBSD对象设计的)和FreeBSD在过去都曾借鉴过它。NetBSD也是许多独立类型硬件的操作系统的选择,包括老的Sun工作站。
像FreeBSD和OpenBSD一样,NetBSD有一个巨大的应用软件库(比FreeBSD少而比OpenBSD多),并且能够运行针对Linux和其它版本Unix编译的商业程序。从Wasabi Systems,Cheap Bytes和其它一些NetBSD Web站点列出来的资源那儿我们可以得到NetBSD光盘。你可以下载ISO光盘映射文件,也可以通过FTP进行安装。
CSS中position的详细解释
2009/05/10 01:07 ArthurXF
很多朋友问过我absolute与relative怎么区分,怎么用?我们都知道absolute是绝对定位,relative是相对定位,但是这个绝对与相对是什么意思呢?绝对是什么地方的绝对,相对又是相对于什么地方而言的呢?那他们又有什么样的特性,可以做出什么样的效果呢?关于两者之间又有什么样的技巧呢?下面我们就来一一解读。
Absolute,CSS中的写法是:position:absolute; 他的意思是绝对定位,他是参照浏览器的左上角,配合TOP、RIGHT、BOTTOM、LEFT(下面简称TRBL)进行定位,在没有设定TRBL,默认依据父级的做标原始点为原始点。如果设定TRBL并且父级没有设定position属性,那么当前的absolute则以浏览器左上角为原始点进行定位,位置将由TRBL决定。
一般来讲,网页居中的话用Absolute就容易出错,因为网页一直是随着分辨率的大小自动适应的,而Absolute则会以浏览器的左上角为原始点,不会应为分辨率的变化而变化位置。很多人出错就在于这点上出错。而网页居左其特性与Relative很相似,但是还是有本质的区别的。
Relative,CSS中的写法是:position:relative; 他的意思是绝对相对定位,他是参照父级的原始点为原始点,无父级则以BODY的原始点为原始点,配合TRBL进行定位,当父级内有padding等CSS属性时,当前级的原始点则参照父级内容区的原始点进行定位。
有时我们还需要依靠z-index来设定容器的上下关系,数值越大越在最上面,数值范围是自然数。当然有一点要注意,父子关系是无法用z-index来设定上下关系的,一定是子级在上父级在下。
二 详解定位与定位应用 http://blog.sina.com.cn/u/4bcf4a5e010008o0
css 绝对定位 相对定位
定位一直是WEB标准应用中的难点,如果理不清楚定位那么可能应实现的效果实现不了,实现了的效果可能会走样。如果理清了定位的原理,那定位会让网页实现的更加完美。
定位的定义:
在CSS中关于定位的内容是:
position:relative | absolute | static | fixed
static(静态) 没有特别的设定,遵循基本的定位规定,不能通过z-index进行层次分级。
relative(相对定位) 对象不可层叠、不脱离文档流,参考自身静态位置通过 top,bottom,left,right 定位,并且可以通过z-index进行层次分级。
absolute(绝对定位) 脱离文档流,通过 top,bottom,left,right 定位。选取其最近一个最有定位设置的父级对象进行绝对定位,如果对象的父级没有设置定位属性,absolute元素将以body坐标原点进行定位,可以通过z-index进行层次分级。
fixed(固定定位) 这里所固定的参照对像是可视窗口而并非是body或是父级元素。可通过z-index进行层次分级。
注:
CSS中定位的层叠分级:z-index: auto | namber;
auto 遵从其父对象的定位
namber 无单位的整数值。可为负数
定位的原理:
1.可以位移的元素 (相对定位)
在本文流中,任何一个元素都被文本流所限制了自身的位置,但是通过CSS我们依然使得这些元素可以改变自己的位置,我们可以通过float来让元素浮动,也可以通过margin来让元素产生位置移动。但事实上那并非是真实的位移,因为,那只是通过加大margin值来实现的障眼法。而真正意义上的位移是通过top,right,bottom,left(下称TRBL,TRBL可以折分使用。)针对一个相对定位的元素所产生的。我们看下面的图:
我们看图中是一个相对定位的元素
#first {
width:200px;
height: 50px;
margin:25px;
border:25px solid #333;
padding:25px;
position:relative;
top: 50px;
left: 50px;
}
而下方是一块默认定位的黑色区块
#second {
width:400px;
height:75px;
margin:0;
border:0;
padding:0;
backgroud-color:#333;
}
我们看到这个处在文本流的区块被上面的相对定位挡住了一部分,这说明:“当元素被设置相对定位或是绝对定位后,将自动产生层叠,他们的层叠级别自然的高于文本流”。除非设置其z-index值为负值。并且我们发现当相对定位元素进行位移后,表现内容已经脱离了文本流,只是在本文流中还为原来的相对对定位留下了原有的总宽与总高(内容的高度或是宽度加上 margin\border\padding的数值)。这说明在相对定位中,虽然表现区脱离了原来的文本流,但是在文本流中还还有此相对定位的老窩。这点要特别注意,因为在实际应用中如果相对定位的位移数值过大,那么原有的区域就会形成一块空白。
并且我们注意,定位元素的坐标点是在margin值的左上边缘点,即图中的B点。那么所有的位移的计算将以这个点为基础进行元素的推动。
2.可以在任意一个位置的元素(绝对定位)
如上所述:相对定位只可以在文本流中进行位置的上下左右的移动,同样存在一定的局限性,虽然他的表现区脱离了文本流,但是在文本流却依然为其保留了一席之地,这就好比一个打工的人他到了外地,但是在老家依然有一个专属于他的位置,这个位置不随他的移动而改变。但是这样很明显就会空出一块空白来,如果希望文本流抛弃这个部分就需要用到绝对定位。绝对定位不光脱离了文本流,而且在文本流中也不会给这个绝对定位元素留下专属空位。这就好比是一个工厂里的职位,如果有一个工人走了自然会要有别的工人来填充这个位置。而移动出去的部分自然也就成为了自由体。绝对定位将可以通过TRBL来设置元素,使之处在任何一个位置。在父层position属性为默认值时,TRBL的坐标原点以body的坐标原点为起始。看下图:
上图可知,文本流中的内容会顶替绝对定位无素的位置,一点都不会客气。而绝对定位元素自然的层叠于文本流之上。而在单一的绝对定位中,定位元素将会跑到网页的左上角,因为那里是他们的被绝对定位后的坐标原点。
3.被关联的绝对定位
上面说的是单一的绝对定位,而在实际的应用中我们常常会需要用到一种特别的形式。即希望定位元素要有绝对定位的特性,但是又希望绝对定位的坐标原点可以固定在网页中的某一个点,当这个点被移动时绝对位定元素能保证相对于这个原坐标的相对位置。也就是说需要这个绝对定位要跟着网页移动,而并且是因定在网页的某一个固定位置。通常当网页是居中形式的时候这种效果就会显得特别的重要。要实现这种效果基本方式就是为这个绝对定位的父级设置为相对定位或是绝对定位。那么绝对定位的坐标就会以父级为坐标起始点。
虽然是如此,但是这个坐标原点却并不是父级的坐标原点,这是一个很奇怪的坐标位置。我们看一下模型图示:
我们看到,这个图中父级为黑灰色区块,子级为青色区块。父级是相对定位,子级是绝对定位。子级设置了顶部位移50个像素,左倾位移50个像素。那么我们看,子级的坐标原点并不是从父级的坐标原点位移50个像素,而是从父级块的padding左上边缘点为坐标起始点(即A 点)。而父级这里如果要产生位置移动,或是浏览器窗口大小有所变动都不会影响到这个绝对定位元素与父级的相对定位元素之间的位置关系。这个子级也不用调整数值。
这是一种很特别并且也是非常实用的应用方式。如果你之前对于定位的控制并不自如的话,相信看完对这里对定位的解释一定可以把定位使用得随心所欲。
4.总在视线里的元素 (固定定位)
position:fixed; 他的含义就是:固定定位。这个固定与绝对定位很像,唯一不同的是绝对定位是被固定在网页中的某一个位置,而固定定位则是固定在浏览器的视框位置。