`
zhang_yingjie
  • 浏览: 114545 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

垂直居中

    博客分类:
  • css
阅读更多
(转载自http://www.ctba.cn/blog/entry/2251)


1. 单行文字在固定高度容器中垂直居中

这个最简单,只要让行间距 line-height 与容器高度 height 相等即可;



   1. #box { height: 120px; line-height: 120px; overflow: hidden } 





2. 多行文字在未知高度容器中垂直居中

这个也很简单,将 padding-top 与 padding-bottom 设置成相同的值即可;



   1. #box2 { padding: 10px 0 } 





3. 多行文字在固定高度容器中垂直居中(非 IE 浏览器)



   1. #box3_wrapper { 
   2.    display: table; 
   3.    height: 311px; 
   4.    background: #eee 
   5. } 
   6. #box3 { 
   7.    display: table-cell; 
   8.    vertical-align: middle 
   9. } 



Html代码 复制代码

   1. <div id="box3_wrapper"> 
   2.    <div id="box3"> 
   3.         作者:shimano<br /> 
   4.         如何既给用户提供最大限度的编辑权限<br /> 
   5.         又能保证网页整体的规范和美观?<br /> 
   6.         真 TMD 难啊! 
   7.    <div> 
   8. </div> 





注意:这其中有个关于字号的问题,在 XP 和 Vista 及 Mac 下即使设定了像素为单位的字号,文字大小也依旧不同,这个在我之前一个篇日志里也提到过,在 XP 下,12px 宋体是 11x11(px)的,在 Vista 下有些文字高 11px 有些高 12px,这也是为什么 Vista 下的宋体看起来比较奇怪,Mac 下默认就是平滑边缘的黑体,再有就是 safari 下平滑边缘的宋体,所以更不容易辨别。

如果细究,在不设定高度和行间距的容器中,12px 宋体文字上下边沿依旧会有 1px 到 2px 的间距,XP 的 IE6 下,字下沿有 3px ,字上沿为 0;Firefox 下,字上沿为 1px,下沿为2px;Vista 下,文字上下各 1px 间距(考虑同等高度文字);这可以理解为默认 line-height,在 这篇日志 中我也是遇到了同样的问题。

关于 IE6 下 line-height 的问题我在 这篇日志 中有提。

4. 多行文字在固定高度容器中垂直居中(IE 浏览器)

因为 IE 不支持将 div 显示为 table 及其同胞,所以我们要另想办法:


Css代码

   1. #box3_wrapper { 
   2.    position: relative; 
   3. } 
   4. #box3_inner { 
   5.    position: absolute; 
   6.    top: 50% 
   7. } 
   8. #box3 { 
   9.    position: relative; 
  10.    top: -50%; 
  11.    background: #eee 
  12. } 






Html代码

   1. <div id="box3_wrapper"> 
   2.    <div id="box3_inner"> 
   3.       <div id="box3"> 
   4.          这种方法<br /> 
   5.          在下面的未知高度 div 垂直居中<br /> 
   6.          也用到了 
   7.       </div> 
   8.    </div> 
   9. </div> 



下面有个权衡 IE 与 非 IE 浏览器浏览效果的实现方法,请继续看

5. 未知高度 div 的垂直居中

Css代码 复制代码

   1. #box4_wrapper { 
   2.    height: 100%; 
   3.    width: 100%; 
   4.    overflow: hidden; 
   5.    position: relative 
   6. } 
   7. #box4_wrapper[id] { 
   8.    display: table; 
   9.    position: static 
  10. } 
  11. #box4_outer { 
  12.    position: absolute; 
  13.    top: 50% 
  14. } 
  15. #box4_outer[id] { 
  16.    display: table-cell; 
  17.    vertical-align: middle; 
  18.    position: static 
  19. } 
  20. #box4_inner { 
  21.    position: relative; 
  22.    top: -50%; 
  23.    margin: 0 auto; 
  24.    background: #eee 
  25. } 




Html代码

   1. <div id="box4_wrapper"> 
   2.    <div id="box4_outer"> 
   3.       <div id="box4_inner"> 
   4.          这是一种无 hack 的方式<br /> 
   5.          虽然环保,但是臃肿:( 
   6.       </div> 
   7.    </div> 
   8. </div> 




CSS2 选择符 #value[id] 相当于 #value,但是 IE 不支持这种类型的选择符,使用这种方式区分浏览器避免 hack:)

6. 未知尺寸图片(小与容器高度)在固定高度容器中垂直居中


   1. #box5 { 
   2.    display: table-cell; 
   3.    *display: block; 
   4.    *font-size: 175px; 
   5.    *font-family: Arial; 
   6.    vertical-align: middle; 
   7.    height: 200px; 
   8.    width: 200px 
   9. } 
  10. #box5 img { 
  11.    vertical-align: middle 
  12. } 





Html代码 复制代码

   1. <div id="box5"> 
   2.    <img src="img/ctba.png" alt="扯谈社" /> 
   3. </div> 

<div id="box5">
   <img src="img/ctba.png" alt="扯谈社" />
</div>



淘宝 UED 07 前端开发原题。解释下针对 IE 的 hack:在 IE 下,将字号设置为容器高度的 0.873(本例中即 200*0.873 = 175)图片便会垂直居中;字体设置为 Arial 主要防止非 utf-8 引起的 hack 失效问题,如 gbk 编码(摘自译飞的博客)

当然如果只是图片,在针对非 IE 浏览器时利用单行文字的垂直居中方法也可以。
分享到:
评论

相关推荐

    CEdit框字体垂直居中

    当我们需要实现CEdit框中的字体垂直居中时,这是一个常见的需求,尤其在创建用户界面时,为了提供更好的视觉效果。本篇文章将详细探讨如何实现这一功能。 首先,我们需要理解CEdit控件的基本属性。CEdit控件允许...

    VB文本框TEXTBOX文字垂直居中

    TextBox控件在默认情况下,其文字是水平居中的,但不支持直接的垂直居中对齐。针对这个特点,开发者们通常需要通过一些技巧来实现文本在TextBox中的垂直居中效果。本主题将详细介绍如何在VB中实现这一功能。 首先,...

    div框水平垂直居中跟内容垂直居中.html

    div框水平垂直居中跟内容垂直居中

    Winform TextBox支持垂直居中自定义控件

    在给定的标题和描述中,我们看到开发者已经实现了一个这样的自定义控件,它不仅支持文字垂直居中,而且在开启自动折行(WordWrap=True)时也能保持垂直居中的效果。 首先,让我们深入了解如何在C#中创建自定义控件...

    TextBlock控件文字垂直居中源码

    在给定的标题“TextBlock控件文字垂直居中源码”和描述中,我们可以推断这是一个关于如何实现TextBlock控件内文字垂直居中的源代码示例,适用于Visual Studio 2010开发环境。 首先,让我们理解一下WPF中TextBlock的...

    图片水平垂直居中

    在网页设计中,让图片水平垂直居中是一个常见的需求,特别是在构建响应式布局或需要保持元素在不同屏幕尺寸下居中的场景。本文将详细介绍如何使用简洁的代码来实现这一目标,适用于各种现代浏览器。 首先,我们可以...

    垂直居中显示ie7+

    在网页设计中,"垂直居中显示"是一个常见的需求,特别是在多设备、多屏幕尺寸的环境下,确保元素在页面上无论何时都能保持居中状态,能够提供良好的用户体验。本话题主要探讨如何在IE7及以上的浏览器中实现元素的...

    CSS实现完美垂直居中 - 蓝色理想

    在网页设计中,CSS(Cascading Style Sheets)布局是一个重要的方面,而垂直居中问题则是许多开发者在创建响应式和动态网页时常常遇到的挑战。"CSS实现完美垂直居中"这一主题深入探讨了如何利用CSS技术使元素在容器...

    CSS解决未知高度的DIV垂直居中

    ### CSS解决未知高度的DIV垂直居中 #### 知识点概述 在Web开发中,实现元素的垂直居中是一项常见的需求。对于已知高度的元素来说,这相对容易实现。但对于那些高度未知或者动态变化的元素,尤其是嵌套在另一个未知...

    VC组合框文本垂直居中

    在VC++编程环境中,"VC组合框文本垂直居中"是一个常见的需求,涉及到窗口控件的自定义绘制和样式调整。这个主题主要包括以下几个关键知识点: 1. **VC组合框(ComboBox)**:ComboBox是Windows API中的一种控件,...

    教你如何把Winform TextBox 垂直居中的类文件

    然而,有时我们需要让TextBox在容器内垂直居中显示,这可能需要一些额外的布局设置或自定义代码。这篇教程将指导你如何创建一个类文件,实现Winform TextBox的垂直居中功能。 首先,理解Windows Forms的布局机制是...

    CEdit 垂直居中,完美解决

    【标题】"CEdit 垂直居中,完美解决"所涉及的知识点主要集中在Windows API编程中的CEdit控件的样式调整,以及如何在Windows应用程序中实现文本或输入框的垂直居中显示。CEdit是Windows API提供的一种标准编辑控件,...

    DIV+CSS 图片垂直居中效果

    在网页设计中,"DIV+CSS 图片垂直居中效果"是一个常见的布局需求,它涉及到CSS的盒模型、定位和Flexbox或Grid等现代布局技术。以下是对这一主题的详细阐述: 1. **基础概念** - **DIV**:HTML中的`&lt;div&gt;`元素是一...

    CSS 实现盒子水平居中、垂直居中和水平垂直居中….docx

    CSS 盒子水平居中、垂直居中和水平垂直居中的实现方法 在 CSS 中,实现盒子水平居中、垂直居中和水平垂直居中是非常常见的需求。本文将介绍五种不同的方法来实现这些效果,并对每种方法的优缺点进行分析。 一、...

    文本框控件可以使文字垂直居中

    大多数文本框中文字都垂直靠上,很不美观,该控件使文字垂直居中。

    android设置TextView中不同的文字字体大小且垂直居中显示

    在Android开发中,有时我们需要在同一个TextView中展示不同大小的文字,并让它们保持垂直居中对齐。这可以通过使用SpannableString来实现。SpannableString是Android SDK提供的一种可操作字符串对象,允许我们在字符...

    css图片垂直居中方法

    在网页设计中,让图片垂直居中是一项常见的需求,它能确保页面布局的美观与均衡。CSS(Cascading Style Sheets)提供了多种方法来实现这一效果。以下将详细阐述几种常用的CSS图片垂直居中的技术。 1. **Flexbox布局...

    DIV+CSS水平垂直居中

    DIV+CSS 水平垂直居中网页学习 DIV+CSS 水平垂直居中是Web开发中一个常见的问题,如何将DIV元素水平垂直居中是一个非常重要的知识点。本文将详细介绍DIV+CSS水平垂直居中的方法和实现原理。 一、使用position:...

    VCenterEdit一个比较完美的文本垂直居中的CEdit类

    VCenterEdit一个比较完美的文本垂直居中的CEdit类。该类来源于网络上的CVEdit类,加入了处理ReadOnly栏目的代码,构成一个比较实用的VCenterEdit一个比较完美的文本垂直居中的CEdit类。供大家参考交流。经测试,可以...

    pb数据窗口美化(grid线条颜色/字体垂直居中)

    本主题聚焦于如何对PB数据窗口进行美化,特别是针对“grid线条颜色”和“字体垂直居中”这两个方面。 在PB中,数据窗口的网格线(grid lines)通常是默认的颜色,可能不符合某些设计要求。为了个性化和提升用户体验...

Global site tag (gtag.js) - Google Analytics