Bootstrap 导航栏中的 SVG nav-link,跨浏览器
SVG nav-link in a Bootstrap navbar, cross-browser
我有一个 Bootstrap 4 导航栏,里面有 nav-links,我希望其中一个 links 显示 SVG 而不是文本。
具体来说,它是 Patreon 的 link,我希望它显示为 Patreon 徽标。
我已经这样做了,这是它在 Chrome 上的显示方式:
这就是我想要的效果。
但在 Firefox 上情况有所不同:
我自己 iPhone4 svg 显示非常非常小,但我猜那是因为我使用的是非常旧的系统 (iOS7)。
这是我的 CSS.
的相关部分
.navbar {
position: fixed;
top: 0;
width: 100%;
z-index: 1000;
}
.patreon-wordmark.svg-icon svg {
height: 1.6em;
width: auto;
}
.patreon-wordmark.svg-icon.svg-baseline svg {
bottom: -0.53em;
position: absolute;
}
对于其他地方的其他 svg,我也有这段代码(我想我会把它放在这里以防它以某种方式干扰其余部分):
.svg-icon {
display: inline-flex;
align-self: center;
position: relative;
height: 1em;
width: 1em;
}
.svg-icon svg {
height:1em;
width:1em;
}
.svg-icon.svg-baseline svg {
bottom: -0.125em;
position: absolute;
}
我的 SVG 是内联的并且包含如下:
<li class="nav-item">
<a class="nav-link patreon-wordmark svg-icon svg-baseline" href="link">
<svg ...
如何使它们在所有浏览器中对齐?还是我处理问题的方式不对?
我终于找到了解决办法。我走了一条不同的路。
HTML:
<li class="nav-item">
<a class="nav-link navbar-patreon-svg" href="http://www.patreon.com/antoineguenet">
<span class="text-hide" >Patreon</span>
</a>
</li>
CSS:
.navbar-patreon-svg {
background-color: rgba(0,0,0,.5);
mask: url(../images/patreon-wordmark-black.svg);
mask-repeat: no-repeat;
mask-size: contain;
mask-origin: content-box;
-webkit-mask: url(../images/patreon-wordmark-black.svg);
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: contain;
-webkit-mask-origin: content-box;
min-width: 7em;
}
最后,让 svg 像其他链接一样在悬停时改变颜色:
.navbar-patreon-svg:hover {
background-color: rgba(0,0,0,.7);
}
我有一个 Bootstrap 4 导航栏,里面有 nav-links,我希望其中一个 links 显示 SVG 而不是文本。
具体来说,它是 Patreon 的 link,我希望它显示为 Patreon 徽标。
我已经这样做了,这是它在 Chrome 上的显示方式:
这就是我想要的效果。
但在 Firefox 上情况有所不同:
我自己 iPhone4 svg 显示非常非常小,但我猜那是因为我使用的是非常旧的系统 (iOS7)。
这是我的 CSS.
的相关部分.navbar {
position: fixed;
top: 0;
width: 100%;
z-index: 1000;
}
.patreon-wordmark.svg-icon svg {
height: 1.6em;
width: auto;
}
.patreon-wordmark.svg-icon.svg-baseline svg {
bottom: -0.53em;
position: absolute;
}
对于其他地方的其他 svg,我也有这段代码(我想我会把它放在这里以防它以某种方式干扰其余部分):
.svg-icon {
display: inline-flex;
align-self: center;
position: relative;
height: 1em;
width: 1em;
}
.svg-icon svg {
height:1em;
width:1em;
}
.svg-icon.svg-baseline svg {
bottom: -0.125em;
position: absolute;
}
我的 SVG 是内联的并且包含如下:
<li class="nav-item">
<a class="nav-link patreon-wordmark svg-icon svg-baseline" href="link">
<svg ...
如何使它们在所有浏览器中对齐?还是我处理问题的方式不对?
我终于找到了解决办法。我走了一条不同的路。
HTML:
<li class="nav-item">
<a class="nav-link navbar-patreon-svg" href="http://www.patreon.com/antoineguenet">
<span class="text-hide" >Patreon</span>
</a>
</li>
CSS:
.navbar-patreon-svg {
background-color: rgba(0,0,0,.5);
mask: url(../images/patreon-wordmark-black.svg);
mask-repeat: no-repeat;
mask-size: contain;
mask-origin: content-box;
-webkit-mask: url(../images/patreon-wordmark-black.svg);
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: contain;
-webkit-mask-origin: content-box;
min-width: 7em;
}
最后,让 svg 像其他链接一样在悬停时改变颜色:
.navbar-patreon-svg:hover {
background-color: rgba(0,0,0,.7);
}