CSS实现定位元素居中的方法


Posted in HTML / CSS onJune 23, 2015

绝对定位元素的居中实现

如果要问如何CSS实现绝对定位元素的居中效果,很多人心里已经有答案了。

兼容性不错的主流用法是:

CSS Code复制内容到剪贴板
  1. .element {   
  2.     width600pxheight400px;   
  3.     positionabsoluteleft: 50%; top: 50%;   
  4.     margin-top: -200px;    /* 高度的一半 */  
  5.     margin-left: -300px;    /* 宽度的一半 */  
  6. }  

但,这种方法有一个很明显的不足,就是需要提前知道元素的尺寸。否则margin负值的调整无法精确。此时,往往要借助JS获得。

CSS3的兴起,使得有了更好的解决方法,就是使用transform代替margin. transform中translate偏移的百分比值是相对于自身大小的,于是,我们可以:

CSS Code复制内容到剪贴板
  1. .element {   
  2.     width600pxheight400px;   
  3.     positionabsoluteleft: 50%; top: 50%;   
  4.     transform: translate(-50%, -50%);    /* 50%为自身尺寸的一半 */  
  5. }  

于是乎,无论绝对定位元素的尺寸是多少,其都是水平垂直居中显示的。

然,问题很明显,兼容性不好。IE10+以及其他现代浏览器才支持。中国盛行的IE8浏览器被忽略是有些不适宜的(手机web开发可忽略)。

实际上,绝对定位元素的居中实现还有另外一种方法,可以说是权衡了上面的尺寸自适应以及兼容性的一个方案,其实现的核心是margin:auto.

margin:auto实现绝对定位元素的居中

首先,我们来看下CSS代码:

CSS Code复制内容到剪贴板
  1. .element {   
  2.     width600pxheight400px;   
  3.     positionabsoluteleft: 0; top: 0; rightright: 0; bottombottom: 0;   
  4.     marginauto;    /* 有了这个就自动居中了 */  
  5. }  

代码两个关键点:

    上下左右均0位置定位;
    margin: auto

于是,就居中了。上面代码的width: 600px height: 400px仅是示意,你修改为其他尺寸,或者不设置尺寸(需要是图片这种自身包含尺寸的元素),都是居中显示的。很有意思的~~

您可以狠狠地点击这里:margin:auto与绝对定位元素的垂直居中demo

HTML / CSS 相关文章推荐
基于CSS3实现的几个小loading效果
Sep 27 HTML / CSS
利用纯css3实现的文字亮光特效的代码演示
Nov 27 HTML / CSS
基于Jquery和Css3代码制作可以缩放的搜索框
Nov 19 HTML / CSS
使用 CSS3 中@media 实现网页自适应的示例代码
Mar 24 HTML / CSS
HTML5使用Audio标签实现歌词同步的效果
Mar 17 HTML / CSS
HTML5 解析规则分析
Aug 14 HTML / CSS
html5中canvas学习笔记2-判断浏览器是否支持canvas
Jan 06 HTML / CSS
html5定位获取当前位置并在百度地图上显示
Aug 22 HTML / CSS
HTML5拖拉上传文件的简单实例
Jan 11 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
Jan 29 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
Aug 01 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
Jan 27 HTML / CSS
利用CSS3实现文本框的清除按钮相关的一些效果
Jun 23 #HTML / CSS
使用CSS3制作饼状旋转载入效果的实例
Jun 23 #HTML / CSS
利用CSS3实现圆角的outline效果的教程
Jun 05 #HTML / CSS
浅析与CSS3的loading动画加载相关的transition优化
May 18 #HTML / CSS
CSS+jQuery+PHP+MySQL实现的在线答题功能
Apr 25 #HTML / CSS
CSS+jQuery实现的在线答题功能
Apr 25 #HTML / CSS
纯CSS3制作漂亮带动画效果的主机价格表
Apr 25 #HTML / CSS
You might like
php字符串截取问题
2006/11/28 PHP
php mysql索引问题
2008/06/07 PHP
php 无限级缓存的类的扩展
2009/03/16 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
PHP如何删除一个Cookie值
2012/11/15 面试题
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
护士检查书
2014/01/17 职场文书
门店业绩提升方案
2014/06/08 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
介绍信样本
2015/01/31 职场文书
赢在执行观后感
2015/06/16 职场文书
无房证明样本
2015/06/17 职场文书
欢送领导祝酒词
2015/08/12 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
Python异常类型以及处理方法汇总
2021/06/05 Python