使用Luckiest Guy字体的span无法垂直居中,flex align-items:center无效怎么办?
问题根因
这个问题的诱因有两个:
- 你把
display: flex; align-items: center属性加在了span元素本身,该属性作用是控制flex容器内部子元素的对齐规则,但span内部只有纯文本,且外层父容器#app没有设置固定高度,没有垂直对齐的参照基准,自然不会生效。 - Luckiest Guy字体本身的字形设计存在内置垂直偏移,该字体默认的上升部、下降部比例和常规字体不同,就算布局规则完全正确,文字也会看起来整体偏下,无法实现视觉上的垂直居中。
解决方案
场景1:仅需要span在父容器#app中垂直居中
给父容器#app添加固定高度和flex布局属性即可,样式修改如下:
#app { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; background-color: grey; margin-top: 60px; /* 新增以下属性,高度可以按需调整 */ height: 60px; display: flex; align-items: center; justify-content: center; span { font-family: "Luckiest Guy", Helvetica, Arial, sans-serif; font-size: 19px; /* 可以删除原给span添加的flex相关属性 */ } }
场景2:需要修正字体自身的垂直偏移,实现文字在span内部的视觉居中
可任选以下一种方案实现:
- 简易偏移修正:给span添加上移偏移,适合单页面临时适配的场景
span { font-family: "Luckiest Guy", Helvetica, Arial, sans-serif; font-size: 19px; line-height: 19px; /* 两种方式二选一即可,数值可以根据实际显示效果微调 */ padding-top: 2px; /* 或者用transform实现,不会改变元素盒模型占用空间 */ /* transform: translateY(-2px); */ }
- 全局字体度量修正:重写@font-face配置修正字体内置偏移,适合全站多处使用该字体的场景
/* 替换原有的远程字体引入,改为自定义@font-face配置 */ @font-face { font-family: 'Luckiest Guy'; src: url('你的字体存储地址') format('woff2'); /* 以下参数可根据实际显示效果微调 */ ascent-override: 85%; descent-override: 20%; line-gap-override: 0%; font-display: swap; }
修改后不需要额外给span加偏移属性,该字体的垂直对齐规则就会和常规字体保持一致。
内容的提问来源于stack exchange,提问作者CCCC
相关产品推荐
相关产品推荐

