ITPub博客

首页 > 应用开发 > Html/css > CSS未知高度垂直居中

CSS未知高度垂直居中

原创 Html/css 作者:智云编程 时间:2019-06-05 16:48:42 0 删除 编辑


<!doctype html> <html>     <head>       <meta charset="utf-8" />       <meta content="IE=8" http-equiv="X-UA-Compatible"/>       <title> CSS垂直居中</title>       <style type="text/css">         .container{           width:500px;/*装饰*/         height:500px;           background:#B9D6FF;           border: 1px solid #CCC;         }               </style>     </head>     <body>       <h1>垂直居中(table)</h1>       <div>         <table width="100%" height="100%">             <tr>                <td valign="middle">                   <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/205314/r_iebug.jpg" />                </td>            </tr>        </table>     </div>         </body>   </html>

好了,我们看其CSS实现。凡是table能做到的,CSS都能做的,但各浏览器在CSS的差异比较大,因此要兼容它们难度很大。这涉及许多细节,各种流啊,display的表现效果与CSS hack,IE早些年搞了大堆的私有属性,这也有待我们深一步挖掘。我们先看最简单的实现,背景图片法

背景图片法


<!doctype html> <html> <head> <title> CSS垂直居中</title> <style type="text/css"> .container {   width:500px;   height:500px;   line-height:500px;   background:#B9D6FF url(http://images.cnblogs.com/cnblogs_com/rubylouvre/205314/r_iebug.jpg)  no-repeat center center;   border:1px solid #f00;   text-align: center; }   </style>   </head> <body> <h1>垂直居中</h1> <div>      </div> </body> </html>

CSS表达式法

<html>     <head>       <meta charset="utf-8" />       <meta content="IE=8" http-equiv="X-UA-Compatible"/>       <title> CSS垂直居中</title>       <style type="text/css">         .container{           /*IE8与标准游览器垂直对齐*/         display: table-cell;         vertical-align:middle;          width:500px;/*装饰*/         height:500px;           background:#B9D6FF;           border: 1px solid #CCC;         }         .container img{           display:block;/*让其具备盒子模型*/         margin:0 auto;           text-align:center;         margin-top:expression((500 - this.height )/2);/*让IE567垂直对齐 */       }       </style>     </head>     <body>       <h1>垂直居中(CSS表达式)</h1>       <div>         <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/205314/r_iebug.jpg" />       </div>     </body>   </html>

绝对定位法

<!doctype html> <html>   <head>     <meta charset="utf-8" />     <meta content="IE=8" http-equiv="X-UA-Compatible"/>     <title> CSS垂直居中</title>     <style type="text/css">       div {        /*IE8与标准游览器垂直对齐*/         display:table-cell;         vertical-align:middle;         overflow:hidden;         position:relative;         text-align:center;         width:500px;/*装饰*/         height:500px;         border:1px solid #ccc;         background:#B9D6FF;       }       div p {         +position:absolute;         top:50%       }       img {         +position:relative;         top:-50%;         left:-50%;       }        </style>   </head>   <body>     <h1>垂直居中(绝对定位)</h1>     <div>       <p>         <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/205314/r_iebug.jpg" />       </p>     </div>   </body> </html>

display:inline-block法

<!doctype html> <html>   <head>     <meta charset="utf-8" />     <meta content="IE=8" http-equiv="X-UA-Compatible"/>     <title>CSS垂直居中</title>     <style type="text/css">       div {         display:table-cell;         vertical-align:middle;         text-align:center;         width:500px;         height:500px;         background:#B9D6FF;         border: 1px solid #CCC;       }       </style>     <!--[if IE]> <style type="text/css"> i {     display:inline-block;     height:100%;     vertical-align:middle     } img {     vertical-align:middle     } </style> <![endif]-->        </head>   <body>     <h1>垂直居中(inline-block法)</h1>     <div>       <i></i>       <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/205314/r_iebug.jpg" />     </div>   </body> </html>

writing-mode法

<!doctype html> <html>   <head>     <meta charset="utf-8" />     <meta content="IE=8" http-equiv="X-UA-Compatible"/>     <title> CSS垂直居中</title>     <style type="text/css">       div{         width:500px;         height:500px;         line-height:500px;         text-align:center;         background:#B9D6FF;         border:1px solid #f00;       }       div span{         height:100%\9;         writing-mode:tb-rl\9;       }       div img{         vertical-align:middle       }     </style>   </head>   <body>     <h1>垂直居中(writing-mode法)</h1>     <div>       <span>         <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/205314/r_iebug.jpg" />       </span>     </div>   </body> </html>


这里推荐一下我的前端学习qun:784783012,里面都是学习前端的,如果你想制作酷炫的网页,想学习编程。自己整理了一份2019最全面前端学习资料,从最基础的HTML+CSS+JS【炫酷特效,游戏,插件封装,设计模式】到移动端HTML5的项目实战的学习资料都有整理,送给每一位前端小伙伴,有想学习web前端的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69901074/viewspace-2646848/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: CSS多级菜单
请登录后发表评论 登录
全部评论
从事前端5年,希望在贵平台分享前端技巧,知识心得

注册时间:2018-12-03

  • 博文量
    683
  • 访问量
    740668