工程师必知必会盒模与型块状行内元素.docVIP

工程师必知必会盒模与型块状行内元素.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
工程师必知必会盒模与型块状行内元素

上海腾一研发部内部技术文档 文档标题 前端工程师必知必会.doc 分类标签 资料来源 网络 URL 修订历史 2010-01-18由zhy收录 /u217442-42FA-9EA1-B4641A663DA8.html 前端工程师对这些东西要“想都不用想”就知道么* 盒模型 外边距、内边距和边框之间的关系,IE 8中的盒模型有什么不同。? ?* 块级元素与行内元素 怎么用CSS控制它们、它们怎样影响周围的元素以及你觉得应该如何定义它们的样式 ? ? css 2.1标准: ? /TR/CSS21/visuren.html ? /TR/CSS21/visudet.html ? ? 中文详解: ? /blog/?p=138 ? 如果想熟练掌握DIV和CSS的布局方法,首先要对盒模型有足够的了解。每个HTML元素都可以看作一个装了东西的盒子,盒子里面的内容到盒子的边框之间的距离即填充(padding),盒子本身有边框(border),而盒子边框外和其他盒子之间,还有边界(margin),如图1所示。 ? 图1 盒模型图解 ? 填充、边框和边界都分为“上右下左”四个方向,既可以分别定义,也可以统一定义。 CSS内定义的宽(width)和高(height),指的是填充以内的内容范围,因此一个元素: 实际宽度 = 左边界 + 左边框 + 左填充 + 内容宽度(width) + 右填充 + 右边框 + 右边界 实际高度 = 上边界 + 上边框 + 上填充 + 内容高度(height) + 下填充 + 下边框 + 下边界 例如有CSS定义如下: ? Html代码? #menu?{?? background:?#9cf;?? margin:?20px;?? border:?10px?solid?#039;?? padding:?40px;?? width:?200px;?? }?? ? 则其实际宽度如图2所示。 ? 图2 元素总宽度的计算 而对于Windows IE 5.x及更前的版本,把这个盒模型的定义搞错了,它认为: 宽度(width)= 元素内容 + 填充 + 边框 这个确实很容易搞错,很多对于盒模型定义没有深入了解的人也同样容易犯这个错误。例如: ? Html代码? #menu?{?? width:?200px;?? padding:?5px;?? border:?1px?solid?#ccc;?? }?? ? 那么,在IE5.5中div实际内容的宽度将是200px-5px-1px-5px-1px=188px,而在Firefox、Opera及IE 6等浏览器内宽度则是200px。 注意:工作在怪癖模式下的IE 7-将使用IE 5的盒模型,所以注意给文档一个正确的DTD说明! 这正是很多新手发现自己定义的页面在不同的浏览器内看会发生错位的原因之一。 因此就需要采取一定的弥补措施,一般可以避免同时定义元素的宽度和填充、边框,而将一些定义放到元素的子元素内定义。 如果必须同时定义这几个值,也可以使用一些手段来校正这个错误,即俗称的css hack,其基本思想就是为没有错误的浏览器提供一个正确的宽度值,而对IE5.5等有问题的浏览器提供另一个值。 例如如下的写法: ? Html代码? #menu?{?? padding:?5px;?? width:110px;?? voice-family:?\}\;?? voice-family:?inherit;?? width:?100px;?? }?? ? 定义中第一个width:110px,是IE 5.5认为的元素的宽度,100px+5px+5px。 ? Html代码? voice-family:?\}\;?? voice-family:?inherit;?? ? 是CSS2.0中的语音属性,由于Windows IE5.5不完全支持CSS2.0,不识别此属性,因此跳到下一个选择符。但是其他浏览器(包括IE6)会继续解读下面的定义,由于css是“层叠”的,即对于同一个选择符的相同的属性,后面的定义会覆盖掉前面的定义,因此,对于其他的浏览器,#menu的宽度为最后的100px。 另一个常用的hack手法是使用!important(声明),声明加在CSS属性定义的后面,此条属性的级别将变成最高,即使后面有相同的定义也不会覆盖掉声明过的定义,不过IE不支持!important。 例如有如下css定义: ? Html代码? #box?{?? border:?1px?solid?#B51C8C;?? width:768px;?? }?? ? 而其修正方法如图3所示。 图3 针对IE修正CSS 对于支持!impor

文档评论(0)

3774384 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档