博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第147天:web前端开发中的各种居中总结
阅读量:5993 次
发布时间:2019-06-20

本文共 3117 字,大约阅读时间需要 10 分钟。

一、水平居中

方法 :行内元素 (父元素)text-align,(子元素)inline-block

.parent{
text-align: center;} .child{
display: inline-block;}
总结:

优点:兼容性好,支持低版本浏览器

缺点:需要同时在父元素和子元素上设置

适用场景:子元素数量少(或只有一个),并且需要兼容低版本浏览器时使用,不受
float影响
 
方法
:块状元素   使用margin:0 auto来实现
.child{
width:200px;margin:0 auto;}

优点:兼容性好

缺点:需要指定宽度

前提:用于子元素上,不受float影响

方法(子元素)display:table;margin:0 auto;

.child{
display:table;margin:0 auto;}

优点:只需要对自身进行设置

缺点:不兼容IE6和IE7

适用场景:子元素数量多,不方便修改父元素的属性,对浏览器版本要求相对较低时使用

方法④:绝对定位实现 (父元素)position:relative,(子元素)absolute+left+transform(translateX(-50%))

.parent{
position:relative;}/*或者实用margin-left的负值为盒子宽度的一半也可以实现,不过这样就必须知道盒子的宽度,但兼容性好*/.child{
position:absolute;left:50%;transform:translate(-50%);}
优点:不影响其他元素
缺点:
transform兼容性,IE9及以上可用

方法:flex+justify-content/margin

/*第一种方法*/.parent{
display:flex;justify-content:center;}/*第二种方法*/.parent{
display:flex;}.child{
margin:0 auto;}

第一种方法:

优点:只设
parent
缺点:
flex兼容性差,而且比较耗资源

第二种方法:

优点:代码简单
缺点:污染父元素,flex兼容性问题,如果进行大面积的布局可能会影响效率

二、垂直居中

方法 :单行文本 设置line-height等于父元素高度

.child{
height:20px; line-height:20px}
优点:代码简单
缺点:只适合一行文本,多行文本则不可以
这是一种很流行的方法, 也适应IE7.
 
方法
 :行内块级元素  使用display:inline-block; vertical-align:middle;
.child{
display:inline-block; vertical-align:middle}.parent:after{
display:inline-block; vertical-align:middle}

方法 :块级元素 使用vertical-align的时候,由于对齐的基线是用行高的基线作为标记,故需要设置line-height或设置display:table-cell;

/*第一种方法*/.parent{
display:table-cell;vertical-align:middle;height:20px;}/*第二种方法*/.parent{
display:inline-block;vertical-align:middle;line-height:20px;}
优点:兼容性比较好,换成
table可以兼容IE6,7
缺点:
table-cell不能和
float、position:absolute同时设置。(只能在外parent外套一层div.wrap才能设置float)
 
若元素的高度不一定的话
vertical-align只有在父层为 td 或者 th 时, 才会生效, 对于其他块级元素, 例如 div、p 等, 默认情况是不支持的. 为了使用vertical-align, 我们需要设置父元素display:table, 子元素
display:table-cell;vertical-align:middle;
/*第一种方法*/.parent{
display:table}.child{
display:table-cell;vertical-align:middle;}
优点:元素高度可以动态改变,不需要css定义,如果父元素有足够空间,该元素不会被截断
缺点:IE6、7,甚至IE8 beta中无效
 
方法④:使用绝对定位
.parent{
position:relative;}.child{
positon:absolute;top:50%;transform:translate(0,-50%);}
优点:基本只设置子元素,不影响其他元素
缺点:
transform兼容性问题

方法⑤:使用flex实现方法 (父)flex + align-items

.parent{
display:flex;align-items:center;}
优点:只要设置parent
缺点:flex和
align-items的兼容性

三、【终极需求】水平垂直同时居中!

方法①:元素高度固定

.parent{
position:relative;}.child{
position:absolute;top:50%;left:50%;width:固定;height:固定;margin-top:-0.5*高度;margin-left:-0.5*宽度;}

适用于所有浏览器

方法②:元素高度固定

.parent{
position:relative;}.child{
position:absolute;width:固定;height:固定;top:0;left:0;right:0;bottom:0;margin:auto}

适用于所有浏览器

方法③:(父)text-align + table-cell + vertical-align,(子)inline-block(兼容性方案)

.parent{
display:table-cell;vertical-align:middle;text-align:center;}.child{
display:inline-block;}

方法④:使用绝对定位

.parent{
position:relative;}.child{
position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}
优点:基本只设置子元素,不影响其他元素
缺点:transform兼容性问题
方法⑤:利用flex实现
.parent{
display:flex;justify-content:center;align-items:center;}
优点:只要设置parent
缺点:flex和align-items的兼容性

转载地址:http://tpxlx.baihongyu.com/

你可能感兴趣的文章
【转】每个Java初学者都应该搞懂的六个问题
查看>>
(二)探究本质,WebGIS前端地图显示之地图比例尺换算原理
查看>>
Effective_STL 学习笔记(二十三) 考虑用有序 vector 代替关联容器
查看>>
POI简易帮助文档--给Excel设置样式
查看>>
《时间序列分析及应用:R语言》读书笔记--第一章 引论
查看>>
Loadrunner中的IP欺骗的设置以及误区
查看>>
处理文本
查看>>
【机器学习】--线性回归中L1正则和L2正则
查看>>
创作型---抽象工厂模式
查看>>
【Linux-CentOS】在无互联网-内网环境的Windows7主机上安装CentOS双系统,从安装到放弃...
查看>>
告别迷茫的2011
查看>>
爬虫代理squid
查看>>
Linux安装界面简介
查看>>
如何让网页上的字如何变大
查看>>
SDOI2015 道路修建
查看>>
Oracle多个字段显示非空的那个
查看>>
POJ-3126-Prime Path
查看>>
定时器的使用说明
查看>>
BZOJ3236[Ahoi2013]作业——莫队+树状数组/莫队+分块
查看>>
QT隐藏工具栏上的右键菜单
查看>>