Css权威指南(4th,第四版中文翻译)-8.Padding,Borders,Outlines,Margins

html-css025

Css权威指南(4th,第四版中文翻译)-8.Padding,Borders,Outlines,Margins,第1张

在上一章节,我们讨论了元素显示的基本特点。而在这一章,我们将看到css属性是如果改变元素显示外观的,这包括了padding,border,margin。

众所周知,所有的document元素都会生成一个长方形的box来布局,称为元素box,而且这个box是具有排他性的,同一个区域是不允许有多个box交叠的。这就是前端最熟悉的盒模型:

一般来说,这里说的宽度和高度指的都是上面图中inner edge的宽和高。而这两个属性最重要的一点就是它们不作用于inline的不可替代元素。举例来说,

如果你给链接设置了宽高,那么浏览器就会忽略这些声明:

在盒模型中,从里到外的第2层就是padding:

该属性接受任何的长度值,包括百分比。例如:

从上图中我们发现,padding也是在背景的覆盖范围的。

默认来说,元素是没有padding的。但一般情况下我们还是希望有padding的,不然border有时候看起来就离内容太近了:

另外padding是由方向的设置顺序的,来看下:

而且每个方向上,你所用的长度单位都可以是不一样的,举个列子:

有时候你会碰到相同的padding数值,例如

这可以简化为:

这是怎么实现的呢?其实在CSS内部定义了一套规则:

换句话说,如果只给了三个值,那么第四个left就会拷贝right的值。如果只给定2个值,那么第三个拷贝第一个,第4个拷贝第二个。如果只给了一个值,那么所有值都从它身上拷贝。

这个属于大家非常熟悉的部分了:

百分比的计算核心在于标准的确定,在padding中,其标准就是父元素的内容区域的宽度。举个例子:

设置百分比的padding存在一个问题,就是当父元素未设置宽度,而且随着浏览器会变化宽度的情况,那么这个padding的宽度也会跟着一起变动。

如果对一个inline元素施加padding是不会改变元素的高度的,例如:

这是因为对于不可见的背景情况下,padding是被设置为透明的,所以上面的声明不会改变行高。但如果设置了背景,情况就不一样了:

上面我们看到了处理padding top和bottom的情况,但是left和right的padding有点不同。如果对inline元素设置了left和right的padding是有效果的:

那如果inline元素跨行了会怎么样呢?

很自然的,left作用于开头,而right作用于结尾。

我们还是拿图片来举例,试着为图片添加padding:

不管可替换元素是block的还是inline的,这一padding都会加上,如下图所示:

在padding外面一层的为border,默认来说,background的颜色的边界就是在border这层。而每个border都有三部分组成:宽度,厚度和样式。对于宽度来说,默认值为medium,一般来说是2px。但有没有发现平常我们很少注意到,每个元素的border宽度已经设置好了?那是因为border的样式默认设置为none,所以我们压根看不到。最后来说说border默认的颜色,就是它的前景色(foreground color)。

另外刚说了背景区域到border位置,但是到border的内边界还是外边界没说。其实按照CSS的标准定义,这个需要扩展到外边界,因为有些border是dotted的。

border的样式是最重要的,因为你不设置,它就压根不出来。

CSS中定义了10中不同的样式,包括默认的none,列举如下:

其中最难搞得就是double,border样式为两行,而其中的空白的宽度就是border-width的宽度。而且CSS标准中并没有规定两条线的粗细的标准,都依赖浏览器去实现。

下面来看看另外需要颜色的border类型:inset,outset,groove,ridge

默认来说,border的颜色是基于元素的颜色。但是颜色的变化又得完全依赖浏览器去实现,来看看不同的实现:

在border-style属性中是允许同时定义多种border的:

这样设置的结果是什么呢?那就是top border为solid,right border为dashed, bottom border为dotted ,left border为solid。就像之前定义的padding一样。

来看个具体的例子:

如果想要设置单侧的样式,可以使用下列的一系列属性:

来看个具体的例子,设置h1三边包围:

上面需要注意的是,针对第二种方案,必须将border-left-style样式放在后面,不然就会被后者替换。

设置完style后,接下来就需要设置宽度width:

对应的单侧的设置为:

