关于居中

根据块状元素和行内元素的特性来区分

块状元素:主要特点是能占据一行,高度行高内边距外边距能控制,能容纳内联元素和其他块状元素

行内元素:不能独占一行,随内容大小而定。无法设置宽高,设置的外边距只能在左右上起作用,上下没有作用

所以要根据元素的特性做的居中

父元素是块状元素,子元素是行内元素

水平居中:

给父元素添加text-align:center

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

.parent{

    width200px;

    height200px;

    text-aligncenter;

    background#3cffff;

}

.child{

   background#f9ffc3;

}

<div class="parent">

     <span class="child" >苗呜呜</span>

</div>



垂直居中:

子元素上添加line-height:父元素的高度

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

.parent{

    width200px;

    height200px;

   }

   .child{

    line-height200px;

   }

 <div class="parent">

     <span class="child" >苗呜呜</span>

   </div>

   



以上两个方法合在一起就是行内元素的垂直居中了

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

.parent{

  width200px;

  height200px;

  background#3cffff;

  text-align:center;

}

.child{

  line-height200px;

  background#f9ffc3;

}

<div class="parent">

  <span class="child" >苗呜呜</span>

</div>



如果是子元素是img,img元素比较特殊,属于替换内联元素, line-height对img没有效果,无法实现垂直居中

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

.parent{

  width:1000px;

  height600px

  background#3cffff;

  text-aligncenter;

   }

.child{

  vertical-alignmiddle;

}

.child2{

  height100%;

  width0;

}

<div class="parent">

  <img class="child" src="http://f5.topitme.com/5/93/a8/115632420139ea8935o.jpg">

  <img class="child2">

</div>



css为child2的img是起到辅助作用,不要写src,否则会多一个边框,其实使用其他行内元素也行,比如span,只要把该元素的高度设置为父元素一样的高度就行了。vertical-align这个属性的特点,它是相对兄弟级行高(line-height)来定位,它只对行内样式有效。下面设置一个img只是撑开父元素的行高。

关于内联元素td的垂直水平居中

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

.parent{

  width:200px;

  height:200px;

  text-aligncenter;

  background#3cffff;

}

<table class="parent">

  <tr>

    <td>~喵了个咪~</td>

  </tr>

</table>



用table-cell ,文字和图片居中,但是background是铺满整个父元素,而不是居中

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

.parent {

    width1000px;

    height600px;

    display: table;

    text-aligncenter;

    background#3cffff;

}

.child {

    displaytable-cell;

    vertical-alignmiddle;

    margin0 auto;

    background#f9ffc3;

}

<div class="parent">

  <div class="child">~喵了个咪~</div>

</div>



父元素是块状元素,内元素是块状元素

1.水平居中

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

.parent{

width:1000px;

height:600px;

position:relative;

background#3cffff;

}

.child{

width:200px;

height:200px;

margin0 auto;

background#f9ffc3;

}

<div class="parent">

    <div class="child"></div>

</div>



2.如果要让上面的垂直水平居中的话,要多加一个position:absolute,left:0;right:0;top:0;bottom:0;

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

.parent{

  width:1000px;

  height:600px;

  position:relative;

  background#3cffff;

}

.child{

  width:200px;

  height:200px;

  marginauto;

  position:absolute;

  left:0;

  right:0;

  top:0;

  bottom:0;

  background#f9ffc3;

}

<div class="parent">

    <div class="child"></div>

</div>



3.借助其他元素实现垂直水平居中

记得把辅助元素放在子元素前面哈。

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

.parent{

    positionrelative;

    width:1000px;

    height:600px;

}

.child-2{

    height50%;

    margin-bottom-100px/*是child的(padding+height)/2*/

}

.child{

    width:200px;

    height:200px;

    marginauto;

}

<div class="parent ">

     <div class="child-2"></div>

     <div class=" child"></div>

</div>



4.垂直居中 行内元素 块状元素都可以

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

.parent{

  displayblock;

  positionrelative;

  width:1000px;

  height:600px;

  background#3cffff;

}

.parent:after{

  display: inline-block;

  vertical-alignmiddle;

  content‘‘;

  height100%;

  background#f9ffc3;

}

.child{

  display: inline-block;

  vertical-alignmiddle;

}

<div class="parent">

     <div class="child"></div>

</div>



5.弹性盒式布局  ie11以上才支持  只针对父元素做了设置,子元素不需要设置。

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

.parent{

  width:1000px;

  height:1000px;

  display: -webkit-box;

  display: -moz-box;

  display: -ms-flexbox;

  display: -webkit-flex;

  display: flex;

  -webkit-align-items:center;

          align-items:center;

  -webkit-justify-content:center;  /*适用于父元素*/

          justify-content:center;

          background#3cffff;

}

.child{

  width:200px;

  height:200px;

  background#f9ffc3;

}

<div class="parent">

     <div class="child"></div>

</div>



6.使用margin-top;

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

.parent{

  positionrelative;

  width:1000px;

  height:600px;

  background#3cffff;

}

.child{

  width:200px;

  height:200px;

  positionabsolute;

  top:50%;

  left0;

  right0;

  marginauto;

  margin-top-100px;

  background#f9ffc3;

}

<div class="parent">

     <div class="child"></div>

</div>



7.根据上面还有一种传统的大家都通用的办法,这个办法具有兼容性,兼容到ie6

父元素的position和子元素的position不能相同,要么父元素为absolute,子元素为relative,要么父元素为relative,子元素为absolute;

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

