css 为什么这样写? margin-right: 6px; _margin-right:3px

 我来答
楚昂熙xE
2013-09-24 · TA获得超过2624个赞
知道小有建树答主
回答量:1478
采纳率:40%
帮助的人:958万
展开全部
这样是为了做浏览器的兼容。
浏览器不同(甚至同一个浏览器的不同版本都有区别),对css的支持是不一样的。
比如IE与firefox,同一个css属性会有不同的表现,这时就需要写兼容性代码,以保障这些浏览器在浏览时看到的是同样的效果。

而你的问题中所提到的“margin-right: 6px; _margin-right:3px”,正如那位网友“玉胡蝶碟”所提到的,是为了兼容IE6浏览器。因为只有IE6浏览器能识别以下划线开头的css属性。而别的浏览顺不识别就会自动忽略掉。

所以当用ie7或firefox、chrome等浏览器打开这个网页时,会采用“margin-right: 6px;”,而当你用IE6来打开这个网页时,首先会读取到“margin-right: 6px;”,紧接着会发现有一个“_margin-right:3px”,这时IE6就会以“_margin-right:3px”为准来渲染这个网页给你看。
追问
为什么让 IE6显示3px 其他显示6px  那边距不同呀
追答
“为什么让 IE6显示3px 其他显示6px”,这个要视具体代码情况来具体分析。
但是,就这一行代码本身而言,其原因是:因为IE6对CSS的支持与其他的浏览器有差异。

在IE6下用margin-right: 6px可能导致页面撑开,容器错位等,那么就必须用这样的css hack(也即现在用的这个_margin-right: 3px)代码,来保证在IE6下容器也不错位。

举个例子:
一个页面有3个容器,均设置成float:left。
这时,在IE7、firefox、chrome下,用margin-right: 6px,显示正常。
但是在IE6下,右边距(margin-right即是右边距)设置成6px时,第3个容器就因为浏览器的渲染差异而造成宽度不足,从而被挤到下面一行了(也就是出现容器错位的情况了)。这时候,就要减少右边距,从而保障在IE6下这3个容器也正常显示在同一行里,这时用_margin-right:3px,可能就刚好实现要求。
匿名用户
2013-09-24
展开全部
不同浏览器的标签默认不同的,所以在遇到不一致的情况下就需要单独设置。
这就是我们所说的兼容性问题。
_margin-right:3px 前面加了_代表ie6右边距只要3px就好了。如果还是6px页面就不对了。
建议多看看浏览器兼容性这方面的知识
追问
为什么让 IE6显示3px 其他显示6px  那边距不同呀
追答
IE6边距会增加显示!
如果只单独margin-right:6px;
当ie6打开页面时,右边距可能其实已经显示12px;这时你的页面就不好看了,不对齐了,这时你发现其他浏览器都是好的,只有ie6才这样,所以就只需要写一个只有ie6识别的就好了。 _margin-right:3px。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iGO2dU
2013-09-24 · TA获得超过1666个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:159万
展开全部
我们都是用浏览器上网,不同的人用不同的浏览器,同一个浏览器有不同的版本。

假设有100个人上网,其中60个人用IE,40个人用其他的浏览器Chrome 、firefox等等,
假如60个用IE浏览器的人中,有20个用IE6,2个人用IE5,1个人用IE4,那么为了使得正在用IE6及以下版本的23个人上网的时候能够看到右边距效果(3px),则在CSS中加入
_margin-right:3px; 这行属性和值。如果没有这行,用IE6及以下版本的IE(IE1,IE2,IE3,IE4,IE5)的人,都不能在浏览器中看到右边距宽3px这个效果。
追问
为什么让 IE6显示3px 其他显示6px  那边距不同呀
追答
  1. 给你举例那个人写错代码了。

  2. 用IE6以下都是些老人了,这么写更加符合老人的品味。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友64455cc
2013-09-24
知道答主
回答量:1
采纳率:0%
帮助的人:1455
展开全部
这是一个解决IE6双倍边距的bug的一种方法,因为在IE6下的margin值会出现2倍值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风铃冷冷2
2013-09-24 · TA获得超过1799个赞
知道小有建树答主
回答量:833
采纳率:0%
帮助的人:508万
展开全部

IE 6 及以下的版本可以识别带有下划线前缀的属性,而其它浏览器会忽略它。因此,一个属性前面加上下划线或者连字符,就成为了IE6及以下版本浏览器的专有属性。

#elem { 
    width: [W3C Model Width]; 
    _width: [BorderBox Model]; 
}
追问
为什么让 IE6显示3px 其他显示6px  那边距不同呀
追答
ie有一个3px兼容性问题,你的完整HTML CSS代码呢?看看是不是这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式