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的Media Queries(跨平台设计)
Jul 27 HTML / CSS
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
Oct 11 HTML / CSS
使用CSS3来制作消息提醒框
Jul 12 HTML / CSS
CSS3绘制六边形的简单实现
Aug 25 HTML / CSS
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
Dec 20 HTML / CSS
HTML5混合开发二维码扫描以及调用本地摄像头
Dec 27 HTML / CSS
HTML5中FileReader接口使用方法实例详解
Aug 26 HTML / CSS
html5如何及时更新缓存文件(js、css或图片)
Jun 24 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
Jun 22 HTML / CSS
HTML5 Canvas 旋转风车绘制
Aug 18 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
Jan 11 HTML / CSS
canvas实现手机的手势解锁的步骤详细
Mar 16 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写UltraEdit插件脚本实现方法
2011/12/26 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
浅谈JS运算符&&和|| 及其优先级
2016/08/10 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
在vue项目中使用md5加密的方法
2018/09/14 Javascript
js取小数点后两位四种方法
2019/01/18 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python常见异常分类与处理方法
2017/06/04 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
新大陆软件面试题
2016/11/24 面试题
幼儿园家长会欢迎词
2014/01/09 职场文书
女方回门宴答谢词
2014/01/14 职场文书
导购员的岗位职责
2014/02/08 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
协会周年庆活动方案
2014/08/26 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
公务员党员评议表自我鉴定
2014/09/14 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
社区敬老月活动总结
2015/05/07 职场文书
实习单位鉴定意见
2015/06/04 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
asyncio异步编程之Task对象详解
2022/03/13 Python