行内元素在div中水平垂直居中

博客介绍了两种垂直对齐方式,推荐使用flex布局,还详细讲解了vertical-align属性。该属性用于定义行内元素基线的垂直对齐,只有元素为inline、inline-block或table - cell时才起作用,并举例说明了其对齐效果,还给出了参考文章链接。

第1种:flex布局(推荐)

<div class="method1">
    <span class="expFont">flex布局</span>
    <img class="expImg" src="expImg.png"/>
</div>
.method1{
    width: 100%;
    display: flex;
    display: -webkit-flex;
    justify-content: center;
    align-items:center;
}
.expImg{
    width: 100px;
    height: 100px;
}

第2种:vertical-align

vertical-align: 定义行内元素的基线相对于该元素所在行的基线的垂直对齐

说明:只有一个元素属于inline或是inline-block(table-cell也可以理解为inline-block),其身上的vertical-align属性才会起作用

假设有两个行内元素a和 b,a和b都是img,当a加了一个vertical-align:middle样式之后,b的底部(基线)就会对齐a的中间位置,如下图:

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

<div class="method2">
  <span class="expFont">flex布局</span>
  <img class="expImg" src="expImg.png"/>
</div>
.method2{
  width: 100%;
}
.expFont{
  vertical-align: middle;
}
.expImg{
  width: 100px;
  height: 100px;
  vertical-align: middle;
}

参考文章:
     https://blog.youkuaiyun.com/yusirxiaer/article/details/81100777
     https://www.cnblogs.com/starof/p/4512284.html?utm_source=tuicool&utm_medium=referral

 

 

解决img元素div内无法垂直居中的方法有多种,以下是一些具体方式: - **使用`display: table-cell`**:将div的`display`属性设置为`table-cell`,同时设置`vertical-align: middle`实现垂直居中,设置`text-align: center`实现水平居中。示例代码如下: ```css *{margin: 0;padding: 0;} div{ width:150px; height: 100px; display: table-cell; vertical-align: middle; text-align: center; } img { width: 50px; height: 50px; } ``` 这种方法简单方便,适用于大多数场景 [^1][^4]。 - **使用`position`定位**: - 已知图片宽高时,将div设置为`position: relative`,img设置为`position: absolute`,并结合`left: 50%`、`top: 50%`以及`margin-top`和`margin-left`负值来调整。示例代码如下: ```css div{ width:150px; height: 100px; position: relative; } img { width: 50px; height: 50px; position: absolute; left: 50%; top: 50%; margin-top: -25px; margin-left: -25px; } ``` - 未知图片宽高时,同样将div设置为`position: relative`,img设置为`position: absolute`,使用`transform: translate(-50%, -50%)`来实现。示例代码如下: ```css *{margin: 0;padding:0;} div{ width:150px; height: 100px; position: relative; border:1px solid #000; } img { width: 50px; height: 50px; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); } ``` 这种定位方式能很好地处理不同宽高的图片 [^2][^5]。 - **使用`flex`布局**:将div的`display`属性设置为`flex`,并使用`justify-content: center`和`align-items: center`来分别实现水平垂直居中。示例代码如下: ```css div{ display: flex; justify-content: center; align-items: center; width:150px; height: 100px; } img { width: 50px; height: 50px; } ``` `flex`布局是一种现代且灵活的布局方式 [^2]。 - **使用`*`和`vertical-align: middle`**:当div中有行内元素(如img、span等)未垂直居中时,可使用`*`选择器和`vertical-align: middle`来解决。示例代码如下: ```html <style> #test *{vertical-align:middle;} </style> <body> <div id="test"> <img src="http://127.0.0.1/skin/images/hottel.jpg"/> <span>double405</span> </div> </body> ``` 这种方法可以处理div等块级元素下的行内元素垂直居中问题 [^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值