css元素垂直居中/vertical-align:middle;

前言

一直以来关于元素居中都是困扰着前端的问题,为了元素的垂直居中,头发都熬没了,小谭今天为大家介绍几种可以实现元素垂直居中的方法,以及每个方法的优缺点。

准备

一个名为box的div,设置宽高200px,box里嵌套一个图片,图片宽高为100px,如图:

我们需要实现图片在box的居中,如图:

实现水平居中很简单,给box添加属性text-align:center;即可,实现垂直居中的方法有:


1.行高以及vertical属性

给box添加行高并设为200px(与box等高),再在box添加属性vertical-align:middle;即可实现图片的垂直居中。行内块元素会有上下间距的bug,将font-size设为0即可

缺点:如果需要在box里添加文字,可以将图片或文字再嵌套一个盒子单独设置字体大小和行高就行。

 

2.使用定位

给box加relative定位,图片加absolute定位,图片上下左右为0,margin设为auto,即可实现;

或者left:50%;,top:50%;,再添加transform:translate(-50%,-50%)可以实现,因为transform为css3新增属性,所以这种方法会有兼容问题

也可以把transform改为margin,设置负高度的一半和负宽度的一半,这种方法虽然没有兼容问题,但是需要知道图片的准确宽高。

 

3.利用表格属性

给图片再嵌套一个盒子b(b可以为任意双标签),把box转化为表格元素(display:table),把嵌套在图片外面的盒子b转化为单元格元素(display:table-cell),即转换为表格里的td,再添加vertical-align:middle即可实现,这种方法可以接受父元素和子元素都是未知宽高。

 

4.利用vertical-align

再在box里添加一个图片,高度设为100%,宽度为0,再给两张图片添加属性vertical-align:middle即可实现垂直居中,这种方法可以不用设置行高。


注意

如果图片尺寸不一样,可以给图片设置最大宽度(max-width)和最大高度(max-height)就可以实现不同尺寸图片的水平垂直居中


结束语

好啦,今天就是小谭要分享的内容,如果有什么写的不对地方,或者有大佬有更好的方法实现,欢迎来和小谭进行技术分享哟,小谭不胜荣幸,啾咪~~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值