总共有4种方式来设置border的宽度,可以是像4px这样的数值,也可以是另外3个关键词(thin,medium,thick)。但要注意这三个关键词没有对应具体的数值,按照CSS标准,只要层层加厚就可以,依赖于浏览器实现。

我们假定一个段落p有个背景色和border style

border的width默认为medium,我们将其修改下:

来玩个极限的,将宽度设置为50px:

当然也可以设置单侧的宽度:

想要去掉border非常简单:

哪怕设置了宽度,如果style被设置为了none,那么border也不会显示,那这是为什么呢?这是因为如果将style设置为none,那么CSS就会将其视为是不存在的,然后自动将其宽度设置为0,无论你自己定义了什么。就像一个杯子已经空了,那么再来描述他是半满的是没有任何意义的。

这一点为什么重要呢,因为很多人容易忘记来声明一个border的样式。例如:

来看个颜色的示例:

当然也可以为不同的side设置不同的颜色:

如果没有设置颜色,那么就会获取当前元素的前景色:

当然也可以设置单侧的border颜色:

就像我们上面提到的,如果border没有style,那么久没有宽度。那如果碰到需要设置宽度但是border又不可见的情况怎么办?答案是将颜色设置为transparent。例如:

试想下这种情况,如果要针对某一边添加widith,style和color。如果单独设置的话其实还是蛮麻烦的:

但如果可以简化的话,那就方便很多了:

针对每个side属性的简化顺序为:

完全可以按照上面的定义来设置更复杂的border设置:

而且这些值得顺序也是不用担心的,下面的规则和上面的是一样的:

另外值得注意的是,在简化版中避免重复的类型值,比如两个width等:

这会导致浏览器直接忽略这条规则。

现在我们回到border属性本身:

来看看怎么用的吧:

这个会自动应用到每个方向上:

inline元素之前已经讲了很多了,现在主要简单讲几个需要注意的点。

首先就是不论border设置的width多厚,inline元素的line height都不会改变:

top和bottom的border是不可以的,但是left和right都是可以的:

而对于可替换元素来说,border是会影响行高的:

为了支持圆角的边框,border引入了border-radius属性来设置:

如果想要实现边角的圆角过渡,可以如下设置:

如果给定的是一个百分比值,那么结果很可能就是一个椭圆,因为长宽的基准值不一样:

另外,跟其他元素一样,border-radius也可以设置多个值,位置从左上沿顺时针到底部左侧。

而参数个数为3个的时候也是一样的,第4个参考第2个:

而在上图中重点到不是边角,而在于内容区域的右下角也发生了圆滑过渡,这是因为内容区域的背景和padding的背景不同所致,我们将在后面一章中详细讨论。

border-radius在原理上修改的是border和background的渲染,而不是盒子模型本身,来具体看下:

刚刚我们看到了设置单个值得情况,那如果设置2个值会怎么样呢?如果我们想要在水平方向设置3英寸,而在垂直高度设置1英寸。我们不能直接这样写:

因为这样我们会将左上,右下对角线一个宽度,而右上和左下对角线有一个宽度。而是应该使用:

而这相当于下面的表达式:

下面是一个简单的例子:

接下来来个更复杂的:

不同的颜色和样式在角的位置的渲染效果是不同的:

上面第一个是简单的圆角,第二个在厚度上出现了变化。第三个颜色和厚度是一样的,但是角的曲线从solid变成了double。而且样式间的过渡被阻断了。第四个我们把厚度和样式做了改变。第5第6个开始出现颜色的变化,但是都是直接的改变而没有渐变。而第七种情况则是厚度相同,颜色发生渐变,但是可以看到,只有外侧发生了变化,而内侧还是直角,示例如下:

值得注意的是,这次是不同在水平和垂直方向加/的,来看下:

上面两个是一样的。

如果你想要使用一张图片来作为border,那么可以使用border-image-source:

让我们使用一张单个圆点的图片作为border背景:

这里需要注意几个地方,如果没有定义border:25px solid按照之前的说法,没有style,border其实默认是不显示的。另外就是border-width其实就是后面border图片的宽度。

那令人奇怪的是,为什么图片只出现在角落里,边上为什么没有,而这就需要用到下面这个属性了:

slice也是接收4个值,完全遵从top,right,bottom, right的CSS默认赋值流程,而且数值也是基于百分比的值。

