html - 如何将 flexbox 中一个元素的中心与另一个元素的基线对齐

标签 html css flexbox alignment

一个简单的问题:如何将一个元素的中心与另一个元素的基线对齐?这是一个例子:

span {
  display: flex;
  align-items: center;
}

svg {
  width: 100px;
  height: 100px;
}
<span>
            <svg version="1.1"
                 baseProfile="full"
                 viewBox="0 0 300 300"
                 xmlns="http://www.w3.org/2000/svg">

                <rect x=0 y=0 width="300" height="300" fill="red" />

                <circle cx="150" cy="150" r="80" fill="green" />

                <line x1="0" y1="150" x2="300" y2="150" stroke="black"/>

            </svg>

            <i>Something good text</i>
</span>

我希望 svg 的中心(由黑线标记)与文本的基线对齐。当然,可以使用硬编码的负边距或其他固定像素偏移来实现这一点,但我想避免这种情况。

最佳答案

不需要 Flexbox:

svg {
  width: 100px;
  height: 100px;
  vertical-align: middle;
}

i {
  display: inline-block;
  transform: translateY(-0.5ex);
}
<svg version="1.1"
                 baseProfile="full"
                 viewBox="0 0 300 300"
                 xmlns="http://www.w3.org/2000/svg">
     <rect x=0 y=0 width="300" height="300" fill="red" />
     <circle cx="150" cy="150" r="80" fill="green" />
     <line x1="0" y1="150" x2="300" y2="150" stroke="black"/>
</svg>
<i>Something good text</i>

middle

Aligns the middle of the element with the baseline plus half the x-height of the parent. ref

因此,我通过使用减x 高度的一半进行翻译来纠正加一半的x高度

关于html - 如何将 flexbox 中一个元素的中心与另一个元素的基线对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60329193/

相关文章:

css - 使用 Chrome Devtools 调试 CSS 动画

html - 内部 div 超出外部 div 边界

html - <img> 标签下的空间

html - 阻止包含 span 的单词换行?

css - 下拉菜单 css3 菜单在 IE10 中不起作用

HTML 图像映射

html - 我如何告诉 Apache 将没有扩展名的文件作为 text/html 提供?

flexbox - 位置粘性 + RTL + 框阴影在边缘中断

html - 对齐周围具有相等空间的元素并保持纵横比?

html - 在 div 层中定位文本