前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >CSS居中方法集锦

CSS居中方法集锦

作者头像
星回
发布于 2018-08-02 07:26:28
发布于 2018-08-02 07:26:28
62100
代码可运行
举报
文章被收录于专栏:星回的实验室星回的实验室
运行总次数:0
代码可运行

这阵一直忙各路笔试面试,心越来越浮躁,也好久没有写些东西。不过也正是这些虐我千百遍的笔试面试题让我愈发地觉得确有必要整理一下知识点,让网上书上看的杂乱无章的东西形成自己的体系。

前一阵改活控的BUG(好吧其实是第N次改需求)时发现一个头疼的问题,在用line-height实现行内垂直居中后居然发现移动终端浏览器不支持这个,改成inline-block配合padding也是不感冒。然后在css-tricks上找了找,瞬间豁然开朗,麻麻再也不用担心我的居中问题啦!

看得比较散,稍微整理如下。

行内元素

这个比较简单直接,将行内元素的line-height设置为与父元素height等值,便可以达到垂直居中的效果。而水平居中则是用烂了的text-align: center,在不脱离文档流的情况下都是很坚挺的存在。说到这里就要顺便黑一黑他的兄弟vertical-align: middle了,用起来还是诸多限制。

固定大小的块级元素

接下来就是最近接触的一些小tricks。在已知容器宽高的情况下怎样让它在父容器内始终水平和垂直都居中呢?这里用到绝对定位的百分比偏移,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<style>
  .container {
    position: relative;
    height: 600px;
    background-color: #bbb;
  }

  .center {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 150px;
    height: 100px;
    margin-top: -50px;
    margin-left: -75px;
    background-color: #555;
  }
</style>

<div class="container">
  <div class="center">
  </div>
 </div>

首先用绝对定位的偏移量确定了框体的位置,然后巧妙地利用负margin根据实际宽高调整,原理如下图:

未知大小的块级元素

已知大小的元素可以根据宽高来修正边距,那么如果宽高也未知呢?这才是检验真理的最终标准!首先我们想到,按照上一种方法的思路,把位移也变成百分比不就行了?于是我们很快想到CSS3的transform。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<style>
.center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: #555;
}
</style>

CSS3固然很爽,但有时也不得不兼顾老版本IE的脾气,尽管微软已经开始全面推广spartan,对家里的老爷子也还是要敬三分,不得不保留下来。

兼容方案

在这里,我们只能想象之前提到过的vertical-align: middle,然而它只能在table里发挥作用,对布局限制太多,怎样利用它呢?这里不得不佩服css-tricks上作者的脑洞,下面是它的方法:

If we set up a "ghost" element inside the parent that is 100% height, then we vertical-align: middle both that and the element to be centered, we get the same effect.

简单说就是利用伪元素:before,在元素前创造一个隐藏的、高度为100%的"table column",模拟出一个table布局,这样便可以利用vertical-align: center将子元素与其居中对齐。

最简单也是最高科技的方案

大道至简,最简洁的方法才是最牛逼的。最后再次把flex模型搬出来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<style>
.container {
  display: flex;
  height: 600px;
  justify-content: center;
  align-items: center;
  background-color: #bbb;
}
</style>

