css - 垂直居中的 SVG 标签

标签 css html svg center

我正在尝试找出一种使我的 SVG 标签垂直居中的方法。

基本上,这是我试图居中的简化 SVG 代码:

<svg height="272" style="background-color:transparent;margin-left: auto; margin-right: auto;" width="130" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g style="font-size: 0.7em;" transform="scale(1 1) rotate(0) translate(0 270)">
        <g id="1" style="font-size: 0.7em;">
            <image height="32" width="32" x="49" xlink:href="../../images/JOB.GIF" y="-270"/>
        </g>
    </g>
</svg> 

我可以毫不费力地将它放在页面的中间(水平方向),但我也希望它垂直居中。

我可以添加包装器,但我想知道执行此操作的通用方法,而不取决于 SVG 大小或窗口大小。

我尝试了多种方法,但没有任何效果。

谢谢,

最佳答案

我更新了这个答案,因为当前的浏览器对此有更好的解决方案。

聪明人怎么说,第一年学html和css,再学几年高级javascript,五年后终于学会垂直居中div。

要垂直/水平对齐 css 中的任何内容,您可以使用两种主要方式:

绝对

<div class="outside">
    <div class="inside">Whatever</div>
</div>

和CSS:

.outside{
    position:relative;
}
.inside{
    position:absolute;
    top:50%;
    bottom:50%;
    transform:translate(-50%, -50%);
}

唯一的问题是元素不会生成高度。

flexbox

Flexbox 现在有很好的支持所以为什么不使用它。 https://caniuse.com/#feat=flexbox

使用 flexbox 你的元素不需要是绝对的,所以它会生成高度。代码:

<div class="outside">
    <div>Whatever</div>
</div>

和CSS:

.outside{
    display: flex;
    align-items: center;
    justify-content: center;
}

旧答案:

你有高度和宽度,所以你可以使用 margin : auto auto;

或者放在div里

position:absolute ;
left:50% ;
margin-left: -(half of width of image)px;
top:50% ;
margin-top: -(half of height of image)px;

如果你用它做一些事情(javascript 动画或其他东西),第二个会更好

我没有检查过,但也许你也可以对 svg 使用第二个选项(没有外部 div)

关于css - 垂直居中的 SVG 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14315331/

相关文章:

php - 是否可以将php文件传递给html5音频src属性?

javascript - 如何对隐藏在不可见元素后面的元素使用鼠标悬停?

javascript - 获取附加元素以在悬停链接时进行检测

html - 这样导航?

javascript - 多选分层下拉

jQuery DataTables 插件固定 header 被覆盖

javascript - 将备用页面内容加载到 div onload 中

css - 如何将 MatTable 中的特定单元格扩展到行高的 100%?

javascript - Meteor:异步函数回调中出现异常:onAfterAction

javascript - SVG 路径 HitTest