CSS网页制作技巧教程:margin在IE中的表现

文章简介:margin用法小结.



margin的位移方向是指margin数值为正值时候的情形,如果是负值则位移方向相反。

如上图所示:黄色子元素盒的margin-top,margin-left为负值时,如-10px,则黄色子元素盒向上(向左)移动,越过相邻元素10px;黄色子元素盒的margin-right,margin-bottom为负值时,如-10px,黄色子元素盒不动,它右边(下边)的相邻元素和左移(上移)10px,垂直外边距合并问题垂直外边距合并问题常见于第一个子元素的margin-top会顶开父元素与父元素相邻元素的间距原因:一个盒子如果没有上补白(padding-top)和上边框(border-top),那么这个盒子的上边距会和其内部文档流中的第一个子元素的上边距重叠。父元素的第一个子元素的上边距margin-top如果碰不到有效的border或者padding.就会不断一层一层的找自己“领导”(父元素,祖先元素)的麻烦。只要给领导设置个有效的 border或者padding就可以有效的管制这个目无领导的margin防止它越级用Margin还是用Padding何时应当使用margin:
1、需要在border外侧添加空白时。
2、空白处不需要背景(色)时。
3、上下相连的两个盒子之间的空白,需要相互抵消时。如15px + 20px的margin,将得到20px的空白。何时应当时用padding:
1、需要在border内测添加空白时。
2、空白处需要背景(色)时。
3、上下相连的两个盒子之间的空白,希望等于两者之和时。如15px + 20px的padding,将得到35px的空白。小结:margin是用来隔开元素与元素的间距;padding是用来隔开元素与内容的间隔。margin用于布局分开元素使元素与元素互不相干;padding用于元素与内容之间的间隔,让内容(文字)与(包裹)元素之间有一段“呼吸距离”。

常见的浏览器下margin出现的bug
IE6中双边距Bug:
发生场合:当给父元素内第一个浮动元素设置margin-left(元素float:left)或margin-right(元素float:right)时margin加倍。
解决方法:是给浮动元素加上display:inline;CSS属性;或者用padding-left代替margin-left。
原理分析:块级对象默认的display属性值是block,当设置了浮动的同时,还设置了它的外边距就会出现这种情况。也许你会问:“为什么之后的对象和第一个对象之间就不存在双倍边距的Bug”?因为浮动都有其相对应的对象,只有相对于其父对象的浮动对象才会出现这样的问题。第一个对象是相对父对象的,而之后对象是相对第一个对象的,所以之后对象在设置后不会出现问题。为什么display:inline可以解决这个双边距bug,首先是inline元素或inline-block元素是不存在双边距问题的。然后,float:left等浮动属性可以让inline元素haslayout,会让inline元素表现得跟inline-block元素的特性一样,支持高宽,垂直margin和padding等,所以div class的所有样式可以用在这个display inline的元素上。
IE6中浮动元素3px间隔Bug:
发生场合:发生在一个元素浮动,然后一个不浮动的元素自然上浮与之靠近会出现的3px的bug。
解决方法:右边元素也一起浮动;或者为右边元素添加IE6 Hack _margin-left:-3px;从而消除3px间距。
原理分析:IE6浏览器缺陷Bug。
IE6/7负margin隐藏Bug:
发生场合:当给一个有hasLayout的父元素内的非hasLayout元素设置负margin时,超出父元素部分不可见。
解决方法:去掉父元素的hasLayout;或者赋hasLayout给子元素,并添加position:relative;
原理分析:IE6/7独有的hasLayout产生问题。
IE6/7下ul/ol标记消失bug:
发生场合:当ul/ol触发了haslayout并且是在ul/ol上写margin-left,前面默认的ul/ol标记会消失。
解决方法:给li设置margin-left,而不是给ul/ol设置margin-left。
原理分析:IE6/7浏览器Bug
IE6/7下margin与absolute元素重叠bug:
发生场合:双栏自适应布局中,左侧元素absolute绝对定位,右侧的margin撑开距离定位。在IE6/7下左侧应用了absolute属性的块级元素与右边的自适应的文字内容重叠。
解决方法:把左侧块级元素更改为内联元素,比如把div更换为span。
原理分析:这是由于IE6/IE7浏览器将inline水平标签元素和block水平的标签元素没有加以区分一视同仁渲染了。属于IE6/7浏览器渲染Bug。
IE6/7/8下auto margin居中bug:
发生场合:给block元素设置margin auto无法居中
解决方法:出现这种bug的原因通常是没有Doctype,然后触发了ie的quirks mode,加上Doctype声明就可以了。在《打败IE的葵花宝典》里给出的方法是给block元素添加一个width能够解决,但根据本人亲测,加with此种方法是无效的,如果没有Doctype即使给元素添加width也无法让block元素居中。
原理分析:缺少Doctype声明。
IE8下input[button submit] 设置margin:auto无法居中
发生场合:ie8下,如果给像button这样的标签(如button input[type="button"] input[type="submit"])设置{ display: block; margin:0 auto; }如果不设置宽度的话无法居中。
解决方法:可以给为input加上宽度
原理分析:IE8浏览器Bug。
IE8百分比padding垂直margin bug:
发生场合:当父元素设置了百分比的padding,子元素有垂直的margin的时候,就好像父元素被设置了margin一样。
解决方法:给父元素加一个overflow:hidden/auto。
原理分析:IE8浏览器Bug。

时间: 2024-10-28 05:10:06

