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 相关文章推荐
用CSS禁用输入法(CSS3 UI规范)实例解析
Dec 04 HTML / CSS
css3实现一款模仿iphone样式的注册表单
Mar 20 HTML / CSS
用css3写出气球样式的示例代码
Sep 11 HTML / CSS
用CSS3实现无限循环的无缝滚动的示例代码
Nov 01 HTML / CSS
CSS3.0实现霓虹灯按钮动画特效的示例代码
Jan 12 HTML / CSS
html5构建触屏网站之touch事件介绍
Jan 07 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
Jan 21 HTML / CSS
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
Feb 28 HTML / CSS
【HTML5】3D模型--百行代码实现旋转立体魔方实例
Dec 16 HTML / CSS
移动端html5判断是否滚动到底部并且下拉加载
Nov 19 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
Dec 14 HTML / CSS
html2 canvas svg不能识别的解决方案
Jun 03 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
JavaScript实现的使用键盘控制人物走动实例
2014/08/27 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
layer关闭弹出窗口触发表单提交问题的处理方法
2019/09/25 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
python检测远程端口是否打开的方法
2015/03/14 Python
Python psutil模块简单使用实例
2015/04/28 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
python写入已存在的excel数据实例
2018/05/03 Python
在Python dataframe中出生日期转化为年龄的实现方法
2018/10/20 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
python中import与from方法总结(推荐)
2019/03/21 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
Mac安装python3的方法步骤
2019/08/09 Python
技术经理的自我评价范文
2013/12/03 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
商超业务员岗位职责
2015/02/13 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
小学数学教学随笔
2015/08/14 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
python 实现体质指数BMI计算
2021/05/26 Python