美文网首页技术栈HTTPcss
CSS居中方案汇总全家桶

CSS居中方案汇总全家桶

作者: 临安linan | 来源:发表于2019-02-13 16:46 被阅读508次
水平居中垂直 / 垂直居中是前端开发中常见的需求,今天就总结一下各式各样的水平 / 垂直居中,为方面描述,以下代码中外层div统一类名为.wrapper。

以下代码均在http://js.jirengu.com/?html,css,js,output 上运行并展示

1. 水平居中

1.1 内联元素水平居中

在内联元素的外层div上用text-align: center

.wrapper {
  text-align: center;
}
1.2 定宽块级元素水平居中

直接margin: 0 auto; 当然上下外边距可以随便设 注意必须是固定宽度的块级元素!

问:为什么?

不是固定宽度的话块级元素默认为100%父级宽度谈何居中?

1.3.1 多个块级元素水平居中(inline-block方法)
 <div class="wrapper">
    <div class="inner"></div>
    <div class="inner"></div>
    <div class="inner"></div>
 </div>
.wrapper {
  text-align: center;
  border: 1px solid #ccc;  /*为了看的清晰加上外层边框*/
}
.inner {
  width: 200px;
  height: 200px;
  background: red;
  border: 1px solid #ccc;  /*子盒子也加上边框*/
  display: inline-block;
}

展示效果:


image.png

但这种方法有一个问题!
当页面宽度不够时变会变形


image.png
如果需要保持居中不变形,可以在body上加上min-width,让页面小于一定宽度时出现滚动条。
1.3.2 多个块级元素水平居中(flex-box方法)

用flex布局可以轻松实现多个块级元素水平居中,并且页面宽度不够时不会出现变形,但会调整每个子元素的宽度和高度。

.wrapper {
  display: flex;
  justify-content: center;
}

最终效果:


image.png

宽度不够时:


image.png

2. 垂直居中

2.1.1 单行文本垂直居中(padding填充)

上下填充高度一致即可

span {
  padding: 10px 0;
}
2.1.2 单行文本垂直居中(行高控制)

在外层元素上设置line-height等于height,如果外层元素未设置高度,会以line-height高度作为高度

.wrapper {
  height: 100px;
  line-height: 100px;
}
2.2.1 多行文本垂直居中(padding填充)

同上。

2.2.2 多行文本垂直居中(table-cell展示)

不做详细介绍,不常用,需要可以google

2.2.3 多行文本垂直居中(flex)

注意:此方法只在外层元素定高时有效,且flex布局会将内部子元素变成block类型!!!

.wrapper {
  height: 200px;
  display: flex;
  justify-content: center;
  flex-direction: column;
}
2.3.1 定高块级元素垂直居中

利用子元素相对父级绝对定位和负边距

.wrapper {
  position: relative
}
.child {  /*要居中的块级元素*/
  position: absolute;
  top: 50%;
  height: 100px;  
  margin-top: -50px;  
}
2.3.2 不定高块级元素垂直居中

将2.3.1的margin-top改为

  transform: translateY(-50%);
2.3.3 任意块级元素垂直居中(flex)

会将居中元素内的文本也垂直居中

.wrapper {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

3. 水平垂直居中

3.1 定高

绝对定位+负边距

3.2 不定高

绝对定位+transform: translate(-50%,-50%);

3.3 flex
.wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
}
3.4 grid布局

尚未学习,可自行Google~

相关文章

  • CSS居中方案汇总全家桶

    水平居中垂直 / 垂直居中是前端开发中常见的需求,今天就总结一下各式各样的水平 / 垂直居中,为方面描述,以下代码...

  • css居中方案汇总

    1. 水平居中 1.1 行内或者具有行内元素性质的元素(比如文字或者链接) 使其父元素为块级元素的行内元素水平居中...

  • CSS解决居中问题方案汇总

    在你刚入前端之初,居中这个问题有时候会带给你一些烦恼,特别是垂直居中,这篇博客将从水平居中——垂直居中——整体居中...

  • 元素居中解决方案

    html: css:1水平居中:解决方案1: 解决方案2: 解决方案3: 2垂直居中:解决方案1: 解决方案2: ...

  • CSS 居中的各种方案

    CSS 居中的各种方案 实现居中的样式分为容器 (container) 的样式和需要居中的元素 (item) 的样...

  • css水平、垂直居中的方法

    css居中常用的几种方式 行内元素水平、垂直居中 方案一(不设置居中元素宽高),代码如下:使用display: t...

  • 垂直居中的方法

    行内元素居中 html css before元素居中 html css table-cell居中 css 垂直居中...

  • CSS图片居中(水平居中和垂直居中)

    css图片水平居中 css图片垂直居中 css图片水平垂直居中

  • 【css】居中方案

    前言:根据最近学习的课程,简单总结一下学习到的css左右布局以及居中方案。后期学习深入之后再回来进行css居中的完...

  • CSS居中方案

    简言 CSS居中是前端工程师经常要面对的问题,也是基本技能之一。今天有时间把CSS居中的方案汇编整理了一下,目前包...

网友评论

    本文标题:CSS居中方案汇总全家桶

    本文链接:https://www.haomeiwen.com/subject/obcdeqtx.html