微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html – 垂直对齐文本和SVG图标

我正在尝试将SVG图标与文本对齐.我已经阅读了很多关于如何使用它的信息来源,使用vertical-align:middle是它的最佳选择.

我也能够做到,但有一个问题我想要答案.

我见过的所有资源都告诉你只在img元素上放置vertical-align:middle.例如.

http://codepen.io/johnasp/pen/bqadn/
Vertically align text next to an image?

但在我的特殊情况下,我需要在svg和span元素上放置vertical-align:middle.差异非常微妙.但它就在那里.

这是小提琴:

html,body {
    font-size: 32px;
}

.icon {
    height: 64px;
    width: 64px;
    vertical-align: middle;
}

span {
    vertical-align: middle; // Try commenting this line
}
<ul>
  <li>
    <svg viewBox='0 0 16 16' class="icon" >
      <path d="M7.5 1c-4.142 0-7.5 3.358-7.5 7.5s3.358 7.5 7.5 7.5c4.142 0 7.5-3.358 7.5-7.5s-3.358-7.5-7.5-7.5zM7.5 14.5c-3.314 0-6-2.686-6-6s2.686-6 6-6c3.314 0 6 2.686 6 6s-2.686 6-6 6zM8 8v-2h2v-1h-2v-1h-1v1h-2v4h2v2h-2v1h2v1h1v-1h2l-0-4h-2zM7 8h-1v-2h1v2zM9 11h-1v-2h1v2z">
      </path>
    </svg>
    <span>3.4Km</span>
  </li>
</ul>

尝试注释为span标记提供垂直对齐的行,并看到文本向上移动.

有人能告诉我为什么我需要垂直对齐我的svg和span标签而不仅仅是svg,因为它在其他地方工作吗?

解决方法

您遇到问题的主要原因是因为您的图标没有集中在SVG viewBox中.

您的viewBox为“0 0 16 16”但如果您检查它,图标实际上占用“0 1 15 15”.如果您更新viewBox,它在线上更好,而不必垂直对齐您的< span>.

html,body {
    font-size: 32px;
}

.icon {
    height: 64px;
    width: 64px;
    vertical-align: middle;
}

span {
}
<ul>
  <li>
    <svg viewBox='0 1 15 15' class="icon" id="foo">
      <path d="M7.5 1c-4.142 0-7.5 3.358-7.5 7.5s3.358 7.5 7.5 7.5c4.142 0 7.5-3.358 7.5-7.5s-3.358-7.5-7.5-7.5zM7.5 14.5c-3.314 0-6-2.686-6-6s2.686-6 6-6c3.314 0 6 2.686 6 6s-2.686 6-6 6zM8 8v-2h2v-1h-2v-1h-1v1h-2v4h2v2h-2v1h2v1h1v-1h2l-0-4h-2zM7 8h-1v-2h1v2zM9 11h-1v-2h1v2z">
      </path>
    </svg>
    <span>3.4Km</span>
  </li>
</ul>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