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 相关文章推荐
HTML5和CSS3让网页设计提升到下一个高度
Aug 14 HTML / CSS
css3制作动态进度条以及附加jQuery百分比数字显示
Dec 13 HTML / CSS
css3实现元素环绕中心点布局的方法示例
Jan 15 HTML / CSS
使用HTML5捕捉音频与视频信息概述及实例
Aug 22 HTML / CSS
传统HTML页面实现模块化加载的方法
Oct 15 HTML / CSS
IE支持HTML5的解决方法
Oct 20 HTML / CSS
HTML5的革新 结构之美
Jun 20 HTML / CSS
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
Nov 05 HTML / CSS
html5的canvas方法使用指南
Dec 15 HTML / CSS
HTML5本地数据库基础操作详解
Apr 26 HTML / CSS
HTML5添加禁止缩放功能
Nov 03 HTML / CSS
canvas如何绘制钟表的方法
Dec 13 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迭代器实现斐波纳契数列的函数
2013/11/12 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
Python如何用filter函数筛选数据
2020/03/05 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
Django视图、传参和forms验证操作
2020/07/15 Python
新奇的小玩意:IWOOT
2016/07/21 全球购物
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
体育教育个人自荐信范文
2013/12/01 职场文书
应聘自荐信
2013/12/14 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
教师网络培训感言
2014/03/09 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书