关于居中布局和IE双倍边距bug_CSS/HTML

今天google了一下css居中布局的问题,结果差不多都是引用了同一篇文章。在ie中要居中,只要在<body>元素中定义text-align:center;的属性。而在firefox中,需要定义一个wrapper包裹器。然后指定margin-left:auto;margin-right:auto;的属性来使区块在firefox中居中。其实,我自己都是用margin:auto;的缩写margin属性来设定居中。margin缩写属性是上、右、下、左的顺时针顺序来设定四个方位的页面边距的。需要注意的是,如果你据此以为只要设定margin-top:auto;属性后就想使区块居中的话,那你就错了。用这种方式的时候,非得同时设定margin-left:auto;margin-right:auto;属性才能居中。但是,你设定margin:0 auto;这样的方法也是可以居中的。
另外一种居中的方法是在使用绝对定位的前提下,用left:50%+margin-left:-375px;的组合方式来居中。两种居中方式如下。

/* 方法一 */
body {
    background: #00FF7F;
    text-align: center; /* hack for ie center alignlayout */
}
#wrapper{
    background: Aqua;
    width: 750px;
    margin:auto; /* 或者 margin-left:auto;margin-right:auto;*/
}
/* 方法二 */
#wrapper2 {
    position: absolute;
    width:750px;
    left:50%;
    margin-left:-375px;
    background: Orange;
}

我个人一直使用方法一的方式来居中,因为感觉方法二的区块缺乏必要的刚性,代码也不太好理解。如果你缩小方法二的窗体到一定限度,就会看到整个布局会出现流动的情况。当然有人要的就是这种效果。:),另外方法二的一个好处是在其他嵌套区块中不必覆盖body元素的text-align: center;的设定,因为大部分文本还是会以左对齐居多。这样一定程度上可以减少一点冗余。不过我觉得这个好处可以忽略不计。总之,大家根据各自喜好各取所需便是。

另外一个是ie的双倍边距的bug,解决方法就是加上display:inline;的设定即可。其实这个解析错误的bug会影响很多方面。如果你遇到css布局在ie中间距表现异常的时候,就可以试试看加上display:inline;的属性申明了。而且在一定特定的布局问题问题,需要组合使用display:block;和display:inline;才能让布局如你所愿。我在一个unorder list控制的图片菜单中就遇到过类似的问题。

尽快各种不同的浏览器都有css bug,但是css页面布局方式发展到今天,已经比较成熟了,因为bug而让你抓狂不已的发生机率已经不大了。如果有问题,多查查搜索引擎能够解决你大部分的问题。如果,平时闲着的时候,可以作些试验的话,也许更能够在紧急情况下也能够泰然自若。

时间: 2024-10-03 18:00:16

关于居中布局和IE双倍边距bug_CSS/HTML的相关文章

ie6 文字溢出bug(注释bug) 双倍边距(margin)的bug 宽度100%问题解决方法

1.在以下情况下将会引起文字溢出bug 一个容器包含2两个具有"float"样式的子容器. 第二个容器的宽度大于父容器的宽度,或者父容器宽度减去第二个容器宽度的值小于3 在第二个容器前存在注释(这也是为什么此bug也叫做"IE6注释bug"的原因). 2.引起bug时的效果图                 这是正常效果        IE6下却多了一个"怪"字,真是怪   3.修复该bug的解决方案 改变结构,不出现[一个容器包含2两个具有&q

IE中怎么会出现双倍边距?

IE6.0环境中双倍边距BUG.先看下面的CSS代码.  代码如下 复制代码 div {     float:left;     margin-left:10px;     width:420px;     height:150px;     border:1px solid red     } 这样设置以后.本来左边距设置为10px,但IE6.0解释为20px,这是一个比较头疼的问题. 但解决也非常简单.办法就是是加上display:inline.就搞定了.看下面的示例对比! 双陪边距的效果:

Android App中使用LinearLayout进行居中布局的实例讲解_Android

要想让您的控件水平居中或垂直居中其实很简单,只要在控件的上一级中设置[android:gravity="center"]属性即可 如: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:gravity="center" android:backgro

Android App中使用LinearLayout进行居中布局的实例讲解

要想让您的控件水平居中或垂直居中其实很简单,只要在控件的上一级中设置[android:gravity="center"]属性即可 如: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:gravity="center" android:backgro

解决在IE6的双倍边距的BUG问题

浮动后本来外边距10px,但IE解释为20px,解决办法是加上display:inline.以下是HTML网页特效代码,点击运行按钮可查看效果: [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

CSS不用float实现模块居中布局

css 最常见实用的布局形式:上.中左.中右.底四个模块,宽度760px,整体页面居中. 结构代码,top left right foot 四个模块全部独立.互不嵌套. <div id="top">head</div> <div id="left">  <div id="left_module">left</div></div> <div id="right&

不用float,模块居中布局例子

 最常见实用的布局形式:上.中左.中右.底四个模块,宽度760px,整体页面居中. 结构代码,top left right foot 四个模块全部独立.互不嵌套.<div id="top">head</div> <div id="left">  <div id="left_module">left</div></div> <div id="right"

不用float实现div模块居中布局_经验交流

最常见的div+css网页布局形式:上.中左.中右.底四个模块,宽度760px,整体页面居中. 结构代码,top left right foot 四个模块全部独立.互不嵌套. <div id="top">head</div> <div id="left">   <div id="left_module">left</div> </div> <div id="r

不用float实现模块居中布局_CSS/HTML

最常见实用的布局形式:上.中左.中右.底四个模块,宽度760px,整体页面居中. 结构代码,top left right foot 四个模块全部独立.互不嵌套. <div id="top">head</div> <div id="left">  <div id="left_module">left</div></div> <div id="right"