CSS网页制作技巧教程:margin在IE中的表现的相关文章

CSS网页制作技巧:IE浏览器下li的默认高度问题

文章简介:CSS网页制作技巧:IE浏览器下li的默认高度问题. 昨天,在家打开IE7浏览器看"视频导航网"的时候,发现居然有排版错误. 用F12开发者工具看了下,发现 li 的默认高度既然不统一? 用工具看了下,发现火狐高度解析统一为33px,而IE7解析高度根据字的不一样,默认解析的高度为30px,纯数字的解析高度为31px;中英文组合的解析高度为32px; 解决方法一:给LI设置高度后,IE7正常了,但IE6问题依然存在.原来,LI里面还嵌套着A标签,给A也设置一个高度后问题解决.

CSS网页制作技巧:兼容主流浏览器的背景颜色透明

文章简介:CSS网页制作技巧:兼容主流浏览器的背景颜色透明. 以前都是用jquery来写背景透明,方法简单,但是有缺点,脚本没加载完时,背景颜色是不透明的.如果换成在css里写好的话,效果就很好了..transparent_class { filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opacity: 0.5; } 上面的几个属性分别是: opacity: 0.5; 这是最重要的,因为它是CSS标准.该属性支持f

CSS网页制作技巧:隐藏网页元素的方法汇总

文章简介:CSS网页制作技巧:隐藏网页元素的方法汇总. 在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间:有的可以响应点击,有的不能响应点击.下面一个个列出,选一个适合你的 { display: none; /* 不占据空间,无法点击 */ }{ visibility: hidden; /* 占据空间,无法点击 */ }{ position: absolute; top: -999em; /* 不占据空间,无法点击 */ }{ position: rela

CSS网页制作技巧:DIV+CSS网页布局常犯错误汇总

文章简介:随着CSS网页布局越来越普及,国内大部分网站已经采用CSS网页布局的制作方法.在应用DIV+CSS编码时很容易犯一些错误,这里列举一些常见的错误,帮助新手朋友更好的学习与进步. 随着CSS网页布局越来越普及,国内大部分网站已经采用CSS网页布局的制作方法.在应用DIV+CSS编码时很容易犯一些错误,这里列举一些常见的错误,帮助新手朋友更好的学习与进步. 一.检查HTML元素是否有拼写错误 是否忘记结束标记 即使是老手也经常会弄错div的嵌套关系.可以用dreamweaver的验证功能检

css网页制作技巧:margin负值和bug的解决

文章简介:最近做的项目中经常会用到margin的负值,这里就总结一下关于margin负值的5种使用及相关bug的解决. 最近做的项目中经常会用到margin的负值,这里就总结一下关于margin负值的5种使用 及相关bug的解决. 1. 在流动性布局中的应用如WordPress的两栏式不固定布局就是使用margin负值来实现的定位,属于左右 margin负值在流动性布局中的应用. <div style="width:200px;float:left;border-right:4px sol

CSS网页制作技巧之控制网页背景

css|技巧|控制|网页|网页背景 [简 介] 我想大家常常为一些比较合适于自己的网页背景的图片而发愁吧,这个我想也是有的,因为这些图片不是太大就是太小,或者太乱,那么有没有办法让图片能合自己的主页的胃口呢?答案是肯定的. 想知道怎么来实现嘛,好吧,大家现在开始跟着我做,我保证大家一定一学就会.不过,我想在网上"成家"的朋友一般分为在网吧里"开业"(就像我一样,刚开始从他人的主页拉相关的代码来改的),还有就是在自己家里用DW或FP之类的专业软件制作好上传的,所以呢,

CSS网页制作技巧:让网页内容居中的方法

文章简介:居中一直是设计师们比较喜欢使用的一种摆放形式,无论是图片还是文字都会被要求放在中间,水平或者垂直.css提供了很多方便的让内容居中的方法给我们使用,以下罗列那些最长被使用的居中技巧. 居中一直是设计师们比较喜欢使用的一种摆放形式,无论是图片还是文字都会被要求放在中间,水平或者垂直.css提供了很多方便的让内容居中的方法给我们使用,以下罗列那些最长被使用的居中技巧. 水平居中的text-align:center 和 margin:0 auto 这两种方法都是用来水平居中的,前者是针对父元

网页制作技巧教程:了解浏览器自带开发工具

文章描述:浏览器自带开发工具你知道多少? 常规 找到开发工具 快捷方式: "F12"(Windows) "Cmd"⌘ +"Option" +"I"(Mac) 右键选择"Inspect Element 检查元素" Safari 需要在 首选项 > 高级 > 显示开发菜单,启用开发工具 Firebug 是 Firefox 扩展,需要在此安装 用最新的开发版 开发工具会不断完善,在开发版可以体验. C

CSS网页制作技巧:图片的自适应居中和兼容处理

文章简介:图片的自适应居中及兼容性处理. 前几天在做腾讯微博的微卖场的时候,遇到需要做图片居中的需求.也就是说,商品列表中的图片需要居中显示.因为图片是卖家自己把商品图片链接过来,商品图片的大小没有做限制和过滤.所以我们需要做的是,让图片在容器当中水平居中.垂直居中.图片自适应容器大小.图片原图大小和在容器中显示的大小有这样的关系: 假设容器大小为200像素*200像素,图片的宽为x 像素,高为y 像素,则: 当x<=200,y<=200时,图片位于容器中的中间,即水平居中和垂直居中,显示在容