`

垂直居中的两种实现方法

 
阅读更多
http://www.flatws.cn/article/program/css/2011-04-24/22575.html

方法一:利用行高(line-height)定位

line-height通常是用于调节一段文字的行与行之间的距离,或者说两行文字之间的距离,如果行高是500px,那么每一行中的文字距离本行的顶部就是250px,如果将文字的行高设为500px,并且外面的容器的高度也为500px,同样可以实现垂直居中,但是用它来实现垂直居中,也是有缺点的,就是如果内容过多,文字就会跑到下一行,那么内容就不可能垂直居中了。

HTML代码:

<h1>Hi, I'm<span>Vertically Aligned</span> Within the H1</h1>


CSS代码:

body {
         margin: 0;
         padding: 0;
         background: #1d1d1d;
         font-size: 10px;
         font-family: Verdana, Arial, Helvetica, sans-serif;
}
h1 {
         font: 3em Georgia, "Times New Roman", Times, serif;
         color: #fff;
         height: 500px;
         line-height: 500px;
         text-align:center;
         border: 10px solid #999;
}
h1 span {
         font-weight: bold;
         font-size:1.5em;
         color: #fff000;
}
p {
         font-size: 1.3em;
         color: #999;
}
strong {
         color: #fff;
}




方法二:利用绝对定位

先来看看效果,查看演示
这个方法有个缺点我必须指出,就是外面的块状元素,必须指定高度,所以如果你在里面放动态的内容的话,后果会很糟糕滴~


HTML代码:
<div class="vert">
        <h1>Hi, I'm<span>Vertically Aligned</span></h1>
        <p>Abigo sudo mara paulatim odio, accumsan luptatum nibh nibh refero metuo opes ut fatua. Acsi et fere similis <strong>Using</strong> augue <strong>absolute</strong> validus. Regula <strong>positioning</strong> eu jus vel, indoles fere iaceo ea similis. Velit praemitto nulla vel luctus secundum. </p>
</div>



CSS代码
这种用绝对定位来实现的垂直居中,取决与元素的宽度和高度,你可以用下面这两个公式来计算元素的左边距和上边距

元素的宽度/2 = 负左边距
元素的高度/2 = 负上边距

在这个例子中,我们就是这么计算的
.vert {
        width: 580px;
        height: 190px;
        position: absolute;
        top: 50%;
        left: 50%;
        margin: -95px 0 0 -290px;
}


完整CSS代码
body {
        margin: 0;
        padding: 0;
        background: #1d1d1d;
        font-size: 10px;
        font-family: Verdana, Arial, Helvetica, sans-serif;
}
h1 {
        font: 4em Georgia, "Times New Roman", Times, serif;
        color: #fff;
        border-bottom: 5px dotted #999;
        margin: 0;
        padding: 0 0 10px;
}
h1 span {
        font-weight: bold;
        display:block;
        font-size:1.5em;
        color: #fff000;
}
p {
        font-size: 1.3em;
        color: #999;
}
strong {
        color: #fff;
}
.vert {
        width: 580px;
        height: 190px;
        position: absolute;
        top: 50%;
        left: 50%;
        margin: -95px 0 0 -290px;
}


问题延伸
如果元素的外面还有一个父级元素,如果才能让元素垂直居中于父级元素内部?比如下面的代码,多了一个父级元素
<div class="container">
         <div class="vert">
          <h1>Hi, I'm Nested &amp;<span>Vertically Aligned</span></h1>
          <p>Abigo sudo mara paulatim odio, accumsan luptatum nibh nibh refero metuo opes ut fatua. Acsi et fere similis <strong>Using</strong> augue <strong>absolute</strong> validus. Regula <strong>positioning</strong> eu jus vel, indoles fere iaceo ea similis. Velit praemitto nulla vel luctus secundum. </p>
         </div>
</div>


这时候,就必须在定义父级元素的CSS代码中加入position: relative;才能够使内部元素垂直居中于父级内部,代码如下:
.container {
        position: relative;
        height: 500px;
        width: 800px;
        border: 10px solid #999;
        background: #000;
        margin: 20px;
}
分享到:
评论

相关推荐

    TextBlock控件文字垂直居中源码

    实现TextBlock的文字垂直居中的方法主要有以下两种: 1. **样式(Style)**: 你可以创建一个全局或局部的样式,设置TextBlock的VerticalAlignment属性为"Center"。这样,所有应用此样式的TextBlock都将具有垂直...

    textbox垂直居中

    4. **使用FlowLayoutPanel或TableLayoutPanel**:这两种控件提供了更强大的布局功能,可以轻松实现控件的垂直居中。例如,可以将TextBox放入FlowLayoutPanel,并设置其FlowDirection为TopDown,同时设置AutoSizeMode...

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

    2. **Positioning and Offset**:通过定位技术和偏移量来实现垂直居中,这种方法主要针对不支持table display model的非标准浏览器。 #### 核心代码分析 下面是对上述方法的核心代码进行详细解释: ```css body {...

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

    垂直居中分为两种主要情况:内外元素高度全定和外层元素高度定,内层高度不定。 1. **内外元素高度全部确定的情况** - **line-height 与 height 值设相同**:这是最简单的方法,适用于单行文本。通过将元素的`...

    网页图片垂直居中

    以上是实现网页图片垂直居中的六种常见方法。每种方法都有其适用场景,开发者可以根据项目需求和技术支持选择合适的方法。在实际开发中,通常推荐使用Flexbox或CSS Grid,因为它们提供了更好的跨浏览器兼容性和灵活...

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

    然而,为了实现真正的垂直居中,可能需要结合其他方法,比如自定义ViewGroup或使用第三方库。在实际开发中,应当根据项目需求和兼容性来选择最适合的方法。 在提供的文件“android设置TextView中文字不同的字体大小...

    在DIV中图片垂直/水平居中(最简单方法).rar

    下面是两种方法的实现: 1. **Flexbox布局**: - 首先,将div的display属性设置为`flex`,创建一个弹性容器。 - 接着,使用`align-items: center;`和`justify-content: center;`使子元素(即图片)在主轴(水平)...

    DIV和SPAN垂直居中对齐的实现方法

    尽管它们在布局上具有不同的默认行为,但垂直居中的方法在这两种元素上可以通用。 在解释方法之前,我们先澄清一个常见的误区:垂直居中并不依赖于vertical-align属性的默认值。vertical-align的默认值是baseline,...

    js按比例缩放图片且垂直居中显示图片

    "js按比例缩放图片且垂直居中显示图片"这个主题涉及到的是使用JavaScript技术来处理图片的尺寸调整和布局定位,使得图片无论在何种分辨率或屏幕尺寸下都能保持良好的视觉效果。这里我们将详细探讨这一技术实现的原理...

    使用bootstrap的H5页面登录框自适应水平居中、垂直居中

    对于垂直居中,Bootstrap本身没有提供内置的解决方案,但我们可以通过以下几种方法来实现: 1. 使用Flexbox:Bootstrap4开始支持Flexbox,可以为父容器添加`d-flex`, `align-items-center`类,这将在所有支持...

    div垂直居中-CSS元素垂直居中方法的探究

    下面将详细介绍两种主要的解决方案:文本垂直居中和块级元素垂直居中。 首先,我们来讨论文本垂直居中。在HTML中,文本通常是行内元素,如`&lt;span&gt;`或`&lt;p&gt;`。要实现文本的垂直居中,可以使用CSS的`line-height`属性...

    div垂直居中的N种方法 单行/多行文字(未知高度/固定高度)

    对于`div`元素,尤其是包含单行或多行文本的情况,有多种方法可以实现垂直居中。以下将详细介绍几种常见的方式: 1. **单行垂直居中** 对于只有一行文字的`div`,我们可以利用`line-height`属性来实现垂直居中。...

    内容自适应垂直居中源码

    3. **传统方法**:在CSS3之前,开发者可能使用相对定位、绝对定位、负边距或者JavaScript来实现垂直居中。例如,可以设置元素的`position: absolute;`,然后使用`top: 50%; transform: translateY(-50%);`组合来居中...

    水平垂直居中.docx

    本文将介绍两种实现水平垂直居中的方法,并对BFC(块级格式化上下文)的布局规则进行详细的解释。 方法一:使用相对定位和绝对定位 第一种方法是使用相对定位和绝对定位来实现水平垂直居中。在这种方法中,我们...

    让DIV水平垂直居中的两种完美方法推荐

    本文介绍了两种实用的方法来实现这一目标,这两种方法分别基于传统的CSS布局技术以及CSS3中的transform属性。 第一种方法利用负的margin值来实现。这种技术要求你已知子元素的尺寸,因为需要将子元素先通过设置top...

    使用css实现div垂直居中的示例

    总结来说,这个示例展示了两种CSS方法来实现`div`元素的垂直居中: 1. 对于包含文本的`div`,通过设置`text-align: center`和合适的`line-height`实现文本的垂直居中。 2. 对于需要整体居中的`div`,使用`position:...

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

    在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的...一、单行垂直居中 如果一个容器中只有一行文字,对它实现居中相对比较简单,我们只需要

    CSS让图片垂直居中和底端对齐的代码

    本CSS教程提供了两种对齐方式即垂直居中对齐和底端对齐!更多内容请参考本站的CSS视频教程。 CSS使图片垂直居中的代码: &lt;!DOCTYPE ...

    任意图片实现垂直居中的三种方法(兼容性还不错)

    为了解决这一问题,作者分享了三种实现任意图片垂直居中的方法,并指出其中一种仅限于标准浏览器,而另外两种方法兼容性较好。下面详细说明每一种方法。 方法一:使用display:table和display:table-cell属性 这种...

Global site tag (gtag.js) - Google Analytics