还记得我们折腾过的居中么?

虽然div中内容上下居中的问题已经是一个比较古老的话题,但是最近发现还是有很多前端开发者在询问如何实现。其实网络上已经有很多资料和案例了,我这里再总结一下几个比较常见的处理方式。

情形一:div限高,内容长度限一行

1 .v-align {
2     margin: 0 auto;
3     width: 200px;
4     height: 80px;
5     text-align: center;
6     line-height: 80px;
7     border: 1px solid #ddd;
8 }
1 <div class="v-align">我的内容只能有一行。</div>

情形二:div限高,内容不限

 1 .v-mult {
 2     margin: 0 auto;
 3     width: 200px;
 4     height: 100px;
 5     border: 1px solid #ddd;
 6     overflow: hidden;
 7 }
 8 .v-mult .empty,
 9 .v-mult .text {
10     display: inline-block;
11     *display: inline;
12     *zoom: 1;
13     vertical-align: middle;
14 }
15 .v-mult .empty {
16     height: 100%;
17 }
1 <div class="v-mult">
2     <span class="empty"></span>
3     <span class="text">我的内容不限,多高都行<br>换行照常</span>
4 </div>

情形三:div高度不定,内容高度一定

 1 .v-auto {
 2     position: relative;
 3     margin: 0 auto;
 4     width: 200px;
 5     border: 1px solid #ddd;
 6 }
 7 .v-auto .text {
 8     position: absolute;
 9     top: 50%;
10     margin-top: -50px;
11     height: 100px;
12     border: 1px dashed #ddd;
13 }
1 <div class="v-auto">
2     <div class="text">
3         我的高度是固定的,只有100px高,但是我的父及高度不定,我怎么垂直居中呢?
4     </div>
5     <br><br><br><br><br><br><br><br>
6 </div>

情形四:div高度不定,内容高度不定

 1 .v-auto-out {
 2     position: relative;
 3     margin: 0 auto;
 4     width: 200px;
 5     border: 1px solid #ddd;
 6 }
 7 .v-auto-out .auto-in {
 8     position: absolute;
 9     top: 50%;
10     border: 1px dashed #ddd;
11     /* 这里有兼容性问题 */
12     -webkit-transform: translateY(-50%);
13     -ms-transform: translateY(-50%);
14     -o-transform: translateY(-50%);
15     transform: translateY(-50%);
16 }
1 <div class="v-auto-out">
2     <div class="auto-in">我的高度不定,我的父及高度也不定,这下要上下居中,该如何是好?我们一起来瞧瞧吧。</div>
3     <br><br><br><br><br><br><br><br><br>
4 </div>

好了,知道这四种方式,我相信足以应对日常工作中的各种垂直居中问题。代码很简单,不再做多余阐述。总之一句话,CSS的各个属性样式,就好像人肢体的各个器官,了解了各个器官的功能,才能相互配合完成各种任务。相反,个体的能力是有限的。

作者博客:http://www.seejs.com

时间: 2024-10-09 15:43:46

还记得我们折腾过的居中么?的相关文章

还记得早起偷菜!朋友圈晒步?蓝鲸游戏背后的极端强迫症

据媒体报道,为期50天.以"做任务"形式诱导参与者完成各类自残行为甚至自杀的死亡游戏"蓝鲸"近期已传入国内社交平台,到5月末,已有极少数少年深陷游戏中,不能自拔.更有一些无良之人,开始借青少年对"蓝鲸"游戏的好奇心行诈骗之实.比如,借"带人进蓝鲸游戏真群"之名骗取女性用户裸照,随即以"不给钱就公开裸照"等威胁手段向女性用户索要钱财. 文/张书乐 人民网.人民邮电报专栏作者,著有<微博运营完全自学手册&

还记得吗

还记得我们第一次的相见吗? 皓月映照寒暄的脸庞, 心却彼此相拥着: 还记得我们第一次的相拥吗? 霜露飘洒冰冷的石桥, 心却彼此激荡着: 还记得我们第一次的同眠吗? 细雨敲打破败的铁窗, 心却默然厮守着: 还记得我们第一次的庆生吗? 陈俗撕碎未落的允诺, 心却终生懊悔着. --仅以此文献给宝贝老婆,2014.09.13

c#静态构造函数 与 构造函数 你是否还记得?