我们就以3 x 3 的网格图为例来看下效果:

注意到中间的一块空了,这是因为css中自动把中间的内容设置为empty,具体会在后面讲解原理。

slice属性的不同百分比对应不同的边缘裁切效果:

这就是我们为什么选取3 x 3网格图的原因,可以清晰的看到裁剪后的边框效果。除了上面的百分比,我们也可以使用数字,一般对于栅格图来说就是像素值,来看个例子:

回到之前的中心空白问题,这其实可以通过fill来填充回来:

而且从效果上来说会覆盖到其他的背景元素之上,因此可以作为背景的替代。

同时之前我们看到的宽度都是相同的,而其实可以为border的4个方向设置不同的宽度,然后border-image会自动匹配到对应宽度:

如果想要自己来设置border图片的宽度,可以使用border-image-width:

border-image-width其实和border-image-slice差不多,而不同的是前者就是border box本身。为了更好理解这个意思,我们假定宽度设置为1em:

其示意图如下:

边框都是1em宽,那么如果来填充呢,这里涉及多个属性,由border-image-slice生成的图片要经过border-image-repeat的处理,然后显示在border-image-width定义的盒子里面。

反恐精英:网络流传CS1.7图片 病毒迅速传播IRC

CS的发展从Beta版本一直衍变到了目前流行的CS1.6和CS:Source,Valve公司一直没有表明是否会有CS1.6的替代版本,人们俗称的CS1.7的出现。然而最近网络上却爆出了了CS1.7的图片,不过最后证实这是好事之人发布在网上的病毒,目前该病毒已经在北美地区流传开来,预计将会造成不小的灾难。

最近登陆mIRC的网友们要注意了,在登陆上IRC频道后会发现某些“CS1.7图片曝光”的链接,千万不要一时好奇而点击改链接,否则将会遭受病毒袭击。这是最近irc里传播的新病毒,当你连接查看CS1.7的图片时他会自动PM(发送短消息)你,这些文件会下载随后感染你的机器并且将继续PM其他irc用户,不过关于此病毒的危害性还不是很清楚。北美目前有不少玩家已经感染上此类病毒,对于mIRC并不普及的中国应该算比较庆幸,如果你不幸感染上了病毒,那么请删除C:windowstemp.mrc这个文件。

应该不会再出1.7了,因为现在CS起源逐渐的变为主流,虽然玩家还不多,但是将来的发展趋势将会是CS起源。Col和3D将要转战CS起源,以后在比赛中将不会出现Col和3D了,也不会有他们的CS1.6的DEMO了。

现在在中国的情况是玩家最多的是CS1.5,然后是CS1.6,起源就更少了!由于起源对电脑的配置要求比较高,这也影响玩家的数目,许多人都望而却步!Valve公司也加强反盗版的力度,致使起源的中国玩家也很少玩!

在一篇文章中(CS的发展史,网上很多)提到

很多玩家都很期待着"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"

依据上面说的,CS1.6的升级版本将是CS2.0,而不是CS1.7,如果有CS1.7那么图画质量方面和1.6相同,也就是说游戏的引擎还是原来的,那1.7与1.6相比改变的将是什么呢!正因为以后CS将用全新的Source引擎去开发,所以才把以后发展的版本命名为2.0!

另外上面这段话中说“其实CS:S跟1.6是一模一样的”,这句话我觉得不敢苟同,CSS的弹道方面和1.6有点区别的,这是我看视频发现的,具体不是很清楚!

综上所述,CS1.6引擎的CS将会在1.6终结,而取而代之的是全新的Source引擎的CS。

===============================================================

简介cs1.7

1:修改了1.6里有时候能把盾牌用刀扎个洞,然后伸出手枪的bug

2:可以装死,但是你装的时候,枪也会掉,就象真的被干掉了一样

3:还可以挪动尸体,如果旁边没有足够的掩体,不妨找几具尸体垒起来,但是千万注意,不要搬到装死的了

4:长时间蹲走或者长时间不动,将会触发放屁事件,P声奇大

5:不要在AZ地图上争议雷会不会打死人了,1.7里面,我们发誓不会再把雷劈到你能跑到的任何地方

