css中解决vertical-align: middle垂直居中无效方法

 div水平居中很容易,设置css样式 text-align: center;  就可以了。

垂直居中也有个属性 vertical-align: middle; 这个属性普通设置是没有效果的。

第一种方法:通过一个空白图片可以达到垂直居中的效果。

 

 代码如下 复制代码

<html>
 <title>图片居中</title>
 <style>
/*定义垂直居中*/
#test * {
 margin: 0px;
 padding: 0px;
 vertical-align: middle;
}

/*定义div大小,以及水平居中*/
#test {
 background: #fff000;
 width: 500px;
 height: 500px;
 text-align: center;
}

/*辅助图片高度填满div,宽度为0,所以看不到这个图片*/
#img {
 width: 0px;
 height: 100%;
}
</style>
 <body>
  <div id="test">
  <!--辅助图片 -->
   <img alt="" src="" id="img">
   <!--要居中的图片 -->
    <img alt="" src="skin/images/top/logo.jpg">
   </div>
 </body>
</html>

 

个人觉得vertical-align: middle 是相对于左边的高度垂直居中的,我给左边一个填满div的图片,就可以实现垂直居中了。

第二种方法:往div里面加表格。

 

 代码如下 复制代码
<html>
    <style>
#a {
    background: #fff000;
    width: 500px;
    height: 500px;
    overflow: hidden;
    text-align: center;
}
</style>
    <body>
        <div id="a">
            <table width="100%" height="100%">
                <tr>
                    <td align="center">
                        <img src="skin/images/top/logo.jpg" />
                    </td>
                </tr>
            </table>
        </div>
    </body>
</html>

在表格里就很容易设置居中了。

经测试,这两种做法都没有浏览器不兼容的问题。推荐用第一种方法。

另外,说一下overflow: hidden; 这个属性,当图片大小超出div的大小时,会影藏超出的部分。不设置的话,图片会全部显示,覆盖在div上。

时间: 2024-10-14 19:28:28

css中解决vertical-align: middle垂直居中无效方法的相关文章

CSS中div高度内容垂直方向居中方法总结

让div中的内容垂直居中,无非有以下几种方法,等我一一列举:  一.行高(line-height)法  如果要垂直居中的只有一行或几个文字,那它的制作最为简单,只要让文字的行高和容器的高度相同即可,比如:   代码如下 复制代码 p { height:30px; line-height:30px; width:100px; overflow:hidden; }   这段代码可以达到让文字在段落中垂直居中的效果.  二.内边距(padding)法  另一种方法和行高法很相似,它同样适合一行或几行文

css实现未知尺寸元素水平垂直居中的方法

1.table表格 <table><tbody> <tr> <td>水平垂直居中的随意内容</td> <td>水平垂直居中的随意内容</td>-类似这样的, 垂直居中对其来说,也是非常简单的事.table cells 的 vertical-align:middle 就可以直接解决.所以实现起也来只要这样一行代码: td{ vertical-align:middle; } 2.display:table-cell实现  代码

CSS中以图片替换文字的表现方法

css 今天有个朋友做网页的时候遇到个问题:想保留链接的背景,但又要链接里的文字消失!可是弄了半天一直没办法把这个文字去掉.我想很多学标准的朋友都遇到过这个问题,这里我把常用的几个方法写出来,把思路也讲一下,希望能帮助刚开始学习的朋友. "以图换字"就是用图片替换文字表现.我们都知道,文字在浏览器里的表现形式是很差的,会有锯齿,没办法圆润还有没办法做很多效果.一般情况下网页的内容部分是不需要做效果的,但是在WEB标准中对于LOGO.标题,常常需要用到这些.用表格来做的话我们只是在某个地

css中ie7/ie6按钮文字垂直居中的兼容性解决方法

这2天接手了一个离职的同事手头上的工作,发现了一个通用按钮样式在IE下存在兼容性问题.   先上代码  代码如下 复制代码 display:inline-block;line-height:18px;margin-left:5px;border:1px #c4c3c3 solid;background:url(../images/bg_my3.gif) 0 0 repeat-x;text-align:center; cursor:pointer; width:45px 本身我们想要的效果,也就是

css中解决ie6下背景图片底部不对齐错位办法

先来两段代码,一段是HTML代码,一段是CSS代码,下面的分析都是在这两段代码的基础上进行. HTML代码:  代码如下 复制代码 <!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/1

css中文字图片背景图居中的方法汇总

一.让网页所有DIV标签内文字居中   -   实现所有DIV内字体居中实例完整网页源代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title>div字体居中实例</title> <style> div{text-align:center

css中去除inline-block元素间间距多种方法分享

真正意义上的inline-block水平呈现的元素间,换行显示或空格分隔的情况下会有间距,很简单的个例子: <input /> <input type="submit" /> 间距就来了~~ 我们使用CSS更改非inline-block水平元素为inline-block水平,也会有该问题: .space a { display: inline-block; padding: .5em 1em; background-color: #cad5eb; } <d

关于css中不同浏览器兼容详解(1/6)

由于浏览器的开发商越来越多,关于css教程兼容也是各位设计师,站长们讨论的热门话题了,下面我们总结了一些学用中的css兼容问题的. 1.div的垂直居中问题 vertical-align:middle;将行距增加到和整个div一样高line-height:200px;然后插入文字,就垂直居中了.缺点是控制内容不要换行 2 margin加倍的问题 设置为float的div在ie下设置的matgin会加倍.这是ie6都存在的bug.解决方案是在这个div里面加上display:inline;例如 <

IE9中CSS line-height的文字垂直居中无效

在IE9常常会遇到写的DIV+CSS网页,文字有时不能垂直居中使用line-height根本无效,即使可以设置IE浏览器的兼容模式,但对于访客而言不可能每个人都会去设置兼容模式浏览,只能算是掩耳盗铃的解决办法,怎么办呢?只好搜索了,百度了一下才找到原因,原来IE9不支持line-height的原因是中文ie9不支持英文字体,而我刚好使用的是英文字体. 在IE9看见自己使用line-height设置垂直居中文字不能垂直居中,这是与你设置字体有关,通常大家习惯设置  代码如下 复制代码 font-f