构造函数这个概念,在我们刚开始学习编程语言的时候,就被老师一遍一遍的教着.亲,现在你还记得静态构造函数的适用场景吗?如果没有,那么我们一起来复习一下吧. 静态构造函数是在构造函数方法前面添加了static关键字之后形成的,并且没有修饰符(public,private),没有参数. 静态构造函数有哪些特点呢: 静态构造函数没有修饰符修饰(public,private),因为静态构造函数不是我们程序员调用的,是由.net 框架在合适的时机调用的. 静态构造函数没有参数,因为框架不可能知道我们需要在函

谈谈asp.net MVC中的AppendTrailingSlash以及LowercaseUrls ,你还记得吗?

asp.net MVC是一个具有极大扩展性的框架,可以在从Url请求开始直到最终的html的渲染之间进行扩展,所以要学好还是需要了解框架的运行原理,推荐Artech. 今天我们回忆的不是MVC中的filter,也不是Controller的激活或者是Action的执行,或者是Url路由RouteData的生成,我们来回忆的是RouteTable.Routes  ,即全局路由表的两个属性.AppendTrailingSlash以及LowercaseUrls. AppendTrailingSlash的

《C#编程风格》还记得多少

<C#编程风格>还记得多少 开始实习之后,才发现自己是多么地菜.还有好多东西还要去学习. 公司很好,还可以帮你买书.有一天随口问了一下上司D,代码规范上面有什么要求.然后D在Amazon上面找到了这本书<C#编程风格(The Elements of C# Style)>(中英对照),让我直接买下开看,按上面的要求编写就可以了.书可以找秘书F去报销. 上个星期四在Amazon下单,周一才到.这书确实来的有点慢,没关系,我看的快.从周一到周五,用每天上下班在挤地铁(广州地铁你懂的)的时

还记得那种 喜欢到不行的感觉么?

今天 , 听人说 . 那种喜欢到不行的 感觉 .突然感到好心酸 .喜欢到不行的那种感觉是什么 ,就是可以为了他 不给自己留余地 . 不会再让别人进入到自己的心里.有种冲动 想好好跟他在一起, 甚至一生一世 .当然, 一生一世这种事情 谁也说不准 ,但是 至少那一刻是认真的 . 没有一点欺骗 .如今的爱情都是有模式的,今儿认识了,互相觉得人还不错,例如性格够正常,都长得还行,比如个头儿符合我的标准,还有家也是一个地方的,以后不用嫁的很远.工作稳定,年龄相当.不是悸动,不是心动,更没心跳加速,只是觉

【编程之外】还记得曾经给&#39;大学导师&#39;写过的报告嘛 --&gt; 前方高能

写在前面 本文不是讲技术的,也没什么代码可看 本文不是讲技术的,也没什么代码可看 本文不是讲技术的,也没什么代码可看 还记得我们曾经给我们大学''导师''写过的报告嘛? 大学他愿意在凌晨6点向你询问近期的学期情况和一份学习报告.这或许更多的不是督促了吧,这份陌生又熟悉的师生感情, (陌生[您还没有在课堂上给我上过课],熟悉[但是您却是我最熟悉和最关注我的老师]),我不会忘记. 来看看你的学习报告,你还记得吗 >  隐私和关键词汇语句我已经去除,可放心阅读. 正文 学习报告 --程龙 老师近来一切

Java 8?还记得那年大明湖畔的Java 7吗?

译注:但见新人笑,哪闻旧人哭.在大家都在兴致勃勃的讨论Java 8的时候,那个早被遗忘的Java 7,或许你从来都没有记得它的好. Java 8的发布也有一个月了,我相信现在大家都在探索JDK 8中的新特性.但是,在你彻底开始钻研Java 8之前,最好先来回顾下Java 7有哪些新特性.如果你还记得的话,Java 6是没有增加任何特性的,只是JVM的一些改动以及性能的提升,不过JDK 7倒是增加了不少有助于提升开发效率的很给力的特性.我现在写这篇文章的目的是什么呢?为什么别人都在讨论Java 8

推荐一些socket工具,TCP、UDP调试、抓包工具. 还记得我在很久很久以前和大家推荐的Fiddler和Charles debugger么?他们都是HTTP的神器级调试工具,非常非常的好用。好工具

还记得我在很久很久以前和大家推荐的Fiddler和Charles debugger么?他们都是HTTP的神器级调试工具,非常非常的好用.好工具能让你事半功倍,基本上,我是属于彻头彻尾的工具控. 假如有一天,你写"传统"的PHP有些累了,想玩玩socket了,搞搞python.NodeJS.GO之类的新兴语言或框架(当然我不是说这些语言不能写web),或者干脆就用PHP吧,事实上PHP5.4的性能提高的真是相当之多,用PHP 的socket函数就能简单的写一个web socket服务器