CSS中的元素居中

水平居中


  • 内联级或类似内联级的元素

    如果需要居中的元素是内联元素(display为inline or inline-*),如text或a时,则可以将其放在块级父元素中,像这样:

.center-children {
  display:block;
  text-align: center;
}

这对display为 inline, inline-block, inline-table, inline-flex等样式的元素有用。

源码:

HTML

<header>  This text is centered.</header>

<nav role=‘navigation‘>  <a href="#0">One</a>  <a href="#0">Two</a>  <a href="#0">Three</a>  <a href="#0">Four</a></nav> 

CSS

body {  background: #f06d06;}

header, nav {  text-align: center;  background: white;  margin: 20px 0;  padding: 10px;}

nav a {  text-decoration: none;  background: #333;  border-radius: 5px;  color: white;  padding: 3px 8px;}
  • 块级元素

如果需要居中的元素是块级元素(display:block),如div时,则可以设置margin-left和margin-right为auto。记得设置     元素的宽度,否则宽度自动为100%,从而不要居中。通常这样设置:

.center-me {
  margin: 0 auto;
}

记住通过设置float样式是不可能让元素居中的。

源码:

HTML

<main>  <div class="center">    I‘m a block level element and am centered.  </div></main>

CSS

.center {  margin: 0 auto;  width: 200px;  background: black;  padding: 20px;  color: white;}
  • 多个块级元素

    如果需要水平居中的元素是多个块级元素(display:block)时,有两种办法可以实现。方法1:将需要居中的多个元素设置为内联块级(display:inline-block)元素,并设置最大宽度(max-width)。方法2:将父元素的display设置为flex,justify-centent设置为center。

源码:

HTML

<main class="inline-block-center">  <div>    I‘m an element that is block-like with my siblings and we‘re centered in a row.  </div>  <div>    I‘m an element that is block-like with my siblings and we‘re centered in a row. I have more content in me than my siblings do.  </div>  <div>    I‘m an element that is block-like with my siblings and we‘re centered in a row.  </div></main>

<main class="flex-center">  <div>    I‘m an element that is block-like with my siblings and we‘re centered in a row.  </div>  <div>    I‘m an element that is block-like with my siblings and we‘re centered in a row. I have more content in me than my siblings do.  </div>  <div>    I‘m an element that is block-like with my siblings and we‘re centered in a row.  </div></main>

CSS

body {  background: #f06d06;  font-size: 80%;}

main {  background: white;  margin: 20px 0;  padding: 10px;}

main div {  background: black;  color: white;  padding: 15px;  max-width: 125px;  margin: 5px;}

.inline-block-center {  text-align: center;}.inline-block-center div {  display: inline-block;  text-align: left;}

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

垂直居中


内联级或类似内联级的元素

单行的内联元素

如果是单行的内联元素,可以通过设置内补丁padding的方式居中。如果由于某种原因不方便采用的话,还有一种小技巧可以达到效果,即将text的line-height等于height。

源码:

HTML

<main>  <a href="#0">We‘re</a>  <a href="#0">Centered</a>  <a href="#0">Bits of</a>  <a href="#0">Text</a></main>

CSS

body {  background: #f06d06;  font-size: 80%;}

main {  background: white;  margin: 20px 0;  padding: 50px;}

main a {  background: black;  color: white;  padding: 40px 30px;  text-decoration: none;}
多行内联元素

多行内联元素居中。可以使用table和cell元素,或者类似的技术。因为cell元素在table中默认垂直居中。

源码:

HTML

<table>  <tr>    <td>      I‘m vertically centered multiple lines of text in a real table cell.    </td>  </tr></table>

<div class="center-table">  <p>I‘m vertically centered multiple lines of text in a CSS-created table layout.</p></div>

CSS

body {  background: #f06d06;  font-size: 80%;}

table {  background: white;  width: 240px;  border-collapse: separate;  margin: 20px;  height: 250px;}

table td {  background: black;  color: white;  padding: 20px;  border: 10px solid white;  /* default is vertical-align: middle; */}

.center-table {  display: table;  height: 250px;  background: white;  width: 240px;  margin: 20px;}.center-table p {  display: table-cell;  margin: 0;  background: black;  color: white;  padding: 20px;  border: 10px solid white;  vertical-align: middle;}

或者使用flex。

源码:

HTML

body {  background: #f06d06;  font-size: 80%;}

table {  background: white;  width: 240px;  border-collapse: separate;  margin: 20px;  height: 250px;}

table td {  background: black;  color: white;  padding: 20px;  border: 10px solid white;  /* default is vertical-align: middle; */}

.center-table {  display: table;  height: 250px;  background: white;  width: 240px;  margin: 20px;}.center-table p {  display: table-cell;  margin: 0;  background: black;  color: white;  padding: 20px;  border: 10px solid white;  vertical-align: middle;}

CSS

body {  background: #f06d06;  font-size: 80%;}

div {  background: white;  width: 240px;  margin: 20px;}

.flex-center {  background: black;  color: white;  border: 10px solid white;  display: flex;  flex-direction: column;  justify-content: center;  height: 200px;  resize: vertical;  overflow: auto;}.flex-center p {  margin: 0;  padding: 20px;}

块级元素

如果知道父元素的高度,但是不知道要居中元素的高度,那么可以这样

.parent {
  position: relative;
  height:150px;
}
.child {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
 }

或这样

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

水平垂直居中

使用transform:translate

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

使用flex

.parent {
  position: relative;}
.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

结论



现在你应该会使用CSS居中元素了吧!!

时间: 2024-10-24 19:32:32

CSS中的元素居中的相关文章

【原】谈谈css中关于元素定位的属性(positon&z-index)

position position主要是4种设定: static(默认)如果不设置,默认就是staitc元素.其实就是没有position设定,DOM流安排在哪里就是哪里.所有的相关于位置的设定均无效,意味着left, right, z-index等属性设置了也是白设. relative如果只是设置postion: relative; 和static并没有视觉上的区别,但是,一旦设定了,就指定了对应DOM元素"被定位"了,之后就可以设置一些诸如right,left之类的属性. abso

HTML和CSS设置动态导航以及CSS中伪元素的简单说明

HTML页面代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Test</title> 5 <meta charset="utf-8"> 6 <link rel="stylesheet" type="text/css" href="style.css"> 7 <script type=&qu

DIV+CSS中让布局居中_背景图片居中_文字内容居中

DIV+CSS中让布局居中_背景图片居中_文字内容居中

CSS中的各种居中方法总结

CSS中的居中可分为水平居中和垂直居中.水平居中分为行内元素居中和块状元素居中两种情况,而块状元素又分为定宽块状元素居中和不定宽块状元素居中.下面详细介绍这几种情况. 一.水平居中 1.行内元素居中 顾名思义,行内元素居中是只针对行内元素的,比如文本(text).图片(img).按钮等行内元素,可通过给父元素设置 text-align:center 来实现.另外,如果块状元素属性display 被设置为inline时,也是可以使用这种方法.但有个首要条件是子元素必须没有被float影响,否则一切

HTML CSS 中DIV内容居中汇总

转载博客(http://www.cnblogs.com/dearxinli/p/3865099.html) (备注:DIV居中情况,网上谈到也比较多,但是这篇文字,相对还是挺全面,现转载,如果冒犯,还望博主见谅) 在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valig

CSS中的元素分类

元素是文档结构的基础,在CSS中,每个元素生成了一个包含了元素内容的框(box,也译为"盒子").但是不同的元素显示的方式会有所不同,例如<div>和<span>就不同,而<strong>和<p>也不一样.在文档类型定义(DTD)中对不同的元素规定了不同的类型,这也是DTD对文档之所以重要的原因之一. 1. 替换和不可替换元素 从元素本身的特点来讲,可以分为替换和非替换元素. 替换元素 替换元素就是浏览器根据元素的标签和属性,来决定 元素

CSS中设置元素的圆角矩形

圆角矩形介绍 在CSS中通过border-radius属性可以实现元素的圆角矩形. border-radius属性值一共有4个,左上.右上.左下.右下. border-radius属性值规则如下:第一个值为左上.第二个值为右上.第三个值为左下.第四个值为右下. 假如border-radius属性值都是一致的我可以设置一个属性值即可. 圆角矩形实践 圆角矩形基本使用方式 <!DOCTYPE html> <html lang="en"> <head> &

浅谈css中一个元素如何在其父元素居中显示

css如何垂直居中一个元素的问题已经是一个老生常谈的问题了.不管对于一个新手或者老手,在面试过程中是经常被问到的.前两天在看一个flex的视频教程,当中提到了有关元素的居中问题,所以今天小编就来扒一扒几种常见的方式.不足之处请大家批评指正(所有的代码都是自己亲手敲过可用的) 1.水平居中(margin:0 auto;) 关于这个,大家应该是最不陌生的,不管是在培训班还是自己自学的话 .这个应该是老师讲的第一个方法了(水平方向上),但是其有一个前提,就是被包裹的元素不能有浮动的属性.否则的话这个属

对css中clear元素的理解

clear:left;表示左侧不能有浮动元素. clear:right;表示右侧不能有浮动元素. clear:both;表示左右两侧都不能有浮动元素. 但在使用时,还得考虑css优先级问题.相同类型选择器制定的样式,在样式表文件中,越靠后的优先级越高 . 当所有元素的clear属性都设为right时,由于优先级的原因,并不是所想的那样:右侧没有浮动元素,而是右侧出现了浮动元素. 比如下面的代码: <html> <head> <style type="text/css