Div 与 CSS 如何实现上下居中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Div 与 CSS 如何实现上下居中相关的知识,希望对你有一定的参考价值。

Div 与 CSS 如何实现上下居中 左右居中

方法1:

.parent 
          width:800px;
          height:500px;
          border:2px solid #000;
          position:relative;

 .child 
            width:200px;
            height:200px;
            margin: auto;  
            position: absolute;  
            top: 0; left: 0; bottom: 0; right: 0; 
            background-color: red;

   

方法2:

.parent 
            width:800px;
            height:500px;
            border:2px solid #000;
            display:table-cell;
            vertical-align:middle;
            text-align: center;
        
        .child 
            width:200px;
            height:200px;
            display:inline-block;
            background-color: red;
        


方法3:

.parent 
            width:800px;
            height:500px;
            border:2px solid #000;
            display:flex;
            justify-content:center;
            align-items:center;
        
        .child 
            width:200px;
            height:200px;
            background-color: red;
        


方法4:

.parent 
            width:800px;
            height:500px;
            border:2px solid #000;
            position:relative;
        
        .child 
            width:300px;
            height:200px;
            margin:auto;
            position:absolute;/*设定水平和垂直偏移父元素的50%,
再根据实际长度将子元素上左挪回一半大小*/
            left:50%;
            top:50%;
            margin-left: -150px;
            margin-top:-100px;
            background-color: red;
        

参考技术A 你说的应该是垂直居中吧,要想让元素垂直居中,得要看这是什么元素,既然说的是div,那么默认就是块状元素。值得注意的是,我们说元素垂直居中,一般都是说相对于其父元素垂直居中,父元素先给相对定位,子元素的css可以这么设置:divposition:absolute;top:50%; transform:translate(0,-50%);,这样以后基本就可以相对于父元素垂直居中了,如果还想要水平居中,道理是一样的。需要提醒的是,第一个50%是基于父元素的高度,第二个50%是基于子元素自身Y轴方向,即也是高度的一半。 参考技术B <div aling="center" valign="middle" style="margin-left:auto; margin-right:auto; margin-top:auto; margin-buttom:auto"> </div>你问题问的不清楚,不知道这是不是你要的效果,如果不是再补充提问,我再帮你看看 参考技术C 里面内容是什么?
常见的有 根据高度 例如 height:80px; line-height:80px;
还有定位 如 top:50%;margin-top: 负内元素的高的半值
参考技术D 上下居中height:28px;line-height:20px; 左右居中margin:auto;

用CSS如何实现单行图片与文字垂直居中

vertical-align实现单行图片与文字垂直居中:
vertical-align
初始值: baseline(缺省值)
可否继承:否
适用于: 内联元素
说明:vertical-align:baseline使元素的基线同父元素的基线对齐。
警告:vertical-align不能影响表格单元中的内容的对齐,对于块元素中的内容也一样。

文字不多,但时常有人范错误,有人说我用了为什么没有效果呢?首行看一下他的代码:
.stylevertical-align:middle;.....
HTML:<div class="style"><img src="地址" />...<div>
  
分析:从上面的代码可以看出错误就是把样式应用在块元素中了

我们只需要改样式为:
.style imgvertical-align:middle;.....

如果STYLE中有其它如INPUT或其它内联元素可写成:
.style img,.style.inputvertical-align:middle;.....

.style *vertical-align:middle;.....
/*在不影响其它元素的情况下使用这个通配符*/
  
以上是在没有设置高度/行高的事情下,如果加入了高度和行高的事情下FF可以支持,IE6以下则不完全支持,看以下测试结果。(为了增加明显的效果对图片适当增加了高度)

总结:对于单行图片文字垂直居中(有图片的情况下)
1.当没有高度行高时,我们只要简单的对内联元素应用vertical-align:middle;就可以了。此外对于一个图片和文字的高度相差无几的,不用这个样式也是可以的。
2.对于有行高或有行高+高度的,FF可以正确显示,ie6失效。所以也只能对IE6以下版本使用KACK了!现在IE7已经改正了这个错误。
3.对2补充一下,可以用不定高度,用上下补白的方法,这样就可以兼容IE6了。
参考技术A 这个问题是在做页面中经常会遇到的问题,首行我们先看一下最基础的的吧!以下选自(CSS权威指南)以下为引用的内容:vertical-align初始值: baseline(缺省值)可否继承:否适用于: 内联元素说明:vertical-align:baseline使元素的基线同父元素的基线对齐。警告:vertical-align不能影响表格单元中的内容的对齐,对于块元素中的内容也一样。以下为引用的内容:.stylevertical-align:middle;.....HTML:<div class="style"><img src="地址" />...<div>分析:从上面的代码可以看出错误就是把样式应用在块元素中了我们只需要改样式为以下为引用的内容:.style imgvertical-align:middle;.....如果STYLE中有其它如INPUT或其它内联元素可写成以下为引用的内容:.style img,.style.inputvertical-align:middle;.....或.style *vertical-align:middle;...../*在不影响其它元素的情况下使用这个通配符*/以上是在没有设置高度/行高的事情下,如果加入了高度和行高的事情下FF可以支持,IE6以下则不完全支持,看以下测试结果。(为了增加明显的效果对图片适当增加了高度)总结:对于单行图片文字垂直居中(有图片的情况下)1.当没有高度行高时,我们只要简单的对内联元素应用vertical-align:middle;就可以了。此外对于一个图片和文字的高度相差无几的,不用这个样式也是可以的。2.对于有行高或有行高+高度的,FF可以正确显示,ie6失效。所以也只能对IE6以下版本使用KACK了!现在IE7已经改正了这个错误。3.对2补充一下,可以用不定高度,用上下补白的方法,这样就可以兼容IE6了。本回答被提问者采纳 参考技术B

利用css的text-align:center代码来实现。

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>图片文字垂直居中</title>

<style>

.cont p

text-align:center

</style>

</head>

<body>

<div class="cont">

<p><img src="这里是图片url" /></p>

<p>这里是文字</p>

</div>

</body>

</html>

效果图:

参考技术C 以下选自(CSS权威指南)

以下为引用的内容:
vertical-align
初始值: baseline(缺省值)
可否继承:否
适用于: 内联元素
说明:vertical-align:baseline使元素的基线同父元素的基线对齐。
警告:vertical-align不能影响表格单元中的内容的对齐,对于块元素中的内容也一样。

  
文字不多,但时常有人范错误,有人说我用了为什么没有效果呢?首行看一下他的代码。

以下为引用的内容:
.stylevertical-align:middle;.....
HTML:<div class="style"><img src="地址" />...<div>

  
分析:从上面的代码可以看出错误就是把样式应用在块元素中了
我们只需要改样式为

以下为引用的内容:
.style imgvertical-align:middle;.....

  
如果STYLE中有其它如INPUT或其它内联元素可写成

以下为引用的内容:
.style img,.style.inputvertical-align:middle;.....

.style *vertical-align:middle;.....
/*在不影响其它元素的情况下使用这个通配符*/

  
以上是在没有设置高度/行高的事情下,如果加入了高度和行高的事情下FF可以支持,IE6以下则不完全支持,看以下测试结果。(为了增加明显的效果对图片适当增加了高度)

以上是关于Div 与 CSS 如何实现上下居中的主要内容,如果未能解决你的问题,请参考以下文章

如何实现div的上下左右都居中?

css如何实现span在div中水平居中

如何实现单行与多行文字的居中

Css使Div自适应居中

CSS实现DIV水平居中和上下垂直居中

用CSS如何实现单行图片与文字垂直居中