`

垂直居中的几种方法

 
阅读更多

折腾了一天,终于找到了解决垂直居中的方法,下面的文章很正确,收藏了!

--------------------------------------------------------------------------------------

转自:http://sofish.de/1909

 

垂直居中的几种实现方法

用过 Fireworks / PhotoShop 的人应该都知道,在画布中将一个页面模块居中是多容易的事,可如果是垂直居中,前端就苦逼了。因为 CSS 本身并没有提供相应的 API 支持(确切来说是提供不全)。今天重新整理一下思路,说说前端在实现页面元素垂直居中的几种思路:

一、利用 position 和负边距

利用绝对定位,让元素的顶部与居中线对齐,再让元素上移 50% 的高度。这个应该不难理解。原理可以用下图来做一个可视化说明:

垂直居中

 

/* 代码实现:
 * 设定宽度和高度,父节点为 position:relative; CSS是这样写的:
 */
.selector {
     position:absolute;top:50%;。
     margin-top:-元素自身高度的一半;
}

 二、使用 <table />

<table /> 真是各种好用,她是各种布局、居中的法宝。垂直居中对其来说,也是非常简单的事。table cells 的 vertical-align:middle 就可以直接解决。所以实现起也来只要这样一行代码:

td{ vertical-align:middle; }

三、通用解决方案

使用第一方案的问题是,通常我们需要垂直居中的元素高度都是不确实的。这里我们需要用 JS 来实现高度的计算,再实现负边;而第二种方案的局限在于只应用于 <table />。其实是,我们可能综合这两种方法,来做一个 Hack。

像我们知道的,在 CSS2.1 中,任何元素都可以使用 display:table / display:table-cell来实现与 table 一样的功能。那么,只要支持 display:table 的浏览器,已经可以轻松解决,只要这样写代码:

<!-- DOM 结构 -->
<div>
    <p>content</p>
</div>

/* CSS 实现 */
div { display:table; }
p{ display:table-cell; vertical-align:middle; }

但问题是,这种方法在 IE6/7 是不能实现的,因为他们不支持 display:table 这个特性。那有没有办法不计算高度,利用第一种方案来实现垂直居中呢?其实也未尝不可。看看下面这个 DOM 结构和图示:

<div class="wrap">
    <div class="hack">
        <div class="cnt">
            content
        </div>
    </div>
</div>

垂直居中

其实我们只要加多一层。内 .hack 层 top:50%; 再让 .cnt 层相对自身向上提50%。如上图所示。这里有一个 DEMO:

垂直居中最终方案: DEMO

/* CSS 部分的代码实现:整体代码参见上述 demo*/
.wrap{
    width:500px;height:300px;border:3px solid #ddd;margin:0 auto;padding:20px;display:table;
    *position:relative;
}
.hack{
    display:table-cell;vertical-align:middle;
    *position:absolute;*top:50%;
}
.cnt{
    *position:relative;*top:-50%;
}
分享到:
评论

相关推荐

    垂直居中.docx

    本文将总结几种常用的 CSS 垂直居中方法。 1. 单行垂直居中 对于单行文字,可以使用设置高度和行高相等的方法实现垂直居中。这种方法简单易行,但需要注意 overflow:hidden 的设置,以防止内容超出容器或产生自动...

    css图片垂直居中方法

    以下将详细阐述几种常用的CSS图片垂直居中的技术。 1. **Flexbox布局** Flexbox是现代CSS布局模式,特别适用于一维布局,如行或列。要让图片垂直居中,可以设置容器为flex容器,并使用`align-items: center;`属性...

    TextBlock控件文字垂直居中源码

    WPF提供了几种不同的对齐选项,包括Top、Bottom、Center和Stretch。在这里,我们将关注"Center",这将使文字在TextBlock的高度范围内居中。 实现TextBlock的文字垂直居中的方法主要有以下两种: 1. **样式(Style...

    CEdit 垂直居中,完美解决

    4. **自绘技术**:如果API没有提供直接的垂直居中功能,开发者可能需要手动计算控件的高度和位置,然后覆盖`OnPaint`方法,使用`CPaintDC`和`CRect`等对象进行自绘,使文本保持在垂直中央。 5. **使用第三方库**:...

    textbox垂直居中

    要实现TextBox在Panel中的垂直居中,通常有以下几种方法: 1. **使用Anchor属性**:将TextBox的Anchor属性设置为Top和Bottom,这样TextBox会根据Panel的高度自动调整自身的高度并保持上下边距相等,从而实现居中。...

    div 垂直居中的多种方法详细介绍

    接下来,我们将详细介绍几种实现`div`垂直居中的方法。 首先,针对单行文本的垂直居中,可以通过设置`height`和`line-height`属性实现。当两者值相等时,文本行将垂直居中于容器内。例如,设置`div`的`height`和`...

    VC组合框文本垂直居中

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

    图片垂直居中的代码的几种方法

    本文将深入探讨四种不同的CSS方法,用于实现图片在div容器内的垂直居中,每种方法都有其适用场景和独特之处。 ### 第一种方法:使用`table-cell`属性 这种方法的核心在于将div设置为`table-cell`,这样可以使其...

    垂直居中ie8+

    以上就是实现"垂直居中ie8+"的几种主要方法。在实际项目中,应根据目标浏览器范围、项目需求以及性能因素选择合适的技术。对于更现代的浏览器,推荐使用Flexbox或CSS Grid,因为它们提供了更强大的布局控制和更好的...

    CSS水平垂直居中的几种方法总结

    以下就是CSS实现水平垂直居中的几种常见方法: 1. 利用margin:auto实现居中 这是一种常见的居中方式,通常用于块级元素。通过设置元素的position属性为relative,并把left和top属性设为0,再将margin设为auto,...

    图片的水平垂直居中

    接下来,我们将探讨几种实现垂直居中的方法: 1. **Flexbox布局** - CSS Flexible Box Layout Module(Flexbox)是现代浏览器支持的布局模型,非常适用于创建弹性容器和元素的居中。以下代码演示了如何使用Flexbox...

    DIV水平垂直居中

    首先,我们来探讨CSS中的几种水平垂直居中方法: 1. **Flexbox布局**:这是现代浏览器支持的一种布局方式,可以轻松实现子元素的水平和垂直居中。设置父元素的`display`属性为`flex`,然后添加`align-items: center...

    css图片垂直居中

    以上就是CSS实现图片垂直居中的几种常见方法。在实际开发中,应根据项目需求和浏览器兼容性选择合适的方法。对于老旧的浏览器,可能需要采用更传统的解决方案,如使用`table-cell`或JavaScript辅助。同时,随着技术...

    多行文字实现垂直居中

    以上就是使用div和CSS实现多行文字垂直居中的几种常见方法,每种都有其适用场景和兼容性考虑。在实际项目中,应根据具体需求和目标浏览器范围选择合适的方法。在提供的"多行文字实现垂直居中.html"文件中,你可以...

    CSS实现垂直居中的几种方法

    本文将介绍几种有效的CSS垂直居中方法,以便开发者可以根据具体场景选择适合的方法。 1. 表格单元格方式 这种方法通过将容器设置为表格样式,然后将子元素设置为表格单元格并应用`vertical-align: middle`来实现...

    CSS实现垂直居中的几种实现方式.pdf

    总的来说,CSS实现垂直居中有多种方法,每种方法都有其适用场景和限制。开发者需要根据项目需求和目标浏览器范围选择合适的技术。随着技术的发展,如Flexbox和Grid布局的普及,实现垂直居中变得更加便捷和一致,但也...

    CSS实现垂直居中的几种实现方式.docx

    在CSS布局中,垂直居中是一项常见的需求,尤其在页面设计中显得尤为重要。...以上就是针对不同情况的CSS垂直居中实现方式,每种方法都有其适用场景和局限性,开发者需要根据项目需求和目标浏览器范围选择合适的方法。

    CSS 图片水平垂直居中于DIV

    实现图片水平垂直居中的方法有多种,以下是几种常见且实用的方法: 1. 使用 Flexbox 布局: Flexbox 是现代CSS布局模式,适用于单行或单列的弹性容器。在父容器上设置 `display: flex;`,并使用 `align-items: ...

    [css]实现垂直居中水平居中的几种方式 - 霪霖笙箫 - 博客园1

    "CSS 实现垂直居中水平居中的几种方式" CSS 中实现垂直居中水平居中的几种方式是非常重要的,以下是几种常见的实现方式: 1. 容器内(Within Container) 在容器内实现垂直居中水平居中可以通过设置容器的 ...

    CSS 实现垂直居中的几种方法(必看)

    说到居中,很多人第一反应应该是水平居中,说到水平居中,肯定道友们有一万种方法做到,CSS3 的FlexBox更是强大到没朋友。但是良辰今天想聊的是 CSS 垂直居中的方法,下面是萌萌的分割线。神马?你敢说不萌? •方式...

Global site tag (gtag.js) - Google Analytics