几种垂直居中的方式

一、内容高度不固定,容器高度固定,要使内容在容器中垂直居中

a.使用空标签

<div class="cont">
    <div class="inner">比较满意比较满意比较满意</div><div class="v">cssHack</div>
</div>

* {
    margin: 0;
    padding: 0;
}
.cont {
    background-color: #ccc;
    font-size: 24px;
    height: 150px;
    text-align: center;
    overflow: hidden;
    width: 280px;
}
.cont .inner,
.cont .v {
    display: inline-block;
    zoom: 1;*display: inline; /* 用于触发支持IE67 inline-block */
}
.cont .inner {
    line-height: 1.8;
    padding: 0 4px 0 5px;
    vertical-align: middle;
    width: 262px;
}
.cont .v {
    line-height: 150px;
    text-indent:-9999px;
    width: 1px;
}

效果:

b.使用伪元素

<div class="cont">
    <div class="inner">比较满意比较满意比较满意</div>
</div>

css代码是:

.cont:before{
    content: "";
    display: inline-block;
    height: 100%;//撑开父容器
    vertical-align: middle;//居中
}
.cont>.inner{
  display: inline-block;
  width: 90%;//这里设置宽度90%是因为两个同级行内块在一起的时候,之间会有3px左右的间隙,如果设置100%,在父容器固定宽度里肯定是放不下两个行内快的,就对导致div.inner换行,从而不能垂直居中
}

使用这种方法的好处是:减少额外的html标签。对于有代码洁癖的人来说,这种方法很不错,不过这种伪元素似乎不兼容ie6,7。

二、子容器要在父容器中垂直居中,子容器高度固定

这种情况可以采用相对定位和绝对定位来完成

给父容器相对定位,子容器绝对定位,子容器top:50%,margin-top:-自身高度的一半

<div class="cont">
    <div class="inner"></div>
</div>
.cont{
    position: relative;
    width:150px;
    height: 300px;
    background-color: #eee;
}
.cont>.inner{
    position: absolute;
    top: 50%;
    margin-top: -50px;
  //以下注释内容为水平垂直居中
  /*top: 50%;
  left:50%;
  margin-left:-50px;//负自身宽度的一半
    margin-top: -50px;//负自身高度的一半*/
    width: 100px;
    height: 100px;
    background-color: #000;
}

三、绝对定位元素的居中--margin:auto(ie8+以及其他浏览器可用)

.cont{
    position: relative;
    width:150px;
    height: 300px;
    background-color: #eee;
}
.cont>.inner{
    position: absolute;
  top:0;
  bottom:0;
  margin: auto 0;
  //以下注释的为水平垂直居中
    /*top: 0;
    bottom:0;
    left: 0;
    right: 0;
    margin: auto;*/
    width: 80%;
    height: 100px;
    background-color: #000;
}

未完待续......

  

时间: 2024-10-14 18:51:07

几种垂直居中的方式的相关文章

几种垂直居中的方式及CSS图片替换技术

由于块级元素的高度是可以设置的,所以对于块级元素的垂直居中比较简单. 方法一: 在不定高的情况下,把元素的上下内边距设为同一个值即可实现,即padding :10px   0; 以上方法针对块级元素和行内元素都可以. 方法二: line-height:(只针对行内元素可行) 将行高设置成和父元素的高度相等,就可以实现行内元素的垂直居中了. 由于行内元素的对其方式是基线对齐,所以当图片和文字位于一列时,呈现出来的效果往往不是我们想要看到的样子, 我们要想将里面的元素都实现垂直居中,就应该分别对每个

ASP.NET MVC下的四种验证编程方式[续篇]

在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注ValidationAttribute特性"."让数据类型实现IValidatableObject或者IDataErrorInfo"),那么在ASP.NET MVC框架内部是如何提供针对这四种不同编程方式的支持的呢?接下来我们就来聊聊这背后的故事. 一.ModelValidator与ModelVal

LVS:三种负载均衡方式比较+另三种负载均衡方式

转:http://blog.csdn.net/u013256816/article/details/50705578 什么是LVS? ??首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的.高可用的虚拟服务器.整个服务器集群的结构对客户是透明的,而且无需修

android五种数据存储方式

在Android中提供了如下五种数据存储方式: SharedPreferences 文件存储 SQLite数据库方式 内容提供器(ContentProvider) 网络存储 下面具体介绍一下这五种数据存储方式的用法. 1. SharedPreferences SharedPreferences是android平台上的一个轻量级存储类,主要保存一些常用的配置信息.可以保存long.int.String类型数据. SharedPreferences以键值对方式读取和存入,最终会以XML方式保存数据,

HBuilder开发App教程08-几种页面打开方式

说明 上节说了list页面的实现,其中关于几种页面的打开方式没有详细述说, 本节详细述说下几种页面打开方式的区别. 几种打开页面的方式 1.初始化时创建子页面 2.直接打开新页面 3.预加载页面 示例 1.初始化时创建子页面 mui.init({ subpages: [{ url: your - subpage - url, //子页面HTML地址,支持本地地址和网络地址 id: your - subpage - id, //子页面标志 styles: { top: subpage - top

jQuery自动补全插件使用,三种获取数据源方式

jQuery有很多很多的已经实现,很漂亮的插件,autocomplete就是其中之一.jQuery ui autocomplete主要支持字符串Array.JSON两种数据格式. 主要参数: Source:数据源,类型为String.Array.Function,其中String为ajax请求的服务器端地址,返回Array/JSON格式,Array即为数组,静态定义到页面中的数据,下面会有具体的  demo, Function(request,response):通过request.term获得

三种加载方式

重点总结:    即:三种加载方式    1>传统加载方式------默认路径:tomcat/bin/目录    2>使用ServletContext对象-----默认路径:web应用(工程)目录    3>使用类加载器------默认路径:WEB-INF/classes/目录 一.利用ServletContext对象读取资源文件--默认目录为:工程(应用)路径                重点方法:                        InputStream getReso

.NET中的三种接口实现方式

摘自:http://www.cnblogs.com/zhangronghua/archive/2009/11/25/1610713.html 一般来说.NET提供了三种不同的接口实现方式,分别为隐式接口实现.显式接口实现.混合式接口实现.这三种方式各有各的特点. 首先来看隐式接口实现,这恐怕是我们使用最多的一种接口实现,因为隐匿接口实现是.NET的默认接口实现方式.下面让我们来看一个隐式接口实现的例子: using System; internal class MyClass { public

即时通讯软件开发 几种网络编程方式

即时通讯软件开发 几种网络编程方式: ISAPI.CGI.WinInet.Winsock 它们之间的区别: 1)ISAPI主要是开发基于浏览器客户端与服务器端程序.效率比CGI方式高,而且也扩展了CGI没有的一些功能.(基于TCP/IP模型中的应用层) 2) CGI主要是开发基于浏览器客户端与服务器端程序.(基于TCP/IP模型中的应用层) 3) WinInet主要是开发客户端程序.(基于TCP/IP模型中的应用层) 4) Winsock主要是基于socket来开发客户端与服务器端程序.(基于T