position: absolute;绝对定位水平居中问题
用CSS让元素居中显示并不是件很简单的事情—同样的合法CSS居中设置在不同浏览器中的表现行为却各有千秋。让我们先来看一下CSS中常见的几种让元素水平居中显示的方法。

1.使用自动外边距实现居中
CSS中首选的让元素水平居中的方法就是使用margin属性—将元素的margin-left和margin-right属性设置为auto即可。在实 际使用中,我们可以为这些需要居中的元素创建一个起容器作用的div。需要特别注意的一点就是,必须为该容器指定宽度:
复制内容到剪贴板
代码:

div#container {
margin-left: auto;
margin-right: auto;
width: 980px;
}
在大多数主流浏览器中,这种方法都非常有效,即使是Windows平台上的IE6,在其标准兼容模式(compliance mode)下也能够正常显示。但不幸的是,在更低版本的IE中,这种设置却并不能实现居中效果。所以若想在实际项目中使用这种方法,那么就要确保用户的 IE浏览器版本不低于6.0。

尽管在支持上不尽如人意,但大多数设计师都建议尽可能地使用这种方法。该方法也被认为是在各种用CSS实现元素水平居中方法中最正确、最合理的一种。

2.使用text-align实现居中
另一种实现元素居中的方法是使用text-align属性,将该属性值设置为center并应用到body元素上即可。这种做法是彻头彻尾的hack,但它却能兼容大多数浏览器,所以在某些情况下也自然必不可少。

之所以说它是hack,是因为这种方法并没有将文本属性应用到文本上,而是应用到了作为容器的元素上。这也给我们带来了额外的工作。在创建好布局必须的div之后,我们要按照如下代码为body应用text-align属性:
复制内容到剪贴板
代码:

body{
text-align:center;
}
之后会出现什么问题吗?body的所有子孙元素都会被居中显示。
因此,我们就需要用再写一条规则,让其中的文本回到默认的居左对齐:
复制内容到剪贴板
代码:

p {
text-align:left;
}
可以想象这条附加的规则将带来一些不便。另外,真正完全遵循标准的浏览器并不会改变容器的位置,而只会让其中的文字居中显示。

3.组合使用自动外边距和文本对齐
因为文本对齐居中方式有着良好的向下兼容性,且自动外边距方式也被大多数当代浏览器支持,所以很多设计师将二者组合起来使用,以期让居中效果得到最大限度的跨浏览器支持:
复制内容到剪贴板
代码:

body {
text-align: center;
}

#container {
margin-left: auto;
margin-right: auto;
border: 1px solid red;
width: 980px;
text-align: left
}
可是这始终是个hack,无论如何也算不上完美。我们还是需要为居中容器中的文本编写附加的规则,但至少在各个浏览器中看起来都不错。

4.负外边距解决方案
负外边距解决方案远不是仅仅为元素添加负外边距这么简单。这种方法需要同时使用绝对定位和负外边距两种技巧。

下面是该方案的具体实现方法。首先,创建一个包含居中元素的容器,然后将其绝对定位于相对页面左边边缘50%的位置。这样,该容器的左外边距将从页面50%宽度的位置开始算起。

然后,将容器的左外边距值设置为负的容器宽度的一半。这样即可将该容器固定在页面水平方向的中点。
复制内容到剪贴板
代码:

#container {
background: #ffc url(mid.jpg) repeat-y center;
position: absolute;
left: 50%;
width: 980px;
margin-left: -490px;
}
看,没有任何hack!虽然这并不是首选的解决方案,但也是个不错的方法,且适用性极广—甚至在Netscape Navigator 4.x中都没有任何问题,很令人吃惊,不是吗?所以若想得到最广泛的浏览器支持,那么这种方法将会是最好的选择

