关于居中布局和IE双倍边距bug

今天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而让你抓狂不已的发生机率已经不大了。如果有问题,多查查搜索引擎能够解决你大部分的问题。如果,平时闲着的时候,可以作些试验的话,也许更能够在紧急情况下也能够泰然自若。

(0)

相关推荐

  • 关于居中布局和IE双倍边距bug

    今天google了一下css居中布局的问题,结果差不多都是引用了同一篇文章.在ie中要居中,只要在<body>元素中定义text-align:center;的属性.而在firefox中,需要定义一个wrapper包裹器.然后指定margin-left:auto;margin-right:auto;的属性来使区块在firefox中居中.其实,我自己都是用margin:auto;的缩写margin属性来设定居中.margin缩写属性是上.右.下.左的顺时针顺序来设定四个方位的页面边距的.需要注意的

  • Android Studio 3.5格式化布局代码时错位、错乱bug的解决

    更新到3.5版本后,格式化布局文件代码,会自动给排序元素,导致界面布局错乱 解决办法: 设置 > code style > XML 右上角 Set from然后选择Predefined Style...>Android即可 补充知识:Android Studio:Reformat Code格式化Xml布局代码后控件顺序错乱 Android Studio升级3.5之后,遇到个奇葩问题,在布局xml文件中格式化代码后,控件的顺序都变了,这不是我们想要的结果,网上搜了一下,确实是AS3.5的锅

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

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

  • 不用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

  • 标准布局常见问题及解决办法

    CSS2.0盒模型层次平面示意图和3D示意图 3像素问题及解决办法 当使用float浮动容器后,在IE6下会产生3px的空隙,有意思的是右侧容器没设置高度时3px在右侧容器内部,当设定高度后又跑到容器的左侧了,所以对布局精度要求高的话,请参考例29.31的解决方法 上边容器浮动后,下边的容器跟着浮动,造成页面错乱 如以上例子中的footer必须要单独占一行,但当sidebar浮动后,content的高度小于sidebar的高度时,footer也跟着浮动到sidebar右侧了,造成页面错乱.解决办

  • 前端面试题及答案整理(二)

    Part1 CSS相关 1 内联元素(inline-element)和块元素(block element)分别有哪些 常见内联元素(行内元素)有a.b.span.i .em.input.select .img等 常见的块元素有div.ul.li.h1~h6.talbe.ol. ul.td.p等 2 浮动相关 浮动布局指将元素脱离普通流/文档流,使其可以左右移动,直至它的外边缘遇到包含框或者另一个浮动框的边缘.浮动框不属于文档中的普通流,当一个元素浮动之后,不会影响到块级元素的布局而只会影响内联元

  • 移动端android上line-height不居中的问题的解决

    现在越来越多的移动界面使用rem适配,遇到的坑也不尽其数,今天就移动端android上line-height不居中的问题提出自己的解决办法. 据分析得知原因: 1.字体大小不要使用奇数字号,带小数点的更不要提了.也就是说被2整除的整数且不可小于12px. 2.使用rem的单位时造成(根元素如果动态改变时,根元素字体可能不是整数). 那么,怎么解决了? 网上有好几种,如 1.把字号内外边距等设置为需求大小的2倍,使用transform进行缩放.只能针对 单个或者是一排的布局进行缩放,如果是父级自适

  • DIV+CSS网页制作布局技巧学习

    CSS布局常用的方法:float:none|left|right取值:none: 默认值.对象不飘浮left: 文本流向对象的右边right: 文本流向对象的左边 它是怎样工作的,看个一行两列的例子xhtml:<div id="wrap"><div id="column1">这里是第一列</div><div id="column2">这里是第二列</div><div class=&

  • Bootstrap 网格系统布局详解

    Bootstrap 提供了一套响应式.移动设备优先的流式网格系统(Grid System),随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列. 一.什么是网格(Grid)? 在平面设计中,网格是一种由一系列用于组织内容的相交的直线(垂直的.水平的)组成的结构(通常是二维的).它广泛应用于打印设计中的设计布局和内容结构.在网页设计中,它是一种用于快速创建一致的布局和有效地使用 HTML 和 CSS 的方法. 一句话概括:网页设计中的网格用于组织内容,让网站易于浏览,并降低用户

随机推荐