实现垂直居中 和 vertical-align

本文介绍了多种CSS技术实现元素垂直居中的方法,包括文本类居中、其他元素类居中等场景,通过不同技巧和代码示例展示了如何根据不同情况选择合适的垂直居中方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于vertical:

1、定义和用法

vertical-align 属性设置该元素相对于所在行基线的垂直对齐方式。

只对行内元素(a,span,img等)的基线相对于该元素所在行的基线的垂直对齐(允许负值)。


2、实例列举

img标签的vertical-align: text-top


img标签的vertical-align: bottom

3、另一种用法:

具有valign属性的表格元素(td、th)中,vertical-align等效于valign,规定单元格中内容

垂直排列方式。


th,td{
width: 50px;
height: 50px;
vertical-align: bottom;
}




关于实现垂直居中的几种方式:

1、文本类居中

①单行文本居中:

如果一个容器中只有一行文字,对它实现居中相对比较简单,我们只需要设置它的实际高度height和

所在行的高度line-height相等即可。

如: 

div {   
        height:25px;   
        line-height:25px;   
        overflow:hidden;   
  }   

②未知行数的多行文本居中

如果一段内容,它的高度是可变的那么我们就可以使用设定Padding,使上下的padding值

相同即可。同样的,这也是一种“看起来”的垂直居中方式,它只不过是使文字把<div>完全

填充的一种访求而已。可以使用类似下面的代码: 

div {   
  padding:25px;   
}   

③利用 vertical +line-height配合

.父元素{

lineheight:500px

}

.子元素{

display:inline-block;

vertical-align:middle

}

即可实现子元素在父元素line-height范围内的居中


2、其他元素类的居中

①需要居中的元素与父级元素大小相差不多:

利用margin-top和margin-left实现居中


元素与父元素大小相差较大时:

利用position:50%居中,在利用 负的 margin调整元素自身大小带来的偏差


利用display修改框模型

利用修改display,模拟出 table中td、th等具有的valign垂直对齐属性,

父元素: display:table;

vertical-align:middle;

子元素: display:table-cell;

④利用 绝对定位+margin:auto

.父元素{

position:relative;
width:1000px;
height:1000px;

}

.子元素{

margin:auto;
position:absolute;
left:0;
right:0;
top:0;
bottom:0;

}

⑤利用弹性盒模型

div{
	<span style="white-space:pre">	</span>display: -webkit-box;  /* 老版本语法: Safari,  iOS, Android browser, older WebKit browsers.  */  
            display: -moz-box;    /* 老版本语法: Firefox (buggy) */  
            display: -ms-flexbox;  /* 混合版本语法: IE 10 */  
            display: -webkit-flex;  /* 新版本语法: Chrome 21+ */  
            display: flex;       /* 新版本语法: Opera 12.1, Firefox 22+ */  
            /*垂直居中*/  
            /*老版本语法*/  
            -webkit-box-align: center;  
            -moz-box-align: center;  
            /*混合版本语法*/  
            -ms-flex-align: center;  
            /*新版本语法*/  
            -webkit-align-items: center;  
            align-items: center;  
            /*水平居中*/  
            /*老版本语法*/  
            -webkit-box-pack: center;  
            -moz-box-pack: center;  
            /*混合版本语法*/  
            -ms-flex-pack: center;  
            /*新版本语法*/  
            -webkit-justify-content: center;  
            justify-content: center;  
            margin: 0;  
            height: 700px;  
            width: 100% /* needed for Firefox */
			} 












### 解决方案分析 Bootstrap 的网格系统基于 `float: left` 实现[^1],这使得 `vertical-align` 属性无法生效。然而,可以通过其他方法实现垂直居中效果。 #### 方法一:Flexbox 布局 现代浏览器广泛支持 Flexbox 布局,这是一种更简洁的方式实现垂直居中。以下是具体实现: ```css .container { display: flex; align-items: center; /* 垂直方向居中 */ justify-content: center; /* 水平方向居中 (可选) */ } ``` 这种方法适用于父容器子元素之间的关系,并且完全兼容响应式设计需求[^4]。 --- #### 方法二:CSS Transform 技术 通过设置 `top: 50%` `transform: translateY(-50%)` 可以精确调整子元素的位置。这种方式无需依赖特定的显示模式(如 `inline-block` 或 `table-cell`),并且能够很好地适应动态高度的内容。 ```css .parent { position: relative; } .child { position: absolute; top: 50%; transform: translateY(-50%); } ``` 此技术的核心在于利用 `translateY(-50%)` 将子元素向上移动其自身高度的一半,从而达到完美的垂直居中效果。 --- #### 方法三:Table Cell 显示方式 如果项目需要向后兼容旧版浏览器,则可以考虑使用 `display: table` `display: table-cell` 来模拟表格单元格的行为。 ```css .parent { display: table; width: 100%; /* 宽度自定义 */ height: 100%; /* 高度自定义 */ } .child { display: table-cell; vertical-align: middle; /* 使用 vertical-align 生效 */ } ``` 需要注意的是,这种做法可能会增加额外的标记结构复杂性[^3]。 --- ### 总结 对于 Bootstrap 中因浮动机制导致 `vertical-align` 失效的情况,推荐优先采用 **Flexbox** 方案来替代传统方法。它不仅语义清晰而且易于维护;其次可以选择 **Transform** 技巧作为备选策略,在不改变 HTML 结构的前提下完成任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值