CSS水平居中的四种方法

终结者T800
• 阅读 1447

水平垂直居中,特别是使用在列表的时候经常会用到的,以前有需求的时候我也做过类似的代码,是使用display:table-cell,mg12的博客那个相关文章的列表好像就是使用这个代码来的,之前我也是参考他来的。

今天重新整理一下,并结合前人的辛劳,总结一下以作备份。 水平居中,如果知道元素的宽度,则可以使用 .cell{width:300px; margin:0 auto; text-align:center;}

如果是内联元素居中,那么直接用text-align:center则行 如果未知元素宽度,并且非内联元素,那么下面给出的几种方案也适合你。

第一种:相对定位法

原理是父类浮动的同时向左left:50%,而子类则向左浮动的同时left:50%;

<style type="text/css">
.centerlist {position:relative;left:50%;float:left;}
.centerlist li {position:relative;right:50%; z-index:2;float:left}
</style>
<ul class="centerlist">
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
    <li><a href="#">Lorem ipsum dolor.</a></li>
</ul>

第二种:强制内联

<style type="text/css">
.centerlist_inline{text-align: center;}
.centerlist_inline li{display: inline;}
</style>
<ul class="centerlist_inline">
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
</ul>

局限:块级元素改为内联元素,那么高度、宽度、margin-top,margin-bottom, padding-top,padding-bottom,等都不能用。

第三种: 使用inline-block

如果大家看过我之前写的inline-block替换float可能就会清楚这个属性的好处了。

<style type="text/css">
.centerlist_inline-block{text-align: center; font-size:0; -letter-spacing:-1px;}
.centerlist_inline-block li{display: inline-block; \*display: inline; \*zoom:1; font-size:12px; letter-spacing:normal; word-spacing:normal;}
</style>
<ul>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
</ul>

第四种:table-cell

<style type="text/css">
.centerlist_table-cell{display:table; margin:0 auto;}
.centerlist_table-cell{display:table-cell;}
</style>
<ul class="centerlist_table-cell">
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
</ul>

缺点是不兼容ie6,ie7 推荐使用inline-block这种水平居中的方法,既保留了块级元素特性,而且完美兼容。就是代码有点多。

另外你还可以使用表格的方式来水平居中。 说完了水平居中,下面说垂直居中。

如果元素是内联元素,并且只有一行,则我们可以通过line-height来设置与其高度同样大小,则实现了垂直居中了。

如果未知元素高度,则可以使用下面代码: CSS多行文字垂直居中的两种方法 移动端垂直居中对齐

最后

关注公众号:前端开发博客,并回复:1024, 领取前端进阶资料包

CSS水平居中的四种方法

点赞
收藏
评论区
推荐文章
风花雪月 风花雪月
2年前
html加css样式,不用js实现切换内容,直接上测试代码!
/清样式,如果是项目中,不推荐使用通配符来清样式,建议使用标签清样式,通配符清样式会增加页面压力/margin:0;padding:0;/宽度为屏宽的一半,高度为屏高的一半,然后居中/.boxwidth:50vw;height:50vh;margin:0a
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
LinMeng LinMeng
4年前
css之元素居中
行内元素居中文本垂直居中单行文本垂直居中设置lineheight与盒子高度一样就行这里有一个误区,我经常在设置单行文本居中的时候,会习惯性的设置height属性与linheight属性一样,其实完全没必要,只设置lineheight就行,这时候盒子的高度由lineheight撑起来,与height完全相同。多行文本垂直居中1.ve
Chase620 Chase620
4年前
给公司面试了100多个前端,心态差点给爷整崩了
公司最近在做扩招,从去年到现在给公司面试前端,到现在大概面了100200个,给我整哭了简历简历不带,问点基础题,一问三不知,问个水平垂直居中布局,支支吾吾半天说不出来,还有个弟弟说你这样问我不知道怎么回答,累了。我只想说,这真的有三年的经验嘛?(https://imghelloworld.osscnbeijing.aliyu
Nick16 Nick16
4年前
前端面试题全覆盖整理
本篇文章整理总结了一些前端面试题,涵盖面很广,并且面的都是知名大厂,所以这些题还是很有代表性的,都掌握以后一面基础面应该没什么问题,二面也能应付大半,奉上:css相关1.万能居中1.margin:0auto;水平2.textalign:center;水平3.行高,垂直4.表格
Stella981 Stella981
3年前
CSS兼容性(IE和Firefox)技巧大全
CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理技巧并整理了一下。对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE影响CSS处理,作为W3C的标准,一定要加DOCTYPE声明。CSS技巧1.div的垂直居中问题verti
Wesley13 Wesley13
3年前
HTML中经常用到的对齐,居中方式
在编写一片网页时,我们经常需要使一些文本或者图片,盒子居中!但是在众多的写法里,那些才能使我们的目的最快,最有效的达到呢!居中也是有轴线之分的,水平轴,垂直于水平轴的轴,交叉轴。1盒子居中margin:auto;通常在这此行只有一个盒子的情况下使用\需要定宽\常规流和浮动不用\2文本居中   定义水平轴线对齐方式flexst
Wesley13 Wesley13
3年前
CSS中清除浮动的作用以及如何清除浮动
1.什么是浮动,浮动的作用“浮动”从字面上来理解就是“悬浮移动、非固定”的意思。块级元素(div、table、span…)是以垂直方向排列,而在前端界面中往往要使用水平布局块级元素使界面更美观。这就要用到浮动了。被设置浮动的元素会脱离标准流(竖直排列),从而达到水平排列的效果。例如.未设置浮动时图1中的两张图片竖直排列在父级元素(橙色区域)
Wesley13 Wesley13
3年前
LODOP打印项水平居中
LODOP控制打印项水平居中,可以用如下语句,该语句控制的是打印项本身在纸张中水平居中。LODOP.SET\_PRINT\_STYLEA(0,"Horient",2);这个根据大的打印项本身的宽度,如果打印项本身内部不是居中的,那么加了这句,内容也不会居中。之前有博文介绍过打印项在纸张中受到的各种边距:LODOOP中的各种边距打印项
Wesley13 Wesley13
3年前
Flex PopUpManager 弹出窗口居中
今天看到窗口居中弹出,我便想到了Alert,既然Alert每次都能居中弹出,为什么我们自定义的窗口不能居中弹出呢,所以,我查看了下Alert的show方法,放到我的代码中,果然也能居中弹出了,不论布局是如何设计的,下面是主要代码://自定义弹出的窗口大小vartitle:TitleWindownewTitleWindow();
Wesley13 Wesley13
3年前
LODOP打印图片水平居中
其他居中,查看本博客相关博文:LODOP中打印项水平居中简短问答(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fhuaxie%2Fp%2F11988181.html)、图片也属于超文本打印项,因此如果想把图片居中,也需要图片本身内容相对于图片打