我正在使用Bootstrap 4,并且我的网页中有一个简单的@classmethod
def __str__(self):
return "{0} {1}".format(self.album_name,self.artist)
元素:
svg
为显示元素正在使用多少额外空间,我在元素周围创建了一个边框:
<svg>
<polygon points="0,0 20,5 0,10" style="fill: black; stroke: black;" />
<polygon points="20,0 40,5 20,10" style="fill: black; stroke: black;" />
</svg>
图形非常简单,并且大多数情况下都应显示,就像这样:
但是我不明白为什么在右侧和底部有这么多额外的空格。我已经尽力想使容器适合实际内容了:将<style>
svg {
border: 1px solid black;
}
</style>
添加到viewBox="0 0 20 40"
标记中只会使图形夸张,以至于庞大,而svg
什么也没做我已经尝试了许多其他CSS“技巧”,并将图形放置在自己的viewPort
元素中,所有这些都对图形的外观没有影响。
我不记得以前遇到过这个问题。 Bootstrap是否向必须覆盖的div
图形添加了额外的样式,或者这是正常现象吗?感谢有关如何修复它的帮助。
答案 0 :(得分:1)
当内联替换元素没有明确设置宽度或高度时,默认值为300px * 150px。 (实际规则为specified here)
此规则涉及
为避免这种情况,请在
svg {
border: 1px solid;
width: 150px;
height: 150px;
}
<svg viewBox="0 0 40 40">
<polygon points="0,0 20,5 0,10" style="fill: black; stroke: black;" />
<polygon points="20,0 40,5 20,10" style="fill: black; stroke: black;" />
</svg>
答案 1 :(得分:-1)
正如Kaiido所说,您需要为svg元素声明一个viewBox属性。为了计算viewBox的大小,我将所有内容包装在<g>
元素中,并对该getBBox()
元素使用方法<g>
。
在这种情况下,该方法返回以下边界框:{x:0,y:0,height:40,width:10}
。
您需要的视图框是:viewBox="0 0 40 10"
。
由于多边形具有笔触,因此您需要一些额外的空间,因此我使用了viewBox="-1 -1 42 12"
您不需要保留<g id="test">
换行。
svg{border:1px solid}
<svg viewBox="-1 -1 42 12">
<g id="test">
<polygon points="0,0 20,5 0,10" style="fill: black; stroke: black;" />
<polygon points="20,0 40,5 20,10" style="fill: black; stroke: black;" />
</g>
</svg>