6:经过反复论证,再反复论证,从否定到否定之否定,决定增加女队员形象,她购买主枪多了一个选项:医疗包,医疗对象可以是本方队员,也可以是敌方队员(汗...)

7:发明了CS里可以有闪光弹的Tom,已经被CS开发小组开除!增加墨镜道具

8:谁说只有匪徒才能搞破坏?CT也可以买到象C4威力那么大的超级炸弹,可以在地图任意地方安置,爆炸时间由电脑随机选择,(也能拆除的哦)

9:增加新的NPC----蚊子,6条腿将被涂成6种不同的颜色,以供CS的超级玩家练枪所用

10:加大裤兜,只要你钱够,一次可以买到最多10个闪光,8个高爆手雷,8个烟雾

11:被打死过后兜里没用完的雷会掉出来,并且能被路过的人拾取

12:我靠,这将是CS的革命性的改动:开发成功了100万人的地图!~!!!!!

最新装备解密:

1、头盔(确实能防弹的) 建议价格:500元

建议用户:所有CS的战士们

CS打到现在遇到对手第一反应就是瞄头,久而久之感觉无论爆掉对方还是被爆掉都觉得太快了,游戏变的越来越短了,紧张和刺激的感觉也越来越少了。若是人少时游戏结束的太快,而人多时候被爆掉的话可要苦等很久,况且有时爆头的运气成份大于技术的成份也挺不公平的。所以若是有了头盔的话,挂的不会太快后,无论挨打还是打人都有更多的时间去体会游戏带来的刺激,去享受开枪射击和逃命的乐趣,这样一来无形中就沿长了游戏的过程,耐玩性和紧张,刺激的时间。总之是非常非常的必要的东西! (想一想。子弹打到头上时真的会“当,当!”的响,而不是马上就挂了该有多好呀:) 2、地雷

\建议价格:800元 建议用户:记性好的人 谁都见过一群无耻的家伙们争抢着去凌辱一群菜鸟,看看鸟儿们多么的可怜而又无奈,假如若真的有地雷的话,鸟儿们大可买来后埋到一些必经之地,看看你们谁还嚣张,不仅大大的延缓对方的进攻速度,还能给鸟儿们多一些的时间和机会。另外阻击手不妨也把地雷埋在阻击位前一些,作用和效果我想大家都知道:)当然你自己一定要记住你埋过地雷的地方!

3、刺刀 建议价格:默认 建议用户:爱好近身战的人

出于武器均衡的考虑设计时象M4A1的瞄准镜,榴弹发射器等都被取消了,但是象AK上的刺刀可是在基本不过的装备也被CS小组给贪污了!难道当近身肉博这么刺激惊险的时刻,大家被迫都得象兔子袋鼠般乱蹦乱跳的才叫均衡,真实?别说换小刀,打一宿除了我有时因为怀念DF里用刀的感觉,偶尔捅死几个以为几乎看不到用刀的战例(CS里的小刀更象是跑步的工具,这点真的很失败!)。想一想什么叫刺刀见红的血战?我是多么的渴望能有冲上去和敌人用刺刀拼个你死我活的感觉呀,而不是滑稽的小丑般的表演! 4、望远镜 建议价格:200元

建议用户:眼神差的人 其实我觉得CS没有望远镜倒是很奇怪的(难道就是为了突出瞄准镜的存在吗?),当然看雷达也行,但这可也是最基本的装备呀!打的久了有没有人扫一眼就知道了,但从QUACK,DF到IGM里都有的东西可这里没有就是觉得缺了些什么。若看到很远处有个人影闪过时,难道非要打两枪后才能证明是不是自己的人吗?敌人顺着枪声就兜到后面了多耽误事儿呀!

还有正在看望远镜的时候突然镜里蹦出一个大脑袋来,或被人在背后捅了一刀不也很刺激的吗!^0^

建议价格:200元

建议用户:CAMPER和菜鸟们

无论是烈日炎炎还是阴冷潮湿的地方,执着的CAMPER们都是一声不响的默默的蹲在哪里,而一蹲就是好几个小时呀,真的很让人同情,同志们你们辛苦了,若是有个小板凳该有多好呀,这个要求不算过分(用法双击CTRL——坐!)。还有看着菜鸟们一遇到高的地方就绕道走真无奈,若是狡猾的土匪把雷包埋到高一点的地方,看着他们真的很努力的跳呀跳呀可就是跳不到,多可怜的孩子呀,此时若能突然从屁股后面拽出一个小板凳的话该有多好呀:)

