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使用transition实现的鼠标悬停淡入淡出
Jan 09 HTML / CSS
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
Feb 27 HTML / CSS
html5指南-3.如何实现html元素拖拽功能
Jan 07 HTML / CSS
HTML5中meta属性的使用方法
Feb 29 HTML / CSS
使用phonegap查找联系人的实现方法
Mar 31 HTML / CSS
解决html5中video标签无法播放mp4问题的办法
May 07 HTML / CSS
有关HTML5页面在iPhoneX适配问题
Nov 13 HTML / CSS
移动HTML5前端框架—MUI的使用
Dec 18 HTML / CSS
HTML5自定义视频播放器源码
Jan 06 HTML / CSS
为什么你写的height:100%不起作用
May 10 HTML / CSS
html form表单基础入门案例讲解
Jul 21 HTML / CSS
css3 选择器
May 11 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简单封装了一些常用JS操作
2007/02/25 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
Python编程求质数实例代码
2018/01/31 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Python zip函数打包元素实例解析
2019/12/11 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
python定义类的简单用法
2020/07/24 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
英语道歉信范文
2014/01/09 职场文书
医学专业自荐信
2014/06/14 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
2015年双拥工作总结
2015/04/08 职场文书
整改通知书
2015/04/20 职场文书
创业计划书之养殖业
2019/10/11 职场文书