寥寥几句,一切尘埃落定,这就是新技术的威力。不得不说flex是一个很方便的技术,在一些栅格布局的适配上做到了很多之前UI框架做的事情。可惜的是由于历史版本的原因,各浏览器的写法都有些微差别,IE之流的上古大神更是爱答不理,只得静待新标准的推进了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CSS实现元素居中原理解析
在 CSS 中要设置元素水平垂直居中是一个非常常见的需求了。但就是这样一个从理论上来看似乎实现起来极其简单的,在实践中,它往往难住了很多人。
laixiangran
2018/07/25
6240
css 元素居中
前提:没有设置高度,高度由内容撑开。块级元素如果设置了高度,就不知道如何设置padding的数值 demo
bamboo
2019/01/29
3.6K0
css 元素居中
CSS中关于元素居中的方法总结(超全)
css中一个很重要的问题,就是关于元素的居中,包括水平居中,垂直居中,本文就是为大家总结了:css中对于行内元素与块级元素不同的居中方法.
用户9914333
2022/07/21
3K0
前端开发中各类型居中方式总结
前端开发中经常用到的就是元素居中,有时候不同的元素居中方式不同就忘记了,明明已经设置了居中,但却没有效果,搞得人很懵逼,还得去搜索一下,所以今天总结了一下,方便以后查用。
岳泽以
2022/10/26
6040
前端开发中各类型居中方式总结
CSS实现居中效果
这种方法可以让 inline/inline-block/inline-table/inline/flex 等类型的元素实现居中。
十玖八柒
2022/07/30
4.4K0
CSS设置居中的方案总结-超全
张鑫旭老师的博客也有提到过: 我所知道的几种display:table-cell的应用
Nealyang
2019/09/29
8600
CSS设置居中的方案总结-超全
HTML & CSS页面布局之定位
默认情况下,HTML元素都在标准流中呈现和展示。我们之前把元素分为块级元素,行内元素,行内块级元素,他们的特性是块级独占一行,行内和行内块级可以在一行内共存,这些特性都是针对标准流的。总结一下就是,标准流中元素只能在水平或垂直方向上排版。如果元素是块级元素, 那么就会垂直排版,如果元素是行内元素/行内块级元素, 那么就会水平排版。
用户5997198
2020/05/12
5.5K0
【面试题解】宽高固定的12种和宽高不固定的29种CSS居中方案。
本文整理了网页布局中水平垂直居中的若干种方法,小伙伴如有其他方案,请在评论区指出,我会加到文章中并注明你的昵称。
一尾流莺
2022/12/10
4440
【面试题解】宽高固定的12种和宽高不固定的29种CSS居中方案。
最全总结,CSS实现居中的方式全部方式
利用text-align: center可以实现在块级元素内部的行内元素水平居中。 此方法对行内元素(inline),行内块(inline-block),行内表(inline-table),inline-flex元素水平居中都有效。
用户5997198
2022/01/18
3.3K0
最全总结,CSS实现居中的方式全部方式
居中对齐的几种方法
这是因为,根据规范,父元素的子元素的上边距( margin-top),如果碰不到有效的 border或者 padding,就会一层一层的找自己的祖先元素,直到找到祖先元素有有效的 border或border为止
赤蓝紫
2023/01/18
8580
CSS 基础系列:水平垂直居中方案
比较全面的水平垂直居中方案。水平垂直居中问题大体分为两类,一类目标元素是行内元素,一类目标元素是块级元素(其中,块级元素又包括定宽高和不定宽高)。
Chor
2019/11/07
1.1K0
CSS布局(六) 对齐方式
一、水平居中: (1). 行内元素的水平居中? 如果被设置元素为文本、图片等行内元素时,在父元素中设置text-align:center实现行内元素水平居中,将子元素的display设置为inline
柴小智
2018/04/10
1.9K0
CSS布局(六) 对齐方式
14种CSS实现水平或垂直居中的技巧
css水平和垂直居中是一个亘古不变的话题,它常常出现在优美的网页上以及各大前端面试当中。
前端达人
2021/08/10
5800
CSS居中:完全指南(译)
CSS的居中是众多CSS难点的代表。为啥用CSS居中这么难呢?但是我认为这个问题其实并没有那么难啦,就是有很多种不同的方式可以达到居中的目的,这取决于不同的情景,很难说用哪一种方式去实现居中。 所以就让我们做一个决策树,希望能使这个问题简单一点吧~ 水平居中 行内或者具有行内元素性质的元素(比如文字或者链接)? 让一个父元素为块级元素的行内元素水平居中,可以: CSS: 1 2 3.center-children { text-align: center; } 单个块级元素? 你可以设置块级元素的 ma
用户1667431
2018/04/18
1.7K0
CSS3
值: (1)、normal(正常);bold(加粗);(<==常用) (2)、纯数字:100~900的整百数;
roydonGuo
2022/11/02
7860
CSS3
CSS垂直居中的七个方法
我们在编辑一个版面,通常都会用到水平居中和垂直居中来设计,而水平居中很好处理,不外乎就是设定margin:0 auto;或是text-align:center;,就可以轻松解决掉水平居中的问题,但一直以来最麻烦对齐问题,都是“垂直居中”这个讨人厌的设定,以下将介绍七种单纯利用CSS垂直居中的方式。
coder_koala
2020/10/10
3K0
CSS垂直居中的七个方法
实现元素居中的 10 个CSS方法
如果元素的宽度和高度已知,我们可以使用至少 3 种方法来使元素居中。例如,在下图中,小猫的宽度和高度分别为 “500px” 和 “366px” 。我们应该如何居中?
唐志远
2022/10/27
4480
实现元素居中的 10 个CSS方法
元素居中的多种实现方式!
优点:只需在子元素child上设置css样式,不用关心父元素的 缺点:兼容性较差,如果需要兼容,更改html样式,改为table样式
十月梦想
2018/08/29
9780
css水平垂直居中各种方法实现方式
margin 可以有4个值,分别对应影响的方向是上,右,下,左, 2个值的时候,对应第一个值是 控制上下距离,第二个值是控制左右, 所以magrgin:0 auto, 就是上下距离为0,auto是自适应,这里指的是左右两个方向的距离一样,也就是说,不论你的宽度怎么变化,都是两个方向距离一样,形成居中。
肥晨
2023/04/04
5450
CSS实用技巧(中)
我们经常使用CSS,但是却不怎么了解CSS,本文主要对vertical-align、BFC、position中开发过程不怎么注意的特性进行简要总结,从本文中,你将了解到以下内容:
冬夜先生
2021/09/07
1.5K0
相关推荐
CSS实现元素居中原理解析
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文