元素、文字垂直居中

让一个元素垂直居中是我们开发经常遇到的问题,下述整理各种情况:

div垂直居中

场景设定:让一个50px*50px的Div在一个200px*200px的Div中垂直居中。

<style>
  #content {
    width: 200px;
    height: 200px;
    border: 1px dashed #333;
  }
  #content div{
    width: 50px;
    height: 50px;
    border: 1px solid #f00;
  }
</style>
<div id="content">
    <div class="mid"></div>
</div>

绝对定位方式

#content {
  position: relative;
}
div.mid {
  position: absolute;
  margin: auto;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
}

设置外边距

div.mid {
  position: relative;
  top: 50%;
  left: 50%;
  margin: -25px 0 0 -25px;  /*外边距为自身宽高的一半*/
}

未知容器的宽高,利用transform属性

div.mid {
  position: relative;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%); /*向左上角移动25px,25px*/
}
属性 说明
transform 指定应用的变换功能
transform-origin 指定变换的起点(默认元素的中心点)

transform属性值

说明
translate(<长度值,百分数值>)、translateX、translateY 在水平方向、垂直方向或者两个方向上平移元素
scale(<数值>)、scaleX、scaleY 在水平方向、垂直方向或者两个方向上缩放元素
skew(<角度>)、skewX、skewY 在水平方向、垂直方向或者两个方向上使元素倾斜一定的角度
rotate 旋转角度
matrix(4~6个数值,逗号隔开) 指定自定义变换。

transform-origin属性的值

说明
<%> 指定元素x轴或者y轴的起点
<长度值> 指定距离
left、center、right 指定x轴上的位置
top、center、bottom 指定y轴上的位置

通过设置容器的flexbox居中方式

#content {
  display: flex;
  align-items: center;        /* 垂直居中 */
  justify-content: center;    /* 水平居中 */
}

文字垂直居中

场景设定:让一个50px*50px的Div在一个200px*200px的Div中垂直居中。

<style>
  #content {
    width: 200px;
    height: 200px;
    border: 1px dashed #333;
  }
</style>
<div id="content">
    <span>垂直居中,哒啦哒啦,就是它</span>
</div>

line-height

 #content {
   line-height: 200px; /*等于其height*/
 }
 #content span {
   display: inline-block; /*设置为行内块*/
   width: 200px;
   overflow: hidden; /*防止内容溢出*/
   white-space: nowrap;
   text-overflow: ellipsis;
 }

dispaly:table

#content {
  display: table;
}
#content span {
  display: table-cell;
  vertical-align: middle;
}

上述两者,效果会有所差异

时间: 2024-10-08 00:55:10

元素、文字垂直居中的相关文章

如何使元素/文字 垂直居中?

昨天面试被问到这个问题,自己常用的是方法一和方法二,回来后查阅到了方法三,感觉莫名的好用,记录一下~ 方法一:单行文字垂直居中 line-height等于height 方法二:块级元素垂直居中 position定位或者flex布局 水平居中 margin: 0 auto;+垂直位移position: relative:top: 50%; 注意:此时当前操作元素的头部到达页面一半的水平线处, 最后使用transform: translateY(-50%),使得元素向上平移(translate)自身

《转》CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳)

转自大地Dudy的CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳) 本文主要是对主流居中方法进行了归纳,有些地方甚至就是把别人的代码直接复制过来的,没有什么自己的东西,除了大漠以及张鑫旭的方法外,还有来自司徒正美.怿飞博客的几个方法 以下方法,由于测试环境的原因,IE系列只测试了IE9和IE6,以下所说的IE的支持性只是相对于IE9和IE6来说的: 一.元素的水平垂直居中: 第一种方法: <!doctype html> <html lang="en&

DIV+CSS如何让文字垂直居中?(转)

此篇文章转自网络,但是我忘了原文地址,如果有人知道,麻烦告知一声~ 在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生效,例如表格元素中的<td>.<th>.<caption>等,而像<div>.<spa

实现DIV层内的文字垂直居中

有时候,为了网页设计的美观,需要把div+css设计的页面里的某些div层里的文字垂直居中,包括多行文字以及单行文字:方法有不少,但真正能实现而代码又简洁的介绍不多,flymorn就为大家介绍几种适用的div文字垂直居中的方法. 首先要知道css里vertical-align无效,W3C官方对vertical-align做了下面的解释: " This property affects the vertical positioning inside a line box of the boxes

高度百分比时的文字垂直居中

常用css的开发人员都知道让单行文字水平居中用text-align:center垂直方向居中有一个小技巧是让line-height=height,一般用到这个的时候我们的高度都是固定的px值,但今天我设置高度为百分比时,也想让文字垂直居中,于是有了下面这段代码 <!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title>

多行文字垂直居中(完美兼容chrome firefox IE6 7 8 9)

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生 效,例如表格元素中的<td>.<th>.<caption>等,而像<div>.<span>这样的元素是没有valign特性的,因此使用vertic

实现DIV层内的文字垂直居中(转)

有时候,为了网页设计的美观,需要把div+css设计的页面里的某些div层里的文字垂直居中,包括多行文字以及单行文字:方法有不少,但真正能实现而代码又简洁的介绍不多,flymorn就为大家介绍几种适用的div文字垂直居中的方法. 首先要知道css里vertical-align无效,W3C官方对vertical-align做了下面的解释: “ This property affects the vertical positioning inside a line box of the boxes 

文字垂直居中,水平居中

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生效,例如表格元素中的<td>.<th>.<caption>等,而像<div>.<span>这样的元素是没有valign特性的,因此使用vertica

用CSS如何实现单行图片与文字垂直居中

从上面的代码可以看出错误就是把样式应用在块元素中了 我们只需要改样式为 以下为引用的内容:.style img{vertical-align:middle;.....} 如果STYLE中有其它如INPUT或其它内联元素可写成 以下为引用的内容:.style img,.style.input{vertical-align:middle;.....}或.style *{vertical-align:middle;.....}/*在不影响其它元素的情况下使用这个通配符*/ 以上是在没有设置高度/行高的