我正在添加一个带有SVG的新小部件。
我将其设置为与父级相同的大小,但会导致出现不需要的滚动。
小提琴:https://jsfiddle.net/Murval/j1oe6x4b/
.widget-outer {
display: flex;
height: 210px;
width: 400px;
border: 1px solid black;
}
.widget {
overflow-y: auto;
flex: 1;
}
.svg-container {
text-align: center;
display: inline-block;
width: 100%;
height: 100%;
}
.svg {
max-width: 100%;
max-height: 100%;
}
<div class="widget-outer">
<div class="widget">
<div class="svg-container">
<svg class="svg" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="50" style="fill: gray;"></circle>
</svg>
</div>
</div>
</div>
如我所见,滚动出现,因为 svg-container div下面有额外的空间。但是,正如其他帖子所建议的那样,改变显示效果是没有效果的。
额外注意事项:
tl; dr是否可以在没有滚动条的情况下将 svg 放入小部件?
答案 0 :(得分:1)
您需要将 if ($j(".large-6.columns.check-Div > .custom-table-box:contains('size-full')")) {
$j('#addImg').addClass(".hasImage");//also missing . for class
}
和.svg-container
更改为.svg
display: block
&#13;
.widget-outer {
display: flex;
height: 210px;
width: 400px;
border: 1px solid black;
}
.widget {
overflow-y: auto;
flex: 1;
}
.svg-container {
text-align: center;
width: 100%;
height: 100%;
}
.svg {
max-width: 100%;
max-height: 100%;
display: block;
}
&#13;
答案 1 :(得分:1)
SVG元素垂直定位在基线处。这就是为什么它在底部占用4px额外空间的原因。只需告诉它在顶部垂直对齐,您将获得所需的结果。只需改变你的CSS
.svg {
max-width: 100%;
max-height: 100%;
}
到
.svg {
max-width: 100%;
max-height: 100%;
vertical-align: top;
}
答案 2 :(得分:1)
您只需在vertical-align: middle;
上设置svg
即可。这将保留给定布局上的预期行为,display: block
可能不会。
.widget-outer {
display: flex;
height: 210px;
width: 400px;
border: 1px solid black;
}
.widget {
overflow-y: auto;
flex: 1;
}
.svg-container {
text-align: center;
display: inline-block;
width: 100%;
height: 100%;
}
.svg {
max-width: 100%;
max-height: 100%;
vertical-align: middle;
}
&#13;
<div class="widget-outer">
<div class="widget">
<div class="svg-container">
<svg class="svg" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="50" style="fill: gray;"></circle>
</svg>
</div>
</div>
</div>
&#13;
答案 3 :(得分:0)
这是一种奇怪的行为。即使我正在寻找它背后的技术原因。
暂时您可以删除滚动条 - 进行两项更改:
display: inline-block;
类.svg-container
float:left
添加到SVG
元素。或display
也有效。
.widget-outer {
display: flex;
height: 210px;
width: 400px;
border: 1px solid black;
}
.widget {
overflow-y: auto;
flex: 1;
}
.svg-container {
text-align: center;
width: 100%;
height: 100%;
}
.svg {
max-width: 100%;
max-height: 100%;
float: left;
}
&#13;
<div class="widget-outer">
<div class="widget">
<div class="svg-container">
<svg class="svg" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="50" style="fill: gray;"></circle>
</svg>
</div>
</div>
</div>
&#13;
答案 4 :(得分:0)
我找到的另一个解决方案是删除滚动
.widget {
overflow:hidden;
flex: 1;
}