文本在盒子中水平垂直居中

水平居中

text-align: center;

垂直居中

vertical-align 无法满足所有情况

vertical-align只对拥有valign特性的元素才生效

  • <td><th><caption>

<div>、<span>没有valign特性,因此需要

vertical-align: middle
几种常用垂直居中方法
单行文本居中

在这里插入图片描述

<div class="div1">单行文本居中</div>
body{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
/* 背景样式 */
.div1 {
  height: 100px;
  background-color: yellowgreen;
}

1.line-height和所在区域height(即容器height)

原理

行高:上间距 + 文本高度 + 下间距

  • 上间距 = 下间距

line-height属性会继承

.div1 {
   /* line-height 和 height相当 */
  line-height: 100px;
}

在这里插入图片描述

存在缺陷,只能实现单行居中,多行时会超出父元素

    <div class="div1">
      单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本
    </div>

在这里插入图片描述

解决上述超出问题,可以多套一层标签,将继承的行高修改了

  • 个人感觉还不如直接flex
<div class="div1">
    <div class="child">
      单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中单行文本居中
    </div>
</div>
.div1 {
    height: 100px;
    line-height: 100px;
    background-color: yellowgreen;
}
.child {
    display: inline-block;
    vertical-align: middle;
    line-height: 20px;
}
多行文本居中
<div class="div1">多行文本居中 多行文本居中 多行文本居中 多行文本居中 多行文本居中 多行文本居中 多行文本居中 </div>
.div1{
  width: 200px;
  border: 1px solid red;
}

1.容器高度不固定

在这里插入图片描述

高度由内部文本撑开

  • height去掉

使用padding使文本看起来居中

.div1{
  padding: 50px 0;
}

在这里插入图片描述

这样实现是把容器撑开再居中

2.容器高度固定

.div1{
  height: 200px;
}

在这里插入图片描述

①vertical-align属性

只有拥有valign特性的元素才生效

  • display属性,是的元素拥有valign特性
<div class="parent">
	<div class="div1 child">多行文本居中 多行文本居中 多行文本居中 多行文本居中 多行文本居中 多行文本居中 多行文本居中 </div>
</div>
.parent {
	display: table;
}
.child {
    /* 容器高度固定 */
    height: 200px;
    
    display: table-cell; 
    vertical-align:middle;
}

缺点就是不兼容ie6、ie7

注意:

  • display: table时padding会失效
  • display: table-row时margin、padding同时失效
  • display: table-cell时margin会失效

IE7及以下的版本并不能很好的支持display:table和display:table-cell属性

②考虑兼容IE7以及以下版本

③flex元素居中

  • 这样会多一些元素,增加消耗
<div class="parent">
    <div>多行文本1</div>
    <div>多行文本2</div>
    <div>多行文本3</div>
</div>
.parent {
    display: flex;
    flex-direction: column;
    align-items: center;
}

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值