.parent {

  width1000px;

  height600px;

  background#c3ffff;

  positionrelative;

  /*必须加上,否则child不能居中*/

}

    

.child {

  width200px;

  height200px;

  margin-100px 0 0 -100px;

  positionabsolute;

  left50%;

  top50%;

  background#f9ffc3;

}

<div class="parent">

     <div class="child"></div>

</div>



8.用transform,只设置子元素

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

.parent{

  width:1000px;

  height:600px;

  background#3cffff;

}

.child{

  width:200px;

  height:200px;

  position:relative;

  top50%;

  left50%;

  transform:translate(-50%,-50%);

  -webkit-transform:translate(-50%,-50%); 

  background#f9ffc3;

}

<div class="parent">

     <div class="child"></div>

</div>



9.如果居中是一张图片的话,其实用background也就可以了

---------------------举一个栗子---------------------


?


1

2

3

4

5

6

.parent{

  backgroundurl(http://f5.topitme.com/5/93/a8/115632420139ea8935o.jpg) no-repeat center  center #3cffff;

  width:1000px;

  height:600px;

}

<div class=" parent"></div>



就是这样,我已知的居中方法就这些,如果有人还有更好的方法或者我上面有错的地方及时提出哈~

时间: 2024-10-13 19:45:28

关于居中的相关文章

CSS 居中

一.水平或垂直居中 1. 单行内容垂直居中 /*height = line-height*/ .center{ height: 4em; line-height: 4em; overflow: hidden; /*保护布局,非必须*/ } 支持:所有块级.内联元素.所有浏览器 缺点:只能显示一行 2. div水平居中 <!--html代码--> <div class="center">div居中了</div> body{ text-align:cen

布局小窍门之----让头部和主干内容居中

平时写布局的时候要保证头部标题或者横向的菜单和主体内容居中,可以将定义一个样式,比如: <style> .container{ width: 980px; margin: 0 auto; } </style> 头部和主体部分样式都放在带有该样式的标签里: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <titl

页面无法居中的原因

网页制作:margin:0 auto;无法居中解决方法 很多初学制作网页的朋友,可能会遇到的一个常见问题,就是在CSS中加了margin:0 auto;却没有效果,不能居中的问题!margin:0 auto;的意思就是:上下边界为0,左右根据宽度自适应!其实就是~~水平居中的意思,呵呵!小一在这里说两个典型的错误引起的不能居中的问题: 1.没有设置宽度<div style="margin:0 auto;"></div>看看上面的代码,根本没有设置DIV的宽度,如

&lt;转载&gt;使CSS文字图片div元素居中方法之水平居中的几个方法

文字居中,文字垂直居中水平居中,图片居中,图片水平居中垂直居中,块元素垂直居中?当我们在做前端开发是时候关于css居中的问题是很常见的.情 况有很多种,不同的情况又有不同的解决方式.水平居中的方式解决的时候相对来说通过css比较容易设置,垂直居中相对比较棘手. 先来说一下水平居中的不同情况与不同解决方法吧. 1文本,图片等行内元素的水平居中方法呢比较简单.直接给父元素设置一个text-align:centent属性就可以实现元素的水平居中了. 2 确定宽度的块级元素水平居中怎么设置呢?设置方法也

div块上下左右居中

实现div块的上下左右居中: <!DOCTYPE html> <html> <head>     <meta charset="utf-8" />     <title>div块上下左右居中</title> </head> <body>     <div id="div2">     </div>     <style>     *{p

Js打开网页后居中显示

使用JavaScript定义打开网页后居中显示,并可为窗口设置大小,使用“window.open”方法打开新窗口:先来看完整的代码及调用方法: <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>打开居中的窗口</title> <script language="javascript"> //参数-url:要打开的网站,winname:打开后

Js配合CSS实现的图片居中

CSS图上居中很好实现,但万恶的浏览器之间各不相让,搞的不兼容,还好我们有让其兼容的办法,那就是结合JS来实现,这样各个浏览器都听话多了.本例就是CSS结合JavaScript实现的图片垂直.水平方向都居中,也不是上下左右居中,位于网页的正中央,代码如下: <body onresize="myLoad()" > <div id="xuanma" style="Z-INDEX: 1; LEFT: 0px; POSITION: absolut

css未知宽高的盒子div居中的多种方法

不知道盒子大小.宽高时,如何让盒子上下左右居中? 应用场景:比如上传图片时,并不知道图片的大小,但要求图片显示在某盒子的正中央. 方法1:让4周的拉力均匀-常用 <!-- Author: XiaoWen Create a file: 2017-01-13 13:46:47 Last modified: 2017-01-13 14:05:04 Start to work: Finish the work: Other information: --> <!DOCTYPE html>

CSS布局奇淫技巧之--各种居中

居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明外,都是兼容IE6+.谷歌.火狐等主流浏览器的. 先来说几种简单的.人畜无害的居中方法 1. 把margin设为auto 具体来说就是把要居中的元素的margin-left和margin-right都设为auto,此方法只能进行水平的居中,且对浮动元素或绝对定位元素无效. 2.使用 text-ali

CSS——&lt;img&gt;标签图片适配居中问题

图片标签为<img>,为单闭合标签,使用时<img src="./im.png" alt="花"/> 必选属性: alt    图像的替代文本 src   规定显示图像的URL img属于行内替换元素,可以使用height/width/padding/margin均可以使用,效果等效于块元素.如果设定了width但未设置height,那么img的height会根据比例缩放. 如何让图片在div中居中显示? 1.对div使用text-align