另外,当你遇到拐角时你的直觉告诉你可能有人正拿枪等在里面时,要么你扔颗闪光弹再冲,要么你一下跳出去和他硬拼,但此时你若有个小板凳的话,你可以用枪口挑着小板凳慢慢的把它探出去…………

6、阔音器

建议价格:300元 建议用户:话多的人

和对讲机是两回事儿,这东西能发出很大的声音,战斗的时候只要你有精力尽可能的不停地向对方宣传我方的“位置”,“打法”,政策法规什么的,不仅干扰对方的思路还能掩饰脚步声。特别当你孤身一人身负重伤但还有N个敌人的时候,你大可躲在角落里后向他们宣传:“你们已经被包围了,赶快放下武器,双手报头走出来,我保证不会伤害你们的!”(CS怎么就没有投降呢???) 7、兴奋剂

作者: 221.8.50.* 2007-6-14 01:20 回复此发言

--------------------------------------------------------------------------------

39 回复:简介cs1.7

建议价格:100元

建议用户:冲锋队长们 玩过星际的朋友都知道,当用T的小兵冲锋的时候最好先打上一针!所以若是冲锋前我们也能先打上一针的话,嘿嘿,无论速度和火力都会大不一样,就算逃跑也能跑的快一些,又不必担心有人要验你的血样,尿样什么的,怕什么,我们都是不怕死的勇士呀,GOGOGO……

(CS政府严禁沿街贩卖此物!) 8、太阳镜

建议价格:200元

建议用户:运气差的人

谁都会一不小心被闪光白到,但若是运气很差,总是能看到双方的闪光在眼前爆炸,那么你真的该考虑买上一个了。戴上它后就在也不怕总被别人闪到了,而且你也一定会感觉自己很神气,冲锋的时候速度当然会更快些,当然若还是有不同的颜色和款式的话就更好了:)

9、指南针

建议价格:100元

建议用户:CS里的MM们

女人天生的方向感差,你也别指望她们能变好,(要不然TOMB里的劳拉怎么就有一个呢?),而CS里的MM本来就少的可怜,所以若是有了指南针的话,说不定还能争取到多一些的CSMM呢,假如外形再设计好看一些我想MM们肯定会爱不释手的。当然若你老兄也分不太清东西南北的话不防也买上一个,可是看的时候千万别被大家发现了:) 10、玫瑰花

建议价格:500元

建议用户:感情丰富的人 假如战斗的时候你发现身边遇到了一位PLMM我想一束漂亮的玫瑰花定会打动MM的芳心的,她也定会还你一个香吻……

而后麻,一个:“FLOWWER ME!”无论天涯海角她都会紧紧的跟着你的,(MM的方向感差,她们巴不得有个人给她带路呢!)想想冲锋的时候还有个PLMM跟在后面会是什么感觉呀:)到时候游戏泡妞两不误,多美呀…………

对了,还要有支笔你可以顺便留给她你的电话,信箱,QQ或IP地址什么的,但最重要的是要她在你的背后签个名,倒不是真的想要她的手迹,若是下局她死活跟着一个和你的衣服一样的人跑了的话,你一定会被气疯了的! 在一声GO GO GO之后。只见CS的匪或警们。胸口挂着太阳镜。望远望镜,还有扩音器。背上背着长枪(匪儿们有时候还得有人加一个炸药包),小板凳。地雷。腰上挂着手雷。闪光弹,烟雾弹。手枪,兴奋剂。刺刀。左手拿着指南针,右手拿着玫瑰花。头上扣上一口小铁锅。就这么展开了他们的死亡游戏。

附:还有,CS里的那几个弱智的家伙如果叫做人质的话,那么绑票的第一步就应该是谈判呀!假如匪方要的赎金警方能承受的话,双方大可不必拼的你死我活的,本来麻,动手前就该好好的谈一谈,也许双方真的存在不少的误会呢,反正到头来骗的只是CS政府呀!(****用政府的钱来赎人质,保了命,土匪又得到了钱,何乐而不为呢:)。到时候CS的高手们又会多了一样有用的技能——口才!