html垂直居中vertical,利用vertical-align:middle垂直居中

CSS垂直居中

.wrapper{

width: 500px;

height: 500px;

background-color: pink;

text-align: center;

}

.box{

width: 100px;

height: 100px;

background-color: deepskyblue;

display: inline-block;

vertical-align: middle;

margin: 0 auto;

}

dea069fecb62

效果如图所示

以前总是以为vertical-align与text-align是同样的道理,一个是垂直居中,一个是水平居中,结果在这里一点效果也没有。事实上vertical-align与text-align完全不一样,vertical-align不能这样用。

vertical-align 属性设置元素的垂直对齐方式。该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。

第一种用法,先看后面一句“在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。”这很容易理解,如果给一个表格的td加一个vertical-align:middle的样式,表格里面的内容会垂直居中,同样的如果给一个vertical-align:bottom就会底部对齐,如果给一个vertical-align:top就会顶部对齐。

第二种用法,该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。假设有两个行内元素a和b,a和b都是div,当a加了一个vertical-align:middle样式之后,b的底部(基线)就会对齐a的中间位置,如下图:

dea069fecb62

图示

如果a和b都加了一个vertical-align:middle样式,那么就互相对齐了对方的中间位置,也就是它们在垂直方向上的中线对齐了,如下图:

dea069fecb62

图示

现在我要让class="box"的div在class="wrapper"的div里面垂直居中,我可以在class="wrapper"的div里面加一个div空标签,把它的高度设为100%,宽度设置为0,再给它一个vertical-align:middle样式,同样的给class="box"的div一个vertical-align:middle样式,那么box就可以在div里面垂直居中了。

CSS垂直居中

.wrapper{

width: 500px;

height: 500px;

background-color: pink;

text-align: center;

}

.box{

width: 100px;

height: 100px;

background-color: deepskyblue;

display: inline-block;

vertical-align: middle;

margin: 0 auto;

}

.help{

width: 0;

height: 100%;

display: inline-block;

vertical-align: middle;

}

dea069fecb62

图示

下面我们来看一张图来更好理解垂直对齐主要属性值的表现形式

dea069fecb62

垂直对齐主要属性值的表现形式.png

### vertical-align: middle CSS 不生效的原因及解决方案 #### 1. 明确适用范围 `vertical-align: middle` 主要用于行内元素(inline elements)、表格单元格(table cells),以及设置了 `display: table-cell` 的块级元素。对于普通的块级元素,此属性不会起作用[^1]。 #### 2. 使用 display: table-cell 实现垂直居中 为了使 `vertical-align: middle` 生效,可以将容器的显示模式设置为 `table-cell` 并应用相应的样式: ```css .box { display: table-cell; vertical-align: middle; text-align: center; /* 可选:水平居中 */ } ``` 这样做的前提是父元素应该具有足够的高度,并且其内部子元素应适应这种布局方式[^4]。 #### 3. Flexbox 方法替代传统做法 现代浏览器广泛支持 Flexible Box Layout (Flexbox),这是一种更灵活的方法来处理一维布局问题,包括垂直居中。通过简单的几行代码即可轻松实现预期效果: ```css .container { display: flex; justify-content: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ min-height: 100vh; /* 设置最小高度以确保有足够空间进行居中操作 */ } ``` 这种方法不仅适用于单个元素,还可以方便地应用于多个项目之间的相对定位[^5]。 #### 4. Grid 布局作为另一种选择 CSS Grid 是一种强大的二维网格系统,能够更加精细地控制页面上的组件排列。利用 grid 容器内的自动放置功能同样能很好地完成垂直居中的任务: ```css .grid-container { display: grid; place-items: center; /* 同时实现了水平和垂直方向上的居中 */ height: 100%; /* 或者其他合适的尺寸单位 */ } ``` 以上三种方法都可以有效解决 `vertical-align: middle` 在某些场景下不工作的难题,具体选用哪种取决于实际需求和个人偏好[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值