CSS未知高度垂直居中

作者 : 开心源码 本文共3484个字,预计阅读时间需要9分钟 发布时间: 2022-05-12 共216人阅读

<!doctype html><html lang="en">    <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 class='container'>        <table width="100%" height="100%">            <tr>               <td align="center" 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 class="container">    </div></body></html>

CSS表达式法

<html lang="en">    <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 class="container">        <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/205314/r_iebug.jpg" />      </div>    </body>  </html> 

绝对定位法

<!doctype html><html lang="en">  <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 class="container">      <p>        <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/205314/r_iebug.jpg" />      </p>    </div>  </body></html>

display:inline-block法

<!doctype html><html lang="en">  <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 class="container">      <i></i>      <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/205314/r_iebug.jpg" />    </div>  </body></html>

writing-mode法

<!doctype html><html lang="en">  <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 class="container">      <span>        <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/205314/r_iebug.jpg" />      </span>    </div>  </body></html>

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

点击:加入

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » CSS未知高度垂直居中

发表回复