absolute 绝对定位水平居中问题相关推荐

  1. CSS position: absolute 绝对定位精讲

    本文要点 1. 绝对定位元素文档流: 2. 绝对定位元素定位参照对象: 3. 绝对定位元素的自动伸缩: 4. 绝对定位元素实现垂直居中: 绝对定位基本特征 绝对定位的第一个特征在于会从文档流中脱离,不 ...

  2. 定位:relative相对定位、absolute绝对定位、fixed固定定位

    作者有话说:在学定位之前有了解过吗?再没学浮动之前,这些块元素标签会出现在一列,要想实现并排就可以使用浮动float,现在我们可以学习定位,给背景图片或者图片.div.border等添加属性等,有定位 ...

  3. static(静态定位),fixed(固定定位),relative(相对定位),absolute(绝对定位)

    static(静态定位),fixed(固定定位),relative(相对定位),absolute(绝对定位) Position的取值: static(静态定位) : 表示块保留在原本应该在的位置,不会 ...

  4. CSS 有关Position = absolute (绝对定位 是相对于谁而言)

    css中有绝对定位法,以前一直搞不懂绝对定位是相对于谁而言的绝对定位. 现在搞清楚了,不是相对于父元素,也不是相对于BODY. 而是相对于所属元素树中,相邻最近的那个显示标识了position属性的元 ...

  5. 怎么样使父元素的overflow:hidden不影响到子级absolute绝对定位元素

    在项目中使用了popover组件,由于父级设置了overflow:hidden,当子级长度超出时,即使子元素是绝对定位元素也受到了影响. 查了很多资料,发现只要父级元素不设置position:rela ...

  6. absolute绝对定位.实现水平垂直居中

    当容器的position属性值为absolute时,这个容器即被绝对定位了.使用绝对定位的容器,会脱离文档流. 当有多个绝对定位容器放在同一个位置时,显示哪个容器的内容呢?类似Photoshop的图层 ...

  7. No.10 position定位 之 absolute绝对定位

    在css中,使用position(定位),它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素.另一个元素.甚至是浏览器窗口本身的位置. 本篇介绍:absolute(绝对定位) 概念 : ...

  8. absolute元素水平居中

    原始(未居中): 1 .con{ 2 width:200px; 3 height:200px; 4 background:#ccc; 5 position:relative; 6 } 7 .abs{ ...

  9. position:absolute实现水平居中

    可以这样做: 设置父元素的 position 属性为 relative. 设置子元素的 position 属性为 absolute. 设置子元素的 left 属性为 50%,并设置一个负的 margi ...

最新文章

  1. 单卡手机怎么变双卡双待全过程
  2. javascript pattern
  3. linux 手动添加 swap 分区
  4. Codeforces Round #183 (Div. 2)
  5. linux退出大于符号,每天一个linux命令--退出符号
  6. 惊现试衣间照片流出??
  7. iOS convertRect:view.frame toView: x 异常翻倍?
  8. 关于神经网络的需要注意的概念总结
  9. 【word基础知识】在word指定页开始设置页码/页眉
  10. java搜索引擎: lucene学习笔记 3
  11. 关于国标码最后一位校验码计算方法
  12. javaMail发送邮件
  13. Linux中tomcat启动后无进程、无法访问
  14. 下载文件夹压缩为zip格式时打开报不可预料的压缩文件末端
  15. Qt 之QDockwidget 自定义窗口标题栏
  16. 多人群聊聊天室java_#java 聊天室(一)—— 实现一个简单Telnet多人群聊聊天室...
  17. Cannot mix different versions of joi schemas报错解决方案
  18. TCP——粘包/拆包
  19. 手把手教你实现一个抽奖系统(Java版)
  20. 70行python代码实现qq视频加特效效果

热门文章

  1. uni-app 如何区分当前是什么小程序呢?
  2. css布局margin介绍,深入理解css中的margin属性(推荐)
  3. 【论文翻译】VGG网络论文中英对照翻译--(very deep convolutional networks for large-scale image  recognition)
  4. 当 WindowsXP 遇上这样的目标 IP 地址: xxx.xxx.xxx.255
  5. iOS开发:iPhone分辨率指南
  6. HTML快速生成标签
  7. 如何修改 SAP ABAP OData 模型,使其支持 $expand 操作试读版
  8. 优质的中式家装整体3d模型素材推荐,不容错过
  9. 神经网络用于控制的优越性,神经网络稳定性理论
  10. 第十二章实操篇Linux磁盘分区、挂载