小图标和文字天然对齐(《CSS世界读书笔记》)

之前的理解(错误理解):

line-height可以实现内联元素的垂直居中效果,所以给span一个与高度相等的行高值,这样图片和文字的“高度”就相等了,文字也自然垂直居中了。

但是这个理解是错误的,这其中其实隐藏了很深的原理:

原理:一个display: inline-block元素,如果里面没有内联元素,或者overflow不是visible,则该元素的基线就是其margin的底边缘;否则其基线就是元素里面最后一行内联元素的基线。

解析:所以说,上述图片中的“禁止图标”垂直方向的对齐基线是图标的下边缘,也就是棕色框的下边缘;而旁边相邻的文字text垂直方向的对齐基线是文本自身的baseline

所以正确的理解应该如下:

所以要利用之前的认知——“line-height”可使文字垂直居中,就必须先将图标和文字的对齐基线调整到一致。

较好的解决方法是:给图标元素一个文字内容,使其不

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 QMenu 中,如果设置了图标,那么文字会默认垂直居中对齐,但是如果没有设置图标,那么文字会默认顶部对齐。这种差异导致了在 QMenu 中设置了图标和不设置图标时,无法通过一套 QSS 样式实现文字居中对齐。 不过,我们可以利用 QMenu 的子控件 QAbstractItemView 来实现统一的对齐方式。具体来说,可以在 QSS 样式中设置 QAbstractItemView 的对齐方式,然后将 QMenu 的子控件设置为 QAbstractItemView。 以下是一个例子,演示了如何在设置了图标和不设置图标时,让 QMenu 中的文字都居中对齐: ```python menu = QMenu() # 设置 QAbstractItemView 的对齐方式 menu.setStyleSheet("QAbstractItemView { padding: 5px; alignment: center; }") # 添加带图标的 QAction action1 = QAction(QIcon("icon.png"), "Action with Icon", menu) menu.addAction(action1) # 添加不带图标的 QAction action2 = QAction("Action without Icon", menu) menu.addAction(action2) # 将 QMenu 的子控件设置为 QAbstractItemView menu.view().setUniformItemSizes(True) ``` 在上面的例子中,我们通过设置 QAbstractItemView 的 alignment 属性为 center,来实现子控件居中对齐。然后,通过设置 QMenu 的子控件为 QAbstractItemView,来让 QMenu 中所有子控件都继承 QAbstractItemView 的对齐方式。最后,通过设置 QMenu 的 uniformItemSizes 属性为 True,来让 QAbstractItemView 中的所有子控件都具有相同的大小。 这样,在 QMenu 中设置了图标和不设置图标时,就都可以实现文字居